Works with any backend npm install Zero dependencies

Requirements

Zero dependencies and no build step required. The baseline is any evergreen browser; a few advanced features lean on specific web APIs, and degrade rather than break where those are missing.

Browsers

Current Chrome, Edge, Firefox and Safari (desktop and mobile). The core upload path uses long-standing APIs — XMLHttpRequest, fetch, Blob.slice, FormData — so it also works on considerably older evergreen releases.

Feature-specific APIs

Feature Needs Without it
Cross-session resume IndexedDB (persistBlobs) Uploads still work; resume needs re-picking the file.
SHA-256 hashing, encryption-at-rest, tus checksums crypto.subtle — HTTPS or localhost only Feature is skipped; upload proceeds.
Webcam / screen / audio capture getUserMedia / getDisplayMedia + MediaRecorder — HTTPS Capture buttons unavailable; file picking unaffected.
Cross-tab coordination BroadcastChannel Silently disabled (each tab uploads independently).
Off-thread image work Web Workers + OffscreenCanvas Falls back to the main thread automatically.
Folder upload webkitdirectory / drag-and-drop entries Individual file selection.

Backend

  • Any language. The contracts are plain HTTP: a multipart POST, a chunk POST with X-Chunk-* headers, and a JSON completion call. Reference servers: Node (shipped in the npm package), plus ASP.NET Core via our sibling CoreUpload.
  • Direct-to-cloud needs a small signing endpoint (S3/Azure/GCS) — credentials stay server-side.
  • tus works against any tus 1.0 server.

Licensing

No licence needed on localhost / 127.0.0.1 / ::1. Production domains use multipleupload.lic — see deployment.