explaingit

tus/tusd

3,781GoAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

The official reference server for resumable file uploads, if a large upload is interrupted, the client can reconnect and continue from exactly where it left off instead of starting over.

Mindmap

mindmap
  root((tusd))
    What it does
      Resumable uploads
      Tracks bytes received
      Resume after dropout
    Storage backends
      Local disk
      Amazon S3
      Google Cloud Storage
    Deployment
      Standalone binary
      Go library embed
      tus protocol standard
    Audience
      Backend developers
      Media platforms
      File-heavy apps
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add resumable large-file upload support to your web app so users never lose progress if their connection drops.

USE CASE 2

Run tusd as a standalone upload server and point your frontend tus client library at it to handle uploads.

USE CASE 3

Store uploaded files directly to S3 or Google Cloud Storage so you don't need local disk on the server.

USE CASE 4

Embed the tusd package as a Go library to add resumable upload handling directly inside your own application.

Tech stack

GoAWS S3Google Cloud Storage

Getting it running

Difficulty · moderate Time to first run · 30min

Requires access to S3, GCS, or local disk for storage, cloud storage credentials must be configured before the server starts.

Use, modify, and distribute freely for any purpose, including commercially, as long as you keep the MIT license notice.

In plain English

tusd is the official reference server for tus, an open protocol that makes file uploads resumable. When someone uploads a large file over a normal HTTP connection and their network drops halfway through, the upload fails and they must start over from the beginning. The tus protocol solves this by tracking how many bytes have already arrived on the server. If the connection breaks, the client can reconnect and pick up exactly where it left off, rather than resending the data from the start. tusd is the Go implementation of the server side of this protocol. Running it gives you an upload endpoint that any tus-compatible client library can talk to. The server accepts files of any size. Once a file arrives, it can be stored in a few places: on the local disk of the server, in Google Cloud Storage, or in Amazon S3 and any other storage system that speaks the S3 API. The README notes that adding support for other cloud providers would be straightforward given how the server is structured. The project is the reference implementation, meaning it is the authoritative example of how the tus protocol is supposed to work. Application developers who want to add resumable upload support to their own software typically either embed the tusd package as a library or run the tusd binary as a standalone server and point their frontend at it. The documentation for installation, configuration, and usage is hosted on the project website rather than in the repository. The current version is tusd v2, which introduced breaking changes from the previous v1 series. The software is released under the MIT license.

Copy-paste prompts

Prompt 1
Show me how to run tusd as a standalone server on Linux and configure it to store uploaded files in an S3 bucket.
Prompt 2
How do I integrate tusd into my existing Go web application as a library rather than running it as a separate binary?
Prompt 3
Walk me through connecting a tus JavaScript client in the browser to a tusd server for resumable video uploads.
Prompt 4
How do I configure tusd to store uploads in Google Cloud Storage and set a maximum allowed file size?
Prompt 5
Help me set up CORS headers in tusd so my frontend running on a different domain can upload files to it.
Open on GitHub → Explain another repo

← tus on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.