Better Upload
React file uploads straight to any S3-compatible bucket, with shadcn UI parts
Tier A · StrongRegistryComponent LibraryToolbetter-upload.com

Better Upload is a React file-upload library split into a server package that signs upload routes and a client package that drives the browser side, so bytes go directly from the user to your own S3-compatible bucket instead of through your server. It ships a small shadcn-style registry of four UI pieces (Upload Button, Upload Dropzone, Upload Progress, Paste Upload Area) that you install into your own codebase and edit. It is framework-agnostic across Next.js, Remix and TanStack Start, and works with AWS S3, Cloudflare R2, Backblaze and Tigris. For teams that want UploadThing ergonomics without handing over their storage or their bill.
npx shadcn@latest add @better-upload/upload-dropzoneFor an agent
Reach for this instead of UploadThing or a hand-rolled presigned-URL flow when the project already has an S3-compatible bucket and you must not add a metered third-party upload vendor. Install `@better-upload/server` for the route handler and `@better-upload/client` for hooks, then pull the UI in with the shadcn CLI namespace `@better-upload/...` — the components assume shadcn's `button` and `progress` already exist, so run `shadcn init` first or the add will fail on missing registry dependencies. Do not expect it to do image transforms, virus scanning or a media library; it stops at the upload.
Why it is here. It is the rare upload library that keeps your storage, your credentials and your bill while still giving you a dropzone you can paste in and restyle. The server/client split makes it usable in any React meta-framework rather than being locked to Next.js.
Facts
- License
- MIT
- Pricing
- Free, Open source
- Framework
- React, Next.js, Remix
- Styling
- Tailwind CSS, CSS custom properties
- Distribution
- npm package, shadcn registry, GitHub repository, Copy-paste snippet
- Platform
- Web
- Content type
- Code
- Agent readiness
- Machine-readable registry item, CLI installable, Structured documentation, Readable open source, Copy-paste ready code
- Accessibility
- Built on accessible primitives
- Maturity
- Actively maintained
- GitHub stars
- 1,286
- Package
- @better-upload/client
Components it ships
4 totalHelps you build
3Notable for
- direct-to-S3, no proxying
- shadcn CLI namespace install
- R2 / Backblaze / Tigris adapters
- paste-to-upload area
- MIT, 1.3k stars
Provenance
Verified 2026-08-15. HTTP 200. https://better-upload.com, https://better-upload.com/docs, https://better-upload.com/docs/quickstart, https://better-upload.com/r/registry.json, https://better-upload.com/docs/components/upload-dropzone, https://github.com/Nic13Gamer/better-upload, GitHub API repos/Nic13Gamer/better-upload
Also in Component Libraries
6- Ark UI · 49 headless components with one API across React, Vue, Solid and Svelte
- Astryx · Meta's open-source React + StyleX design system, 150+ components and 42 templates
- Chakra UI · 114 accessible React components with a token-driven styling system
- Coss UI · Cal.com's design system: 60 Base UI primitives shipped as a shadcn registry
- daisyUI · 68 pure-CSS Tailwind components as semantic class names, MIT, with 35 built-in themes
- GPUI Component · 60+ Rust desktop UI components for GPUI, with a 200K-line code editor and charts