Works with any backend npm install Zero dependencies

File uploads that work with any backend

A standalone JavaScript file upload component with the self-hosted Companion broker that keeps cloud tokens server-side, 6 cloud sources (Drive, Dropbox, OneDrive, Box, Unsplash, Companion), headless hooks for React, Vue, Svelte, and Angular, a content-aware image editor with smart-crop, overlays, filters, and AVIF/WebP output, 7 transport strategies (chunked, direct-to-S3 / Azure / GCS, tus 1.0, URL import), and 28 built-in locales. Drop it into any project, any backend, in minutes.

npm install multipleupload

Or use the CDN: https://unpkg.com/multipleupload

7

Transport strategies

6

Cloud sources

28

Built-in locales (incl. RTL)

0

Required runtime deps

Works with every stack

React Vue Svelte Angular Node.js PHP Python Django Laravel Go Rails Spring Boot ASP.NET Core

Try it now

This is a fully working upload demo. Drag files or click to browse.

Drag & drop files here or click to browse

Everything you need for file uploads

Built-in features that cover every upload scenario, out of the box.

Drag & Drop

Intuitive drag-and-drop zone with visual feedback. Users can drop single or multiple files.

Chunked Uploads

Large files are split into chunks and uploaded sequentially. Handles files of any size reliably.

Image Previews

Instant thumbnail previews for image files before upload. Built-in, no extra libraries needed.

Clipboard Paste

Paste images directly from the clipboard. Perfect for screenshots and quick image sharing.

Custom Headers

Send custom HTTP headers with every upload request. Built-in CSRF token and auth header support.

Zero Required Deps

Pure JavaScript core. Framework wrappers (React/Vue/Svelte/Angular) and the server middleware are optional peer deps - install only what you use.

What's new in 1.3

Headline release

Server-side cloud tokens, headless UI, and a pro image editor.

The Companion broker, two new cloud sources, headless hooks for all four major frameworks, and a content-aware image editor with AVIF/WebP output. All additive - no breaking changes from 1.2.

Headline
Companion broker

A self-hosted Node/Express OAuth and file-proxy broker (multipleupload/server/companion), modeled on Uppy Companion, with zero new dependencies. Provider client secrets and access tokens stay server-side. Built-in Dropbox, Box, Drive, OneDrive; proxy and server-to-destination transfer modes; HMAC-signed OAuth state.

Headless
React . Vue . Svelte . Angular hooks

useUploader() for React and Vue, a use:uploader action for Svelte, and an UploaderService for Angular return { files, progress, status, addFiles, upload } for fully custom UI.

Image editor
Smart-crop + overlays + AVIF/WebP

Content-aware focal-point smart-crop (edge-energy, no ML), draggable text and sticker overlays, filter presets (Mono/Sepia/Warm/Cool/Vivid), an EXIF info panel, crop-ratio chips, and AVIF/WebP output with a quality slider and graceful fallback.

Cloud sources
6 sources incl. Unsplash + Companion

Drive, Dropbox, OneDrive, Box (now first-class), Unsplash (search and import, no OAuth popup), and the Companion broker. Built-in pickers, lazy-loaded, one line to configure.

Compliance
Encryption-at-rest (AES-GCM-256)

PBKDF2 (200k iter), per-file salt + IV. Your server only ever sees ciphertext. Unique among major upload libraries.

Compliance
Pre-upload virus scan + /scan endpoint

Client hook integrates ClamAV / VirusTotal / Defender. Server-side /scan endpoint in multipleupload/server.

Resilience
Offline-first + Service Worker

Files queue to IndexedDB while offline; uploads auto-resume on reconnect. Register a Service Worker for background sync.

Image pipeline
HEIC + presets + annotation

iPhone HEIC auto-converts to JPEG. 5 presets bundle resize + crop + auto-orient. Slack-style 6-tool markup (pen, arrow, rect, text, blur, eraser) before upload.

Multi-tab
Cross-tab + manager dashboard

BroadcastChannel prevents duplicate uploads across tabs. A "manager" tab can aggregate every tab's progress via subscribeAllTabs().

Composable UI
StatusBar + Informer widgets

Extractable progress chrome you can mount anywhere on your page - in your app header, sidebar, or sticky footer.

UX
Drag-to-reorder + keyboard + camera

enableQueueReorder for drag-drop priority. Arrow Up/Down for keyboard accessibility (WCAG 2.1). cameraCapture for direct mobile camera launch.

i18n
28 locales + auto-detect

Locale auto-detect from navigator.language across ~28 locales. Arabic + Hebrew with right-to-left layout. registerLocale() for everything else.

Ready to add file uploads?

Get started in minutes with npm or CDN. Works with your existing backend.