Uploadcare

uploadcare.com

ALMOST

A weekend of work, and real gaps remain.

Handles the whole file upload path: a widget in the browser, resumable transfer, storage, processing and delivery from a network.

Promptfree, for everyone, and the only version there is
Build me the file upload path I actually need instead of Uploadcare.

Start from the rule that decides the architecture: **files must never pass through your application server.** Sign a direct upload to object storage and let the browser talk to it. Everything else follows.

STACK
- Node 20+ with Fastify — only for signing and bookkeeping
- SQLite through better-sqlite3, WAL mode
- Object storage with presigned multipart uploads
- Uppy in the browser for the widget half
- sharp and ffmpeg on a worker for derivatives
- Caddy in front

THE DATA MODEL
- uploads: id, owner_id, key, filename, declared_type, detected_type, bytes, sha256, status, created_at, completed_at
- derivatives: id, upload_id, kind, key, bytes, created_at
- scans: id, upload_id, verdict, detail, at

THE UPLOAD ITSELF
- Your server issues a presigned multipart URL with a size cap, a type constraint and a short expiry, and records a pending row
- The browser uploads directly, in parts, resuming after a dropped connection. A 2GB file over a phone connection is the case that decides whether this works
- Storage notifies completion, or the client confirms and the server verifies the object exists and its size — **never trust the client's word that an upload finished**

VALIDATION, WHICH IS SECURITY AND NOT A FORMALITY
- **Detect the type from the file's own bytes, never from the extension or the declared content type.** A .jpg that is actually HTML, served from your domain, is stored cross-site scripting
- Serve user files from a separate domain, always with `Content-Disposition: attachment` unless the type is one you deliberately render inline, and with a strict content security policy
- Hard caps on size, dimensions and megapixels; a decompression bomb is a real attack and sharp will happily try
- Scan with ClamAV on a worker before the file is reachable. Quarantine until it passes

DERIVATIVES
- Thumbnails, a poster frame, a PDF first page. Generated on a queue with a concurrency cap, never during the request
- Store the hash and deduplicate: the same file uploaded twice is one object with two rows

DELIVERY
- Signed expiring URLs for anything private, and a cheap network in front for anything public
- Range requests supported, so video seeking works

OPERATIONS
- A sweeper deleting pending uploads that never completed, or storage fills with abandoned halves
- Per-owner quotas, and bytes stored and served recorded daily
- Deletion that actually deletes: the object, its derivatives and the rows

WHAT MATTERS MOST
Direct-to-storage uploads and type detection from the bytes. The first is why it scales; the second is why it does not become an attack on your own users.

What you lose

  • A widget that handles every browser, retry and connection quirk
  • Resumable uploads for large files without your server in the path
  • Storage and delivery with nothing to run
  • Virus scanning and content moderation on the way in

If you would rather not build

  • tus for resumable uploads, an open protocol with servers in every language
  • A presigned S3 upload, which is fifty lines and no dependency

The escape hatch

open source · no votes, no paid placement

Uppy

$0

Browser upload widget with resumable transfer and cloud sources.

transloadit/uppyfree · open source

tusd

$0

Reference server for the resumable upload protocol.

tus/tusdfree · open source

Why this verdict

our own opinion · changed only by a person

56/100

Verdict kinda at 56: Uppy plus presigned storage covers the widget and the transfer, and the delivery network is worth renting. The content-type rule is the one that bites people who build this quickly.

History

tracked since 14 Aug 2026 · nothing is ever overwritten

Interest · last 30 days

Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.

Questions about Uploadcare

answered from the record above

Is Uploadcare free?

No — the plan we track is $79 a month. Starter at $79/month with uploads, storage and delivery included.

Can you replace Uploadcare by building your own?

ALMOST. A weekend of work, and real gaps remain. Replacement score 56 out of 100, build time a weekend. Read what you lose before you decide.

How much does Uploadcare cost?

$79 a month on Starter — $948 a year. Recorded 14 Aug 2026.

What do you lose by replacing Uploadcare?

A widget that handles every browser, retry and connection quirk; Resumable uploads for large files without your server in the path; Storage and delivery with nothing to run; Virus scanning and content moderation on the way in. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Uploadcare?

Yes: Uppy, tusd. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 29 in Design & website builders

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc