MediaLit vs UploadThing: an open-source alternative

Pricing checked October 2026.

UploadThing made file uploads pleasant for a lot of TypeScript developers. You define a file router, drop in a button, and you're done. If you're on Next.js and happy with it, you probably don't need to switch.

People usually start looking around for one of three reasons: they want private files without paying, they want a way out if the hosted service stops working for them, or they're building AI agents that need somewhere to store files. MediaLit covers those. It's file storage for AI agents, apps and teams, it's open source, and it's priced about the same as UploadThing.

MediaLit vs UploadThing at a glance

MediaLit

UploadThing

Pricing

Basic: free. Pro: $10/mo or $100/yr

Free: $0. 100GB App: $10/mo. Usage Based: from $25/mo

Free tier

1 GB storage, unlimited uploads and downloads

2 GB storage (shared between all apps), unlimited uploads and downloads

Max file size

50 MB (Basic), 2 GB (Pro)

You set it per file route. Defaults are 4 MB for images, 16 MB for video and 8 MB for blobs. The pricing page doesn't list plan caps

Storage

1 GB (Basic), 100 GB (Pro)

2 GB (Free), 100 GB ($10), 250 GB included then $0.08/GB (Usage Based)

Open source / self-host

Yes. The whole service is open source (AGPL server, MIT clients) and self-hostable on any S3-compatible storage

The SDK repo is MIT-licensed, but the storage service is hosted only

Private files

Yes, on every plan. Private files use expiring signed URLs

Paid plans only (100GB App and Usage Based)

AI-agent access (MCP/CLI)

Hosted MCP server with OAuth sign-in, plus the medialit CLI

An @uploadthing/mcp-server canary package exists, and the PR adding it is still an open draft. No official CLI found

Versioning

No

No. A request to overwrite or dedupe existing files (issue #772) has been open since April 2024

Transforms

Thumbnails for images and videos on upload, plus optional WebP conversion

None built in. The docs suggest resizing before upload

Where UploadThing is stronger

  • A bigger free tier. You get 2 GB free versus MediaLit's 1 GB.

  • Typed file routers. UploadThing's file-router setup is very tidy if your stack is TypeScript end to end, and it has adapters for many JS frameworks.

  • Usage-based scaling. If you go well past 100 GB, the Usage Based plan's $0.08/GB beyond 250 GB is a clear path. MediaLit Pro tops out at 100 GB per account on the hosted service, though you can self-host for more.

Where MediaLit is stronger

  • Private files on the free plan. On MediaLit, every upload is private unless you make it public. Private files get signed URLs that expire. On UploadThing, private files come with the paid plans.

  • Agents are a first-class client. Claude, ChatGPT, Cursor and other MCP clients connect to https://api.medialit.cloud/mcp and sign in with OAuth, so nobody pastes an API key. MediaLit is also an official connector in the Claude directory, so Claude users can add it in a couple of clicks. Coding agents run the CLI (medialit upload chart.png --public --json). What an agent saves shows up in your dashboard and is available to your app.

  • Not tied to a framework. MediaLit has a REST API, a Node.js SDK, a React component (@medialit/react) and a framework-free uploader (@medialit/uploader). The browser uploads directly using a short-lived signature from your server, and uploads are resumable (tus).

  • No orphaned files. Uploads stay temporary until your server seals them, and unsealed files are deleted after 24 hours. Files from abandoned forms clean themselves up.

  • A real exit. The code behind medialit.cloud is the same code you can self-host. Point MEDIALIT_ENDPOINT at your own server and your code keeps working.

  • Yearly billing. Pro is $100/year, which works out to two months free.

When to pick UploadThing

  • You're all-in on Next.js or a similar TypeScript stack and love the file-router setup.

  • 2 GB free covers you and you don't need private files yet.

  • You expect to grow past 100 GB soon and want usage-based pricing on a hosted service.

When to pick MediaLit

  • You need private files from day one without paying.

  • You want the option to self-host, or you just like knowing you could.

  • You're building AI agents or internal tools that need to save files over MCP or the CLI.

  • Your backend isn't JavaScript-only, or you want a plain REST API.

Migrating from UploadThing

  1. Sign up, create an app, and set MEDIALIT_API_KEY on your server.

  2. Add a signature route. In Next.js, createSignatureHandler from the medialit package handles it in a few lines, and you plug in your own auth check.

  3. Replace <UploadButton> with <MediaLitUploader signatureEndpoint="/api/medialit/signature" />.

  4. Seal uploads on the server when the user saves (new MediaLit().seal(mediaId)). This takes the place of your onUploadComplete logic.

  5. Move existing files with the CLI or SDK, then update the URLs or IDs in your database. Store the mediaId, because public URLs change when a file is sealed and private URLs are generated fresh each time.

FAQ

Is MediaLit cheaper than UploadThing?
At 100 GB they cost the same: $10/month. MediaLit also has a $100/year option. The bigger differences are private files on the free plan, self-hosting, and agent access.

Can I overwrite or replace a file in MediaLit?
No, and MediaLit doesn't keep versions either. Upload the new file, save its mediaId, and delete the old one.

Does MediaLit work outside Next.js?
Yes. It has examples for Express and other frameworks, a framework-free uploader, and a REST API you can call from any language.

How do AI agents use MediaLit?
Assistants like Claude or ChatGPT connect through the hosted MCP server. Coding agents that run commands use the CLI, which also handles large files in resumable chunks. MCP uploads are limited to about 1.5 MB per file.

Try MediaLit

If UploadThing works for you but you want private files on the free plan, an MCP server and a self-hosting option, MediaLit is worth ten minutes. Start free, then go Pro for 100 GB and 2 GB uploads at $10/month or $100/year.

Create your free MediaLit account →