An UploadThing Alternative

UploadThing Alternative: Plain REST and Prepaid Credits vs Typed SDK

UploadThing ships a typed SDK; files.link is plain REST. Pick the one that fits your stack and your billing model.

UploadThing made a clear bet: give Next.js and React developers a typed SDK (createUploadthing, useUploadThing, the <UploadButton> component) plus a server route handler, so file uploads feel like the rest of a modern TypeScript app. If you live entirely in React, that DX is hard to beat. files.link makes the opposite bet — no SDK to install, no framework coupling, just three HTTP calls any language can make.

Where UploadThing gives you onUploadComplete callbacks and middleware-style file validation baked into a typed router, files.link gives you POST /v1/files/{folderId} (returns {success, urls:[{url,id,...}]}), a PUT to the returned presigned URL, and POST /v1/files/confirm-upload with {ids:[...]}. The auth is a raw API key in the Authorization header — no Bearer prefix, no SDK token dance.

That portability is the whole point: the same upload works from a Go worker, a Python Celery task, a Rust CLI, or a cron job that UploadThing's React-centric design never targeted. The billing models diverge just as sharply. UploadThing prices around uploads and stored bytes; files.link uses prepaid credits that debit daily against storage and delivery, with automatic top-ups so a traffic spike doesn't fail uploads.

If your costs are spiky and you'd rather pre-fund a balance than reconcile per-upload line items, the credit model is calmer. A practical migration from UploadThing's client SDK: drop the <UploadButton>, request a presigned URL from your own backend (which calls POST /v1/files/{folderId}), have the browser PUT the file directly to that URL, then call confirm-upload.

You lose UploadThing's automatic client progress component and typed onUploadComplete, so you reimplement progress with the native XHR/fetch upload events and persist metadata in your own confirm handler. Be honest about the trade: UploadThing's file-type and size validation hooks, typed end-to-end inference, and polished React components are real conveniences files.link does not ship.

If your only runtime is React/Next.js and you value that typed cohesion, UploadThing is the better tool. files.link wins when uploads come from many runtimes, when you want zero SDK lock-in, or when prepaid usage billing fits your cashflow better than per-upload metering. Plenty of teams run both — UploadThing for the browser-tight flow, files.link for backend-originated and cron-driven uploads.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

UploadThingAWS S3 (direct)files.link
Plain REST API (any language/stack)
No vendor SDK required
Prepaid credit billing (no per-upload fee)
Typed React/Next.js SDK + components
Built-in upload validation hooks
Global CDN delivery included

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Try the REST-Only Path

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Try the REST-Only Path

Frequently Asked Questions

Does files.link have a typed React SDK like UploadThing?
No. files.link is intentionally SDK-free — three REST calls you make from any HTTP client. You give up UploadThing's typed router, <UploadButton>, and onUploadComplete inference in exchange for working identically from Go, Python, Rust, or a cron job.
How do I replicate UploadThing's presigned browser upload?
Have your backend call POST /v1/files/{folderId} to mint a presigned URL, return it to the browser, PUT the file straight to that URL, then call POST /v1/files/confirm-upload with {ids:[...]}. Reimplement progress with native fetch/XHR events and store metadata in your confirm handler.
Per-upload pricing vs prepaid credits — which is cheaper?
It depends on your traffic shape. UploadThing meters per upload plus storage; files.link debits prepaid credits daily for storage and delivery. Spiky workloads often prefer pre-funding a balance over reconciling per-upload charges. Run your own numbers against both.
Can I use UploadThing and files.link together?
Yes. A common split is UploadThing for the React browser flow where its components shine, and files.link for backend-originated or cron-driven uploads where a typed React SDK doesn't apply.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal