# Uppy / tusd / FilePond

Uploads you run. Uppy is MIT; tusd is MIT resumable tus; FilePond is MIT — Uploadcare, Filestack, or Transloadit without the file API seat.

**Replaces:** Uploadcare / Filestack / Transloadit

**Tier:** Easy

## Problem

Uploadcare and Filestack sell a hosted upload, transform, and CDN API. Transloadit is the hosted encoding and assembly API (and the company that publishes Uppy). You wanted a picker and a resumable POST on a box you run. Uppy is MIT (transloadit/uppy; last push 25 Oct 2026) — a browser uploader that talks to your backend or tus. tusd is MIT (tus/tusd; last push 24 Oct 2026) — the reference tus server in Go. FilePond is MIT (pqina/filepond; last push 2 Oct 2026) — a file-input widget if Uppy is not the shape. copyparty already covers a share link — /replace/dropbox. imgproxy resizes after the file lands — /replace/cloudinary. This is not Uploadcare's every CDN SKU, Filestack's every ingestion SKU, or Transloadit's every encoding robot. You still put object storage behind the POST.

## Stack

- [Uppy](https://uppy.io) — MIT browser uploader — the published Uploadcare / Filestack / Transloadit path
- [tusd](https://tus.github.io/tusd) — MIT resumable tus server
- [FilePond](https://pqina.nl/filepond) — MIT file-input widget if Uppy is not the shape

## Estimated SaaS cost saved

| You stop paying | Typical / year | Self-host instead |
|---|---:|---|
| Uploadcare / Filestack / Transloadit (small team) | $2,400 | Uppy + tusd or FilePond + object storage |

**About $2,400 / year** on a small team, before you count lock-in.

## Deploy on Railway

Placeholder: tusd (or your app plus Uppy) with a volume or S3-compatible store. Bind HTTP to 0.0.0.0:$PORT. No one-click template in this repo yet — Start on Railway. A share link stays on /stacks/files-you-own. A resize URL stays on /stacks/imgproxy-media.

[Start on Railway](https://c17.io/go/railway/uppy-uploads?from=%2Fstacks%2Fuppy-uploads.md)

[copyparty if this is a share link, not an upload API](https://c17.io/stacks/files-you-own)

## AGENT_PROMPT

```
Replace Uploadcare, Filestack, or Transloadit with Uppy (preferred) plus tusd.

- Official docs. Persist uploads on a volume or S3-compatible store. Confirm one resumable POST. Do not claim Uploadcare CDN, Filestack ingestion packs, or Transloadit encoding robots.
- FilePond if you want that MIT input widget — /compare/uppy-vs-filepond. tusd if the job is the protocol — /compare/uppy-vs-tusd.
- Write AGENT_PROMPT.md.
```

## FAQ

### Uppy or tusd?

Uppy if you want the published Uploadcare / Filestack / Transloadit picker. tusd if the job is the tus protocol — /compare/uppy-vs-tusd.

### Is this Cloudinary?

A resize URL stays on /replace/cloudinary (imgproxy). This page is the upload.

### Is this Dropbox?

A share link stays on /replace/dropbox. This page is an upload API you run.

### Are these free?

Uppy, tusd, and FilePond are MIT. You pay hosting and object storage. Template users never pay c17.

Source: https://c17.io/stacks/uppy-uploads
