The open protocol for resumable file uploads over HTTP, started by Transloadit in 2013 and stable at 1.0.0 since 2016 — a PATCH-based append model with Upload-Offset and Upload-Length headers, a creation extension, checksums, concatenation and expiration. Implemented in clients and servers for every major language and used in production by Cloudflare, Vimeo, Supabase and others, it is the community standard the IETF’s Resumable Uploads for HTTP draft grew out of.
tus
tus is the protocol that proved resumable uploads could be a shared standard instead of a per-vendor feature. A client creates an upload, learns its URL, and sends bytes with PATCH requests carrying Upload-Offset; if anything fails, a HEAD tells it where the server got to and it continues from there. The core is a page long. Everything else is an extension a server advertises in Tus-Extension.
- Core: offset, patch, head -
Upload-OffsetandUpload-Lengthon the wire,PATCHwithapplication/offset+octet-streamto append,HEADto resume. - Creation and Creation-With-Upload -
POSTto create the upload resource, optionally with the first bytes in the same request. - Checksum, Concatenation, Expiration, Termination - Verify each chunk, assemble parallel partial uploads into one, let abandoned uploads expire, delete on request.
- Implementations everywhere - tusd in Go is the reference server; official clients exist for JavaScript, Python, Java, Swift, Android, .NET and more.
tus is in this catalog as a case study in how a community protocol becomes an IETF one. It solved a real problem, shipped implementations before it shipped prose, was adopted by companies large enough to matter, and then its authors took the design to the HTTP Working Group, where it became Resumable Uploads for HTTP. That is the healthy path and it is rarer than it should be. When an agent protocol like the Model Context Protocol says it will add resumability “later, behind a negotiated capability,” this is the capability it will be negotiating.