v0.8 Now Available

Resumable Uploads for Modern Apps

A modular, TypeScript-first upload engine. Handle large files with ease, survive network failures, and deliver a premium experience.

Get Started
$ npm install @torrin-kit/client
upload-example.ts
import { createTorrinClient } from "@torrin-kit/client";

// Initialize client
const torrin = createTorrinClient({
  endpoint: "/torrin/uploads",
  retryAttempts: 5,
});

// Create upload
const upload = torrin.createUpload({ file });

// Subscribe to progress
upload.on("progress", (p) => {
  console.log(`${p.percentage}%`);
});

await upload.start();

Everything an Uploader Needs

Built for developers who need control, reliability, and performance.

Resumable Uploads

Automatically resume interrupted uploads from where they left off. No more lost progress.

Chunked Transfer

Split large files into manageable chunks. Optimize for slow connections and server limits.

Concurrent Uploads

Parallelize chunk uploads to maximize bandwidth utilization and speed up transfers.

Type-Safe

Written in TypeScript with full type definitions. Enjoy autocomplete and catch errors early.

Storage Agnostic

Save files to local disk, S3, or write your own driver. Flexible backend support.

Framework Ready

First-class support for Express and NestJS. Easy integration with your existing stack.