Why Upstash Blob
Object storage built for serverless apps and the browsers that talk to them.
Direct browser uploads
Bytes go straight from the browser to storage. Your server only authorizes, signs, and records the upload.
Global CDN, no regions
Every file is replicated to a CDN worldwide. Public buckets get a URL out of the box, with no region to choose.
S3 compatible
Exchange your bucket token for temporary S3 credentials and use the AWS SDK, the AWS CLI, or any S3 tool.
Public or private
Public buckets serve from a URL anyone can read. Private buckets have no URL and every read is signed.
Resumable uploads
Large files go up as multipart with pause, resume, cancel, and per-part retry built into the SDK.
Server-enforced limits
Declare size and content type constraints per route. The server stays authoritative and the file picker follows.
Fully typesafe
TypeScript types connect your upload handler to your React hooks, with autocomplete for options, progress, and results.
Simple pricing
Pay for storage, simple and advanced operations, and outbound bandwidth. No upload bandwidth fees, deletes are free, and usage never rounds up.
Add file uploads to your app
Build with the fully typesafe @upstash/blob SDK. Upload from your server or browser, and track progress with React hooks.
import { Bucket } from "@upstash/blob"
const bucket = Bucket.fromEnv()
const blob = await bucket.put("avatars/me.png", file, {
contentType: "image/png",
})
console.log(blob.url) // public buckets: global CDN URL
await bucket.get("avatars/me.png") // record + ReadableStream body
await bucket.info("avatars/me.png") // metadata only
await bucket.list({ prefix: "avatars/", limit: 100 })
await bucket.del("avatars/me.png")What can you build with Blob?
Common object storage use cases, with a guide to build each one.
Avatars & profile images
One object per user at a stable path, served through a versioned URL that changes with the bytes.
Attachments
Chat, ticket, and issue attachments uploaded straight from the browser with a row written when they land.
Document libraries
Per-user PDF and file libraries with typed constraints on size and content type.
Large video uploads
Multi-gigabyte uploads that pause, resume, and retry per part, with cleanup for abandoned parts.
Private reports & invoices
Files written by your server into a private bucket and read through short-lived signed URLs.
AI-generated media
Store images, audio, and files your agents and models produce, then serve them from the CDN.
What is blob storage?
A place to put files that does not care what is in them.
Blob storage, also called object storage, keeps files as objects in a flat namespace. Each object has a path, a body, a content type, and a little metadata. There is no filesystem to mount and no schema to design, which is why it is the standard home for images, documents, videos, backups, and anything else that does not belong in a database row.
Most object stores expose an S3-style API and leave the rest to you: signing uploads, enforcing limits, handling multipart, cleaning up abandoned parts, and wiring a CDN in front. That glue is where the time goes.
Upstash Blob ships that glue as an SDK. A bucket is global and replicated to a CDN, so there is no region to pick. The upload handler runs in your own route, so a browser can send bytes straight to storage while your server decides who may upload and records what landed. Underneath it is real S3-compatible storage, so the AWS SDK and every S3 tool still work.
Frequently asked questions
Create your first bucket in seconds
Start on the free tier with 1 GB of storage and 10 GB of bandwidth. No credit card required.