A pure Go client for the tus resumable upload protocol
Switch branches/tags
Nothing to show
Clone or download
skrater Merge pull request #21 from pkochubey/master
Back compatibility with tus js version
Latest commit 03d9c4b Oct 20, 2018


go-tus Build Status Go Report Card GoDoc

A pure Go client for the tus resumable upload protocol


package main

import (

func main() {
    f, err := os.Open("my-file.txt")

    if err != nil {

    defer f.Close()

    // create the tus client.
    client, _ := tus.NewClient("https://tus.example.org/files", nil)

    // create an upload from a file.
    upload, _ := tus.NewUploadFromFile(f)

    // create the uploader.
    uploader, _ := client.CreateUpload(upload)

    // start the uploading process.


This is not a full protocol client implementation.

Checksum, Termination and Concatenation extensions are not implemented yet.

This client allows to resume an upload if a Store is used.

Built in Store

Store is used to map an upload's fingerprint with the corresponding upload URL.

Name Backend Dependencies
MemoryStore In-Memory None
LeveldbStore LevelDB goleveldb

Future Work

  • SQLite store
  • Redis store
  • Memcached store
  • Checksum extension
  • Termination extension
  • Concatenation extension