Pushduck
Own your file uploads. The most comprehensive upload solution for Next.js.
Simple S3 Uploads, Zero Vendor Lock-in
Upload files directly to S3-compatible storage. Lightweight (6KB), type-safe, and works everywhere. No monthly fees, no vendor lock-inβjust 3 files and ~50 lines of code.
// Create your upload client
const upload = createUploadClient<AppRouter>({
endpoint: '/api/upload'
});
// Use anywhere in your app
export function MyComponent() {
const { uploadFiles, files, isUploading } = upload.imageUpload();
return (
<input
type="file"
onChange={(e) => uploadFiles(Array.from(e.target.files || []))}
disabled={isUploading}
/>
);
}π¬ Try It Live
Upload a file to see it in action (using Cloudflare R2)
π
Drag & drop files or click to browse
Maximum 5 files allowed
π€
Drop files above or click to browse
Why Choose Pushduck?
Alternative to UploadThing - Own your infrastructure, zero recurring costs.
| Feature | Pushduck | UploadThing |
|---|---|---|
| Cost | $0 (use your S3) | $10-25/month |
| Bundle Size | 6KB | Managed client |
| Vendor Lock-in | None - S3 compatible | Locked to their service |
| File Ownership | Your S3 bucket | Their storage |
| Type Safety | Full TypeScript | TypeScript support |
| Setup Time | ~2 minutes | ~2 minutes |
Key benefits:
- β 6KB bundle - No heavy AWS SDK
- β Type-safe - Compile-time route validation
- β Own your files - Any S3-compatible provider
- β No monthly fees - Use your own S3
- β Focused library - Does uploads, nothing else
More Resources
What's Included
- β Progress Tracking - Real-time progress, speed, and ETA
- β Type Safety - Full TypeScript from server to client
- β Multi-Provider - AWS S3, Cloudflare R2, DigitalOcean, MinIO
- β Validation - File type, size, and custom rules
- β Storage Operations - List, delete, and manage files
- β Framework Support - Next.js, Remix, Express, Fastify, and more
- β Drag & Drop Components - Copy-paste UI components via CLI
π What we don't do - File processing, analytics, team management. See Philosophy for our focused scope.