Skip to content

Uppy

A modular JavaScript file uploader for web browsers, with resumable uploads and many file sources.

Stars
31.1k
Forks
2.1k
Licence
MIT
Language
TypeScript
Last update
4 days ago
Type
Library

What it is

Uppy is a JavaScript library that adds a file upload interface to a web page or app. You install only the pieces you need, such as a drag-and-drop dashboard, a webcam capture option, or a destination like tus or AWS S3. It can also import files from sources like Google Drive, Dropbox, and remote URLs, usually with a companion server component.

  • Add a drag-and-drop upload dashboard to a website
  • Let users upload large files that can resume after a network interruption
  • Import files from Dropbox or Google Drive into your app via a companion server
  • Send uploaded files to an encoding pipeline such as Transloadit

Great for

  • Web developers who need a ready-made file upload interface in their app
  • Teams that want resumable uploads for large files via the tus standard
  • Projects using React, Svelte, Vue, or plain JavaScript
  • Developers who want to build a custom upload UI with headless components or hooks

Not ideal for

  • People who only need a basic HTML file input, since the README itself notes that a plain file input may be enough in many cases
  • Projects that cannot run a server component if they want cloud imports like Google Drive or Dropbox, because those need @uppy/companion
  • Non-developers looking for a finished end-user app; this is a library to embed in your own product
Step-by-step guide: how to use UppyInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: Node.js and npm, or a bundler, for the npm install route

    Install core, dashboard, and tus packages

    npm install @uppy/core @uppy/dashboard @uppy/tus
  2. 2

    Run it

    • Install the packages with npm
    • Add the uppy CSS to your page's head or import it in JS
    • Create an Uppy instance and attach the Dashboard with a target element
    • Attach the Tus plugin with an endpoint and test an upload
  3. 3

    Get the most out of it

    • Add @uppy/companion to enable Dropbox, Box, Google Drive, and remote URL imports
    • Use the Golden Retriever plugin to recover files after a browser crash
    • Use the Transloadit plugin to send files to its encoding backend with server-signed options
    • Use headless components or hooks if you need a custom UI instead of the Dashboard

Downloads

Strengths

  • Modular plugin design, so you include only the parts you use
  • Resumable uploads through the open tus standard
  • Works with plain JS and several frameworks, with a stated MIT license

Trade-offs

  • Some sources (Google Drive, Dropbox, Box, and others) require running a companion server
  • The README's pre-built CDN bundle is not recommended for production because it includes most plugins
  • Browser support is stated as an aim for recent Chrome, Firefox, and Safari, not a guarantee

How it compares

ProjectStarsTypeLevelUpdatedBest for
uppy (this)31.1kLibraryintermediate4 days agoWeb developers who need a ready-made file upload interface in their app
filepond16.4kLibraryintermediate9 days agoWeb developers who need a polished upload widget in a site or app
tabler42kLibrarybeginner8 days agoDevelopers building internal admin panels or dashboards quickly

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.