# pingdotgg/uploadthing

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pingdotgg-uploadthing).**

5,153 stars · 425 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/pingdotgg/uploadthing
- Homepage: https://uploadthing.com
- awesome-repositories: https://awesome-repositories.com/repository/pingdotgg-uploadthing.md

## Description

Uploadthing is a tool for integrating file uploads into web applications, providing a system to accept and store files through serverless file handling. It manages the end-to-end upload process, from creating backend endpoints to delivering content via a content delivery network.

The project utilizes a presigned URL workflow to allow clients to upload files directly to cloud storage, reducing server ingress. It features a route-based validation system to enforce constraints on file types and sizes, alongside middleware for request authorization and secure post-upload callback webhooks.

The platform covers a broad range of capabilities, including cloud storage management for renaming or deleting files and the implementation of resumable uploads for large transfers. It provides a suite of UI components, such as upload buttons and dropzones, which can be styled or replaced with custom interfaces using composable hooks.

The system is designed for deployment across edge runtimes and serverless environments, with configuration handled via environment variables.

## Tags

### Security & Cryptography

- [Presigned URL Generation](https://awesome-repositories.com/f/security-cryptography/presigned-url-generation.md) — Implements a presigned URL workflow to secure direct-to-storage file transfers via temporary signed links. ([source](https://docs.uploadthing.com/v7))
- [Authenticated Uploads](https://awesome-repositories.com/f/security-cryptography/file-upload-security/authenticated-uploads.md) — Secures the upload process through identity verification and metadata attachment to protect data integrity. ([source](https://docs.uploadthing.com/backend-adapters/fetch))
- [Signed URL Uploads](https://awesome-repositories.com/f/security-cryptography/file-upload-security/signed-url-uploads.md) — Generates time-limited signed URLs to allow clients to upload files directly to storage. ([source](https://docs.uploadthing.com/api-reference/ut-api))
- [Upload Permissions](https://awesome-repositories.com/f/security-cryptography/file-upload-security/upload-permissions.md) — Checks user permissions and attaches custom metadata to file requests before permitting the upload. ([source](https://docs.uploadthing.com/file-routes))
- [Upload Request Validation](https://awesome-repositories.com/f/security-cryptography/file-upload-security/upload-request-validation.md) — Enforces file type and size constraints through a server-side router to validate upload requests.
- [Input Validation Schemas](https://awesome-repositories.com/f/security-cryptography/input-validation-schemas.md) — Verifies user-provided request data against predefined schemas to ensure integrity before initiating file transfers. ([source](https://docs.uploadthing.com/file-routes))
- [Presigned URL Access Controls](https://awesome-repositories.com/f/security-cryptography/presigned-url-access-controls.md) — Controls file access by requiring presigned URLs for private objects, blocking anonymous reads. ([source](https://docs.uploadthing.com/concepts/regions-acl))

### User Interface & Experience

- [Cloud Storage File Uploads](https://awesome-repositories.com/f/user-interface-experience/file-uploaders/drag-and-drop-file-upload/remote-session-file-uploads/device-to-host-file-uploads/cloud-storage-file-uploads.md) — Enables clients to upload files directly to cloud storage using presigned URLs, bypassing server ingress. ([source](https://docs.uploadthing.com/uploading-files))
- [Cloud Storage File Operations](https://awesome-repositories.com/f/user-interface-experience/file-uploaders/drag-and-drop-file-upload/remote-session-file-uploads/device-to-host-file-uploads/cloud-storage-file-uploads/cloud-storage-file-operations.md) — Enables direct transmission of files to cloud storage providers using presigned URLs and type-safe callbacks. ([source](https://docs.uploadthing.com/api-reference/client))
- [Standard Upload Components](https://awesome-repositories.com/f/user-interface-experience/custom-upload-components/standard-upload-components.md) — Renders pre-built components for handling file selection and upload triggers. ([source](https://docs.uploadthing.com/getting-started/solid))
- [Upload Interfaces](https://awesome-repositories.com/f/user-interface-experience/custom-upload-components/upload-interface-customization/upload-interfaces.md) — Provides components that let users select files and track upload progress through visual indicators. ([source](https://docs.uploadthing.com/getting-started/astro))
- [File Upload Components](https://awesome-repositories.com/f/user-interface-experience/file-upload-components.md) — Ships a suite of pre-made UI components to handle file selection and the upload process. ([source](https://docs.uploadthing.com/getting-started/appdir))
- [Pre-built Upload Interfaces](https://awesome-repositories.com/f/user-interface-experience/file-upload-components/pre-built-upload-interfaces.md) — Provides pre-built upload buttons and dropzones that can be embedded directly into web pages. ([source](https://docs.uploadthing.com/getting-started/svelte))
- [Media Uploaders](https://awesome-repositories.com/f/user-interface-experience/media-uploaders.md) — Ships integrated UI components designed to handle the selection and upload process within web applications. ([source](https://docs.uploadthing.com/getting-started/tanstack-start))
- [Custom Upload Components](https://awesome-repositories.com/f/user-interface-experience/custom-upload-components.md) — Provides composable hooks to bind upload logic to custom-built components instead of using pre-built UI. ([source](https://docs.uploadthing.com/getting-started/nuxt))
- [Upload Flow Builders](https://awesome-repositories.com/f/user-interface-experience/custom-upload-components/upload-flow-builders.md) — Enables the creation of tailored upload components using type-safe helper functions for custom user interfaces. ([source](https://docs.uploadthing.com/getting-started/svelte))
- [Upload Interface Customization](https://awesome-repositories.com/f/user-interface-experience/custom-upload-components/upload-interface-customization.md) — Allows customization of the visual appearance and internal content of prebuilt upload buttons and dropzones. ([source](https://docs.uploadthing.com/concepts/theming))
- [File Pickers](https://awesome-repositories.com/f/user-interface-experience/file-pickers.md) — Provides typed hooks to trigger native device file selection and manage the upload lifecycle on mobile. ([source](https://docs.uploadthing.com/getting-started/expo))
- [Drag-and-Drop File Upload](https://awesome-repositories.com/f/user-interface-experience/file-uploaders/drag-and-drop-file-upload.md) — Includes a drag-and-drop area allowing users to upload files by dragging them directly into the browser. ([source](https://docs.uploadthing.com/api-reference/react))
- [Upload Error Displays](https://awesome-repositories.com/f/user-interface-experience/upload-error-displays.md) — Captures upload failures to provide specific error feedback and logging to the end user. ([source](https://docs.uploadthing.com/file-routes))

### Web Development

- [Direct-to-Cloud Uploads](https://awesome-repositories.com/f/web-development/direct-to-cloud-uploads.md) — Enables clients to upload files directly to cloud storage using secure, temporary presigned URLs.
- [Request Middleware](https://awesome-repositories.com/f/web-development/request-middleware.md) — Provides middleware to intercept and authorize upload requests before granting access to storage.
- [Request Validation Middleware](https://awesome-repositories.com/f/web-development/request-validation-middleware.md) — Uses middleware to verify incoming request payloads and authenticate users before processing uploads. ([source](https://docs.uploadthing.com/backend-adapters/fastify))
- [Upload Server Initializers](https://awesome-repositories.com/f/web-development/upload-server-initializers.md) — Provides the necessary configuration to initialize the server instance and handle incoming files across different web environments. ([source](https://docs.uploadthing.com/api-reference/server))
- [Programmatic File Upload Control](https://awesome-repositories.com/f/web-development/file-upload-management/programmatic-file-upload-control.md) — Offers a hook to trigger uploads programmatically and track state from outside the component tree. ([source](https://docs.uploadthing.com/api-reference/react))
- [Environment Runtime Adapters](https://awesome-repositories.com/f/web-development/request-adapters/environment-runtime-adapters.md) — Implements adapters to map upload logic across different web environments and edge runtime standards.

### Part of an Awesome List

- [File Upload](https://awesome-repositories.com/f/awesome-lists/devtools/file-upload.md) — Integrates file selection UI components with backend bindings to manage the end-to-end upload process. ([source](https://docs.uploadthing.com/))
- [Upload Constraints](https://awesome-repositories.com/f/awesome-lists/devtools/file-upload/upload-constraints.md) — Defines strict logic for enforcing file type, size, and quantity limits during uploads. ([source](https://docs.uploadthing.com/backend-adapters/express))
- [File Upload Constraint Validation](https://awesome-repositories.com/f/awesome-lists/devtools/file-upload/upload-constraints/file-upload-constraint-validation.md) — Restricts permitted file types and maximum sizes at specific endpoints to ensure valid data ingestion. ([source](https://docs.uploadthing.com/getting-started/expo))
- [Upload Buttons](https://awesome-repositories.com/f/awesome-lists/devtools/ui-buttons/upload-buttons.md) — Provides a single button component that opens a file selection dialog and triggers the upload process. ([source](https://docs.uploadthing.com/getting-started/pagedir))
- [Upload Buttons](https://awesome-repositories.com/f/awesome-lists/devtools/file-upload/upload-buttons.md) — Provides a dedicated button component that opens the native file picker and uploads files via a defined router. ([source](https://docs.uploadthing.com/api-reference/react))

### Content Management & Publishing

- [Custom Upload Endpoints](https://awesome-repositories.com/f/content-management-publishing/custom-upload-endpoints.md) — Provides named backend routes and processing rules to handle incoming file uploads. ([source](https://docs.uploadthing.com/file-routes))
- [Router Bindings](https://awesome-repositories.com/f/content-management-publishing/custom-upload-endpoints/router-bindings.md) — Binds the upload router to a network handler to make upload services accessible to external clients. ([source](https://docs.uploadthing.com/api-reference/server))

### Data & Databases

- [Upload Verification](https://awesome-repositories.com/f/data-databases/file-upload-management/upload-verification.md) — Triggers callback functions to process files and metadata immediately after an upload operation completes. ([source](https://docs.uploadthing.com/getting-started/remix))
- [Post-Upload Processing](https://awesome-repositories.com/f/data-databases/post-upload-processing.md) — Executes custom server-side logic and database updates immediately after a file upload completes. ([source](https://docs.uploadthing.com/file-routes))
- [Uploaded File Management](https://awesome-repositories.com/f/data-databases/uploaded-file-management.md) — Provides functionality to remove single or multiple files from the storage server using their unique keys. ([source](https://docs.uploadthing.com/api-reference/ut-api))

### DevOps & Infrastructure

- [Logic-Based Upload Routing](https://awesome-repositories.com/f/devops-infrastructure/file-uploaders/logic-based-upload-routing.md) — Implements route-based logic to govern how the system accepts and handles file uploads. ([source](https://docs.uploadthing.com/backend-adapters/fetch))
- [Public File Serving](https://awesome-repositories.com/f/devops-infrastructure/file-uploaders/s3-file-uploads/public-file-serving.md) — Delivers uploaded content via a content delivery network using consistent public URL patterns. ([source](https://docs.uploadthing.com/working-with-files))
- [Post-Upload Processing](https://awesome-repositories.com/f/devops-infrastructure/post-upload-processing.md) — Triggers server-side logic and database updates via webhooks after successful file transfers.
- [Serverless Deployment](https://awesome-repositories.com/f/devops-infrastructure/serverless-deployment.md) — Deploys upload logic and processing callbacks across edge runtimes and serverless environments.
- [File Uploaders](https://awesome-repositories.com/f/devops-infrastructure/file-uploaders.md) — Provides mechanisms to transmit files from a backend server environment to cloud storage. ([source](https://docs.uploadthing.com/api-reference/ut-api))
- [Edge Deployments](https://awesome-repositories.com/f/devops-infrastructure/worker-deployment-inspection/cloudflare-workers-deployments/edge-deployments.md) — Supports deploying upload logic to globally distributed edge runtimes following the WinterCG standard. ([source](https://docs.uploadthing.com/backend-adapters/fetch))

### Software Engineering & Architecture

- [Upload Lifecycle Callbacks](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/upload-lifecycle-callbacks.md) — Implements event hooks to manage the sequential flow of upload requests, including authentication and completion callbacks. ([source](https://docs.uploadthing.com/getting-started/tanstack-start))
- [Webhook Signature Verifications](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/upload-lifecycle-callbacks/webhook-signature-verifications.md) — Validates that incoming upload notifications are signed with a secret key to prevent unauthorized requests. ([source](https://docs.uploadthing.com/concepts/auth-security))

### Artificial Intelligence & ML

- [MIME Type Acceptance Criteria](https://awesome-repositories.com/f/artificial-intelligence-ml/dataset-management/evaluation-datasets/evaluation-dataset-standardizers/evaluation-target-definitions/acceptance-criteria-mapping/mime-type-acceptance-criteria.md) — Produces MIME-type arrays to configure file input elements and dropzone components automatically. ([source](https://docs.uploadthing.com/api-reference/client))

### Development Tools & Productivity

- [REST API Integrations](https://awesome-repositories.com/f/development-tools-productivity/rest-api-integrations.md) — Allows integration of file upload capabilities using RESTful HTTP endpoints for environments without native SDK support. ([source](https://docs.uploadthing.com/api-reference/openapi-spec))

### Networking & Communication

- [Access Controls](https://awesome-repositories.com/f/networking-communication/file-transfer-clients/access-controls.md) — Provides management of user-specific file access permissions to toggle between public and private visibility. ([source](https://docs.uploadthing.com/api-reference/ut-api))
- [Resumable Transfers](https://awesome-repositories.com/f/networking-communication/resumable-downloads/resumable-transfers.md) — Implements upload sessions that can be paused and resumed using presigned URLs to ensure data integrity. ([source](https://docs.uploadthing.com/v7))
- [Resumable File Transfers](https://awesome-repositories.com/f/networking-communication/resumable-file-transfers.md) — Supports large file transfers that can be paused and resumed to prevent data loss during network interruptions.
