Tenantbox is in early beta free to use, actively being built. Join early access →

Multi-tenant file storage for developers. Built for SaaS teams.

Stop writing tenant isolation logic from scratch. Tenantbox gives your SaaS per-tenant file storage, quota enforcement, and usage tracking in two API calls. Files go directly to Cloudflare R2, your server is never in the way.

We boast faster uploads!

contract_2026.pdf1.2 MB
profile_photo.png3.8 MB
q3_report.xlsx0.6 MB

Files go straight to storage - your server is never in the way.

tenantbox - live playground
real api

api key

enter key

tenant id

file

Drop a file or click to choose

Any type · Max 50 MB

No key yet? Get one free · Read the docs

The real cost of DIY

Multi-tenant storage is harder than it looks.

Every SaaS team eventually hits the same six problems. Most discover them in production.

Building it yourself

  • Write custom S3 path logic for every upload endpoint
  • Build quota-check middleware and keep it consistent
  • Maintain a storage_usage table that never drifts
  • Debug upload timeouts caused by server proxying
  • Manage IAM policies as tenants are created and deleted
  • Pay egress fees every time a user downloads a file

Typical time to ship: 2–4 weeks of engineering time

With Tenantbox

  • Two HTTP calls: get presigned URL, PUT file, done
  • Quotas checked before the upload even begins
  • Usage totals updated automatically on every upload
  • Files go directly to Cloudflare R2 your server stays free
  • Tenants created on first upload, deleted on request
  • Zero egress fees globally, always

Typical time to ship: under an afternoon

R2

Powered by Cloudflare R2

Your files' actual home

Files are stored on Cloudflare R2, S3-compatible object storage with global distribution and zero egress fees. Your data isn't on some mystery server. It's on infrastructure trusted by millions of developers worldwide.

Files stored in isolated per-tenant namespaces on R2

Your data, always

No lock-in by design

Every file you upload is accessible via a standard presigned URL. You store the file_path in your own database. If you ever leave Tenantbox, your data is yours, no export process, no hostage fees.

File paths stored in your DB, always accessible

Early access, honest terms

Beta, not vaporware

Tenantbox is in active beta. The API is live, uploads work, and early users shape the roadmap. Free tier includes 1 GB storage and unlimited tenants. Pricing will be public before any limits are enforced.

No credit card required ever, for the free tier

Any language

Two calls. Any stack.

No SDK required. Copy the snippet for your language and you're done.

TypeScript
import axios from 'axios'
import fs from 'fs'

// Step 1 — Get presigned upload URL
const { data } = await axios.post(
  'https://api.tenantbox.dev/api/storage/upload/',
  {
    tenant_id:    'user_123',
    filename:     'contract.pdf',
    content_type: 'application/pdf',
  },
  {
    headers: {
      'Authorization': 'Bearer sk_live_xxx',
      'Content-Type':  'application/json',
    },
  }
)

console.log('File path:', data.file_path)
console.log('New tenant:', data.is_new_tenant)

// Step 2 — Upload directly to Tenantbox storage. Your server never sees the file.
const fileBuffer = fs.readFileSync('contract.pdf')
await axios.put(data.presigned_url, fileBuffer, {
  headers: { 'Content-Type': 'application/pdf' },
})

console.log('Upload complete!')
Everything in your control

All the features you need to ship faster.

Manage uploads, enforce quotas, and isolate tenants without writing the boilerplate yourself.

user_4821

alice@acme.com

Total files

4

Storage used

38 MB

Storage limit

500 MB
8% used

Files

All confirmed uploads for this tenant.

Upload files
FileSizeStatus

contract_2026.pdf

contract_2026.pdf

1.2 MBConfirmed

profile_photo.png

profile_photo.png

3.8 MBConfirmed

q3_report.xlsx

q3_report.xlsx

614.4 KBConfirmed

onboarding.mp4

onboarding.mp4

23 MBPending

2

API calls to upload

$0

Egress fees

Tenants per project

How It Works

From API call to stored file in two steps.

No complex SDK. No server-side file handling. Just two HTTP calls and your file is safely stored, isolated, and tracked.

1

Request a presigned URL

Your server makes one authenticated POST to Tenantbox with the tenant ID, filename, and content type. You get back a presigned upload URL and the file path.

POST /api/storage/upload/
2

Upload directly to storage

Your client PUTs the file directly to the presigned URL. The file never touches your server which means faster uploads and no bandwidth cost on your end.

PUT <presigned_url>
3

Done - tenant & file tracked

Tenantbox automatically creates the tenant on first upload, namespaces the file, enforces storage quotas, and starts tracking usage. Zero boilerplate on your side.

is_new_tenant: true ✓

Your server is never the bottleneck

Because uploads go client → storage directly, large files don't block your API, consume memory, or rack up egress charges. Tenantbox handles isolation, quotas, and tracking in the background.

Read the docs
Early Access Beta

Be one of the first teams
to ship multi-tenant file storage this afternoon.

No testimonials yet, we're early and honest about it. What we can promise: the API works, uploads are live, and every piece of feedback directly shapes what gets built next.

Free

During beta

1 GB

Storage included

Tenants

Get early access it's free
Why Tenantbox

Stop duct-taping storage solutions together.

Every alternative requires you to build these features yourself or doesn't offer them at any price tier.

Feature
S3
AWS S3
R2
Cloudflare R2
GCS
Google Cloud
SB
Supabase
TB
Tenantbox
Per-tenant file isolationAutomatic namespace per user/org
Auto-create tenant on uploadNo pre-registration required
Per-tenant quota enforcementHard limits before upload begins
Direct client-to-storage uploadsFiles never touch your server
Usage tracking per tenantFiles count, bytes used
Zero egress fees✦ Serving files to end users
Dashboard for file managementView, delete, download files
Free to get started
Two-call upload APINo SDK required

✦ Egress fees apply when serving files outside the same region. Tenantbox offers zero egress fees, globally.

Common questions

Things developers ask before signing up

Ship multi-tenant file storage this afternoon.

Free to get started. No credit card required. Two API calls and your files are isolated, tracked, and quota-enforced per tenant out of the box.