The developer platformfor file uploads
UploadKit provides the infrastructure, SDK, and components to add production-ready file uploads to any app — in minutes.
// app/api/upload/route.ts
import { createUploadKitHandler } from '@uploadkitdev/next'
const router = createUploadKitHandler({
imageUploader: f({ image: { maxFileSize: '4MB' } })
.middleware(async ({ req }) => {
const user = await auth(req)
return { userId: user.id }
})
.onUploadComplete(async ({ metadata, file }) => {
await db.files.create({ userId: metadata.userId, url: file.url })
}),
})
export const { GET, POST } = routerFeatures
Everything you need.
Nothing you don't.
Managed Storage
Upload files directly to UploadKit-managed S3-compatible storage. CDN delivery included, no infrastructure setup required.
Bring Your Own Storage
Point UploadKit at your own S3 bucket, R2, or GCS. Keep your data in your cloud — we just handle the plumbing.
Premium Components
Drop-in React components — dropzone, button, progress bar — styled beautifully and fully customizable.
End-to-End Type Safety
Your file router is fully typed. Endpoint names, MIME types, and metadata flow from server to client without casting.
Direct Uploads
Files go straight from the browser to storage via presigned URLs. Your server never touches the bytes.
Dashboard & Analytics
Monitor uploads, bandwidth, and storage in real time. Set alerts and inspect individual files from one place.
Pricing
Simple, transparent pricing
Free
Perfect for side projects and early-stage apps.
- 5 GB storage
- 2 GB bandwidth / mo
- 4 MB max file size
- 1,000 uploads / mo
- 2 projects
- Community support
Pro
For production apps that need reliable infrastructure.
- 100 GB storage
- 200 GB bandwidth / mo
- 512 MB max file size
- 50,000 uploads / mo
- 10 projects
- Priority email support
Team
For growing teams with higher volume and more projects.
- 1 TB storage
- 2 TB bandwidth / mo
- 5 GB max file size
- 500,000 uploads / mo
- 50 projects
- Dedicated support