One File Uploader,
A drag-and-drop file uploader with a headless core and native UI for React, Vue, Svelte, Angular, Vanilla JS & Preact. Cloud drives, camera, screen capture, and secure server-mode uploads to any S3-compatible storage.
npm install @upupjs/reactOne uploader, the same API in every framework
'use client'import { UpupUploader } from '@upupjs/react'import '@upupjs/react/styles' export default function Uploader() { return <UpupUploader provider="aws" uploadEndpoint="/api/upload-token" />}Everything you need for modern file uploads
One uploader with a headless core and native UI for React, Vue, Svelte, Angular, Vanilla JS, and Preact — with a drag-and-drop dropzone, file picker, cloud-drive sources, camera and screen capture, and optional server-mode uploads to any S3-compatible storage.
Six Frameworks, One Uploader
Native UI for React, Vue, Svelte, Angular, Vanilla JS, and Preact — one uploader that renders byte-identical DOM in every framework, enforced by a cross-framework parity suite.
See it liveCloud Drives, Camera & Screen Capture
Import files straight from Google Drive, OneDrive, Dropbox, and Box — plus device camera, screen capture, audio recording, and link (URL) imports.
See it liveSecure Server Mode
Optional server mode proxies uploads through your own backend with an HMAC-signed trust model, keeping storage credentials off the client — with ready-made adapters for Express, Fastify, Hono, and Next.js.
Built-In Image Editor (React & Preact)
Crop, rotate, annotate, and filter images before upload with the integrated Filerobot editor — available in React and Preact, loaded lazily so it never weighs down your bundle.
See it liveCrash-Safe & Resumable
Reload the page mid-upload and pick up where you left off — crash recovery restores the queue, and resumable chunked uploads (tus) handle large files over unreliable networks.
Fast by Default: Workers + HEIC
Image compression runs off the main thread in a web worker, so the page stays responsive — and opt-in HEIC to JPEG conversion means .heic photos from iPhones just work.
Headless Core
Framework-agnostic engine — bring your own UI.
Any S3-Compatible Storage
AWS, R2, MinIO, Spaces, B2, Wasabi, and more.
Previews, Progress & Retry
Live previews, progress bar, and automatic retry.
Themeable & Localized
Theme tokens, dark mode, and built-in locales.
Accessible & TypeScript-First
Accessibility checks in our CI suite, fully typed APIs.
Let your users connect to their favorite storage cloud providers
Users can directly upload from these providers in upup
Supported today
On the roadmap — click to request one
And for developers, connect upup to your favorite cloud bucket
You can connect to upup using any S3 provider. We also support some non-S3 connections.
Supported today
On the roadmap — click to request one
Support for all file types
Upload images, videos, documents, and large files — handle any file type and size limit your users need
Try it in your browser
Browse a real React example — edit the component, tweak the dropzone and file picker, then open it in StackBlitz to run it live. The same uploader ships for Vue, Svelte, Angular, Vanilla JS, and Preact.
Like what you see? Install the package for your framework — React, Vue, Svelte, Angular, Vanilla JS, or Preact — and start uploading files today.
Frequently askedquestions
upup ships one uploader with native UI packages for React, Vue, Svelte, Angular, Vanilla JS, and Preact. Every framework renders byte-identical DOM, verified by a cross-framework parity test suite, so the uploader looks and behaves the same everywhere.
Help us improve
Your feedback drives our development. Share your thoughts, report issues, or suggest new features.
Open Source & Community Driven
Upup is open source and welcomes contributions. Whether you're fixing bugs, adding features, or improving documentation, every contribution makes a difference.










