Uppy
Sleek, modular open source file uploader that supports drag-and-drop, image cropping, and uploads to S3, Google Drive, and more.
Overview
Uppy is a modular JavaScript file uploader built around a plugin architecture: a small core handles state and uploads, and plugins add sources (local disk, webcam, Google Drive, Dropbox, Box, or remote URLs via the optional Companion server), UI (a pre-built Dashboard, or headless components/hooks for a custom interface), editing (like an image editor), and upload transports - including resumable uploads over the open tus protocol, so large uploads can survive network interruptions.
It has first-class integrations for plain JS/HTML, React, Svelte, and Vue (with more limited Angular support), and gives three ways to build the UI depending on how much control you need: a plug-and-play Dashboard component, smaller headless components, or hooks to build a fully custom interface. Uppy works standalone or paired with Transloadit (made by the same team) for file encoding, conversion, and delivery, but doesn't require it.
Uppy is a fit for teams that need a flexible, customizable file-upload widget rather than a basic native `<input type="file">`, especially when resumable uploads or multiple file sources are needed.
- Categories
- UI & ComponentsStorage
- Languages
- JavaScript, TypeScript
- License
- MIT
Related Projects
Alluxio
Apache-2.0Data orchestration layer that sits between compute engines and storage systems, caching data for faster, unified access across the two.
- Storage
Appwrite
BSD-3-ClauseOpen-source backend platform providing authentication, databases, storage, functions and realtime APIs, self-hosted or as a managed cloud service.
- Backend
- Database
- Authentication & Security
Ceph
LGPL-2.1Industry-standard distributed storage system providing object, block, and file storage from a single unified cluster.
- Storage
CubeFS
Apache-2.0Distributed filesystem and object storage system built for cloud-native, large-scale data-intensive applications.
- Storage
Spotted an error? Suggest an edit on GitHub.