On this page
Overview
Uppy is a modular file uploader for web browsers. Its Core can be combined with UI plugins such as Dashboard, upload destinations such as Tus, XHR, or AWS S3, and sources including Webcam, Google Drive, Dropbox, and URLs.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Combine Core with Dashboard or headless UI building blocks
Dashboard provides an integrated interface for previews, progress, and metadata editing. React, Svelte, and Vue integrations also offer pre-composed components, headless components, and hooks for custom interfaces.
Sources: [1]
Choose Tus, XHR, or S3 upload destinations as plugins
The Tus plugin provides resumable uploads that can survive network interruptions. Uppy also offers XHR Upload for conventional backends and AWS S3 integrations for object storage.
Sources: [1]
Select files from local devices, webcams, and remote providers
Sources include Webcam, direct URLs, Google Drive, Dropbox, Box, and others. Remote-provider flows can transfer files server-to-server instead of routing all bytes through the user's device.
Sources: [1]
Best fit
Fits upload experiences that need large files, multiple sources, or richer UX than a file input
It is useful when an application wants progress, client-side restrictions, metadata editing, previews, and recovery/resume behavior under one plugin architecture.
Sources: [1]
Before adoption
Some remote providers require the server-side Companion component
Plugins marked with ⓒ in the README, including Google Drive, Dropbox, Box, OneDrive, and URL sources, require @uppy/companion. The architecture should separate browser-only features from flows that need a server component.
Sources: [1]
The CDN bundle is for convenient evaluation; production should install only needed plugins
The README says the pre-built bundle contains most plugins and is not recommended for production. At the uppy@6.0.4 bundle release, packages remain independently versioned: @uppy/core 6.2.0, Dashboard 6.0.1, and Tus 6.0.0.
Official sources
- [1]Uppy uppy@6.0.4 README(2026-10-05)
- [2]@uppy/core package at uppy@6.0.4(2026-10-05)
- [3]@uppy/dashboard package at uppy@6.0.4(2026-10-05)
- [4]@uppy/tus package at uppy@6.0.4(2026-10-05)
- [5]Uppy uppy@6.0.4 release(2026-10-05)
- [6]Uppy MIT license(2026-10-05)
Supplemental curator note
Uppy is practical when a plain file input is not enough and the application needs resumable uploads, richer selection UI, or remote sources assembled from only the required plugins. Remote providers marked with ⓒ, such as Google Drive or Dropbox, require the server-side Companion component.
Try it in 3 steps
- 1
Create an isolated directory for the Uppy demo
Keep this CDN-bundle evaluation separate from the modular package setup recommended for production.
demo=$(mktemp -d "${TMPDIR:-/tmp}/uppy.XXXXXX") && cd "$demo" - 2
Create minimal HTML that renders Dashboard only
Load Core and Dashboard from the documented v6.0.4 bundle and render file-selection UI without configuring an upload destination.
printf "%s\n" '<!doctype html>' '<meta charset="utf-8">' '<link href="https://releases.transloadit.com/uppy/v6.0.4/uppy.min.css" rel="stylesheet">' '<div id="files-drag-drop"></div>' '<script type="module">' "import { Uppy, Dashboard } from 'https://releases.transloadit.com/uppy/v6.0.4/uppy.min.mjs';" "const uppy = new Uppy();" "uppy.use(Dashboard, { target: '#files-drag-drop', inline: true });" '</script>' > index.html - 3
Open the HTML in a browser and verify Dashboard
Open
index.htmlin a browser and confirm the drag-and-drop/file-picker Dashboard appears. Use modular packages rather than the full CDN bundle for production.index.html
Growth
Growth trends · Last 30 days
31,010 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 178
- Open PRs
- 35
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- tus
- resumable
- file-uploads
- javascript
- webbrowser
- mit
- open-source
- modular
- file-uploader
- uploader
- files
- uppy
- Stars
- 31,010
- Forks
- 2,108
- Watchers
- 318
- Open issues
- 164
- Contributors
- 435
- Owner type
- Organization
- Primary language
- TypeScript
- License
- MIT
- Repository last updated
- Oct 5, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- SweetAlert218,098 Stars
4 shared tag(s)
replace alert, confirm, and prompt dialogs with WAI-ARIA-aware popups that resolve through Promises
JavaScript - Tippy.js12,240 Stars
4 shared tag(s)
position tooltips, popovers, and dropdowns with Popper and attach them to hover, focus, or click interactions
JavaScript - melonJS6,401 Stars
4 shared tag(s)
Build browser-based 2D and 2.5D games through one API across WebGPU, WebGL 2, and Canvas
JavaScript - Ant Design99,682 Stars
3 shared tag(s) · Same language
build enterprise React interfaces quickly with ready-made components, design tokens, theming, and internationalization
TypeScript - Tailwind CSS97,773 Stars
3 shared tag(s) · Same language
Compose utility classes in HTML and components and generate the required CSS at build time
TypeScript - Playwright97,099 Stars
3 shared tag(s) · Same language
Drive Chromium, Firefox, and WebKit through one API and test runner for E2E, scripting, and agent browser automation
TypeScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.