File handling that just works.

Easily add advanced S3 features to your site, without lock-in.

What is upload.Works?

We bring missing features to S3, making development easier,
all while you maintain full control over your storage bucket.

You bring the storage bucket, we bring the APIs. A perfect match. 🤝



React Library

Demo Repository


Rest API

Presigned URLs



Platform Buckets

BYOB (R2 / AWS S3)

Unlimited Storage


Global CDN

Signed URLs

Try us out

Seeing is believing. Upload any image!


/* /api/uploadworks/core.ts */

profilePictures: f({

maxFileSize: 10000000, // 10mb

directory: "/"

mime: "image/*"


.middleware(async ({ req, metadata }) => {

return { metadata: {}, fileKey: metadata.key};


.onUploadComplete(async ({ file }) => {

// run logic to save file key to database


Tap to choose an image

Max file size: 10MB


The best way to store files is in your own storage bucket. You benefit from upload.Works features, while having full uninterrupted access to your files.
Amazon S3 and Cloudflare R2 supported.

Signed Safety

Generate client-safe signed endpoints to upload files, and include middleware for auth, file size, type, and more. We'll even let you know when files are successfully uploaded by the client.


Our Hobby plan is for personal, non-commercial use and will always be free. Pro is designed for commercial use and contains all of our features.


Best for hobby or small kickstart projects.

Limited to 1 storage bucket.


free forever


Perfect for scaling or commercial projects.


one-time purchase

Unlimited File Uploading
Bring-Your-Own-Bucket (S3 & R2)
React Library
Rest API
No Vendor Lock-in
Signed Safety
Unlimited Buckets
Priority Support
Commercial Usage

Questions? Answers.

Files are hard, we made them easy.

Add file uploading to your website in minutes, not days.