Shipfileuploadsin minutes
Type-safe file routers, drop-in React components, and free cloud storage. From npm install to production in under 5 minutes.
How your files flow
From component to CDN — abstracted, secured, and always available
How it works
Three steps to type-safe file uploads
import { createClawdy } from "@clawdyup/core";const f = createClawdy();export const uploadRouter = { imageUploader: f({ image: { maxFileSize: "4MB" } }) .middleware(async ({ req }) => { const user = await auth(req); return { userId: user.id }; }) .onUploadComplete(({ file }) => { console.log("File URL:", file.url); }),};Create type-safe upload endpoints with middleware and callbacks.
Everything you need
Built for developers who want uploads to just work
Upload Infrastructure
Handles validation, storage, and CDN delivery so you can focus on your app.
Free to Start
Generous free tier with no credit card required to get started.
Global CDN
Files served from edge locations worldwide with permanent links.
Middleware Auth
Authenticate uploads with your existing auth before files reach the CDN.
Image Transforms
Resize, crop, convert, and filter images on the fly via query params.
Less code, more features
Replace boilerplate with type-safe, production-ready uploads
const [file, setFile] = useState(null);const [uploading, setUploading] = useState(false);const [error, setError] = useState(null);async function handleUpload() { if (!file) return; if (!file.type.startsWith('image/')) { setError('Only images allowed'); return; } if (file.size > 4 * 1024 * 1024) { setError('File too large'); return; } setUploading(true); const formData = new FormData(); formData.append('file', file); const res = await fetch('/api/upload', { method: 'POST', body: formData, }); if (!res.ok) setError('Upload failed'); setUploading(false);}import { UploadButton } from "@/lib/clawdy";export default function Page() { return ( <UploadButton endpoint="imageUploader" onClientUploadComplete={(res) => { console.log("Uploaded:", res); }} /> );}Ready to ship uploads?
Get started in under 5 minutes. No credit card, no limits.