OSS TanbouSign in with GitHub

compose file-selection UI and resumable uploads from plugins across local and remote sources

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
31,010
Primary language
TypeScript
License
MIT
Repository last updated
Oct 5, 2026
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.

Sources: [1][2][3][4]

Official sources

  1. [1]Uppy uppy@6.0.4 README(2026-10-05)
  2. [2]@uppy/core package at uppy@6.0.4(2026-10-05)
  3. [3]@uppy/dashboard package at uppy@6.0.4(2026-10-05)
  4. [4]@uppy/tus package at uppy@6.0.4(2026-10-05)
  5. [5]Uppy uppy@6.0.4 release(2026-10-05)
  6. [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. 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. 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. 3

    Open the HTML in a browser and verify Dashboard

    Open index.html in 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
Check the official README

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
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?