Flag of Ukraine   We stand with the brave people of Ukraine. Stop the war. Find out how you can help.

Sleek, modular open source JavaScript file uploader

Uppy fetches files locally and from remote places like Dropbox or Instagram. With its seamless integration, reliability and ease of use, Uppy is truly your best friend in file uploading.

Integrates well with

$ npm install @uppy/core @uppy/dashboard @uppy/instagram @uppy/tus
import Uppy from '@uppy/core'
import Dashboard from '@uppy/dashboard'
import Instagram from '@uppy/instagram'
import Tus from '@uppy/tus'

  .use(Dashboard, {
    trigger: '#select-files',
    showProgressDetails: true
  .use(Instagram, {
    target: Dashboard,
    companionUrl: 'https://companion.uppy.io'
  .use(Tus, { endpoint: 'https://tusd.tusdemo.net/files/' })
  .on('complete', (result) => {
    console.log('Upload result:', result)


  • Lightweight and modular, plugin-based architecture, easy on dependencies
  • Large uploads survive network hiccups thanks to resumable file uploads via the open tus standard
  • Saves battery and data plan by letting users pick files from Webcam, Dropbox, Google Drive and Instagram, while letting servers do the heavy lifting via Companion
  • Works great with the file encoding and processing backend from Transloadit, but also works great without
  • Open source and driven by the community We listen closely and adjust the project based on your feedback
  • Sleek user interface
  • File recovery (after a browser crash or accidental navigation) via Golden Retriever
  • Speaks multiple languages (i18n)
  • Built with accessibility in mind
  • Free to the world, forever
  • Cute as a puppy, also accepts cat pictures

Used by

Using Uppy in your project? Let us know ›

Activity Feed