UploadThing

Hosted file-upload service for web apps, providing typed upload endpoints, storage and CDN delivery through an SDK.

Ask your AI about this, with this page as the source:ChatGPT ↗Claude ↗Perplexity ↗

UploadThing handles file uploads in a TypeScript web app: picking files in the browser, checking who may upload what, storing the files and serving them back. It replaces setting up a bucket, presigned URLs and CORS rules yourself.

On your server you define a File Router: named routes that declare allowed file types, maximum size and count, a middleware function where your auth check runs, and an onUploadComplete callback. The client asks your /api/uploadthing endpoint for presigned URLs and uploads straight to UploadThing, whose servers then call that endpoint back with the result. First-party adapters cover Next.js, Astro, SvelteKit, Nuxt, SolidStart, Express, Fastify, H3 and any Fetch-API server, with client libraries for React, Vue, Svelte, Solid, plain JavaScript and Expo.

You get upload button and dropzone components typed against your router, a server SDK (UTApi) to upload from the server or from a remote URL and to list or delete files, and delivery from a subdomain of your app (<APP_ID>.ufs.sh). Paid plans add a choice of storage region in the US, Canada, EU and Asia-Pacific, and private files served only through short-lived signed URLs. It is a hosted service only.

The official SDK is JavaScript; other backends rely on a community Python SDK or reimplement the protocol against the REST API. Callbacks need your app reachable from the internet, so a production build on localhost or a password-protected preview needs extra setup.

Where it fits

How UploadThing itself is built

4 tools, from its own code, website and Product Hunt page.

Who uses it

No maker's live product on record yet, and 8 open-source projects that declare it in their code.

We haven't found a maker's live product that uses UploadThing yet — only the open-source projects below, which declare it in their code.

Open source: a project that declares UploadThing as a dependency in its public code — verifiable, but not necessarily a live product.

Reliability and open issues

Incidents on its status page0 in the last 90 days · 2 in the last year
  • major Elevated 404s when accessing files Jan 2026
  • major Upload failures to us-west-2 Nov 2025
  • major File Retrieval Failing Jun 2025
From its own status page, 2026-10-02. Vendors decide what they post; one page can cover several products.

Who switches

Public pull requests on GitHub since Oct 2024 whose title says "X to Y" — real code changes moving a project from one tool to another, by developers in general. Open a row to see the pull requests.

UploadThing → Vercel Blob3 PRs

Alternatives to UploadThing

All alternatives by situation →

Questions makers ask about UploadThing

Which frameworks does it support?

There are first-party adapters for Next.js (App and Pages Router), Astro, SvelteKit, Nuxt and SolidStart, backend adapters for Express, Fastify, H3 and any Fetch-API server, and frontend libraries for React, Vue, Solid, Svelte and plain JavaScript. source ↗

Can I use it from a Python, Go or PHP backend?

Only the JavaScript SDK is official. The docs give reference code for generating file keys in other languages, point to a community Python SDK, and offer a REST endpoint to prepare uploads at the cost of extra latency. source ↗

Can I choose where my files are stored?

On paid plans you pick a region in the dashboard (US, Canada, EU, Mumbai, Seoul, Sydney); the default is AWS us-west-2. Changing it only affects new uploads, not files already stored. source ↗

Are uploaded files public?

By default anyone with a file's hard-to-guess URL can open it. Paid plans can set the access control to private, after which files are served only through short-lived signed URLs. source ↗

Why does my upload callback run locally but not in production or previews?

UploadThing's servers must reach your app to trigger onUploadComplete. A production build on localhost needs a tunnel and UPLOADTHING_CALLBACK_URL, and Vercel preview deployments behind authentication need the protection-bypass header added in UploadThing's settings. source ↗

Does it work in React Native?

Yes, through the @uploadthing/expo package, which wraps Expo's image and document pickers in typed upload hooks that talk to your server. source ↗

What file size limits apply?

You set maxFileSize and maxFileCount per file type on each route. If you don't, the default size depends on the file type, 4MB for most. source ↗

Is UploadThing free?

Yes — there is a free tier a small product can run on; paid use starts at $10/mo. source ↗

Is UploadThing open source or self-hostable?

Not open source, and hosted only.

Can AI coding agents work with UploadThing?

No llms.txt, official MCP server or CLI found yet.

Who uses UploadThing?

No maker's live product we track yet; 8 open-source projects declare it in their code. source ↗