Add a polished photo uploader to a profile editor or social media app.
Build a document management tool where users drag files to upload and resume interrupted transfers.
Let users import photos directly from Dropbox or Google Drive without downloading them first.
Create a webcam capture feature that uploads images to your server or S3 bucket.
Uppy is a JavaScript file uploader library for web browsers. It solves the gap between what users expect when uploading files, a polished interface with drag-and-drop, progress feedback, and the ability to pull files from cloud storage, and what a basic HTML file input provides. Rather than building all of this from scratch, developers add Uppy to their web application and get a ready-made upload widget with a sleek interface. The library is built around a plugin architecture: a small core handles the upload logic, and optional plugins extend it for specific needs. Source plugins let users pick files from their local device, take a photo with a webcam, or import directly from services like Dropbox, Google Drive, Box, or Instagram. Destination plugins send the files to a regular web server, an AWS S3 bucket, or via the tus protocol, an open standard designed specifically for resumable uploads, meaning a large file transfer that gets interrupted by a dropped network connection can pick up exactly where it left off rather than restarting from scratch. An optional server-side component called Companion handles the cloud-storage integrations, fetching files from those services directly into the destination rather than routing them through the user's browser. A developer would reach for Uppy when building any feature that involves user file uploads, a photo editor, a document management tool, a profile picture uploader, and wants a complete, tested solution instead of assembling one from smaller pieces. It is written in TypeScript and offers integrations for plain HTML/JavaScript as well as React, Svelte, Vue, and Angular.
Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.