Works with any backend npm install Zero dependencies

Sequential Queue

Upload files one at a time with concurrency: 1. Each file waits for the previous one to finish before starting.

new MultipleUpload(document.getElementById('demo-seq-queue'), {
 uploadUrl: '/api/upload',
 multiple: true,
 concurrency: 1,
 onTaskStart: function(task) {
 document.getElementById('seq-status').textContent =
 'Uploading: ' + task.fileName;
 },
 onTaskComplete: function(task) {
 document.getElementById('seq-status').textContent =
 'Completed: ' + task.fileName;
 }
});

One at a time, in order

concurrency: 1 is the default, and it is more useful than it looks. Files complete in the order they were added, each gets the whole connection, and progress is legible because exactly one bar is moving.

Where order is a requirement, not a preference

Anything the server processes as a sequence: pages of a scanned document, chunks your API expects in order, or an import where later files reference earlier ones. Raising concurrency there does not just reorder the UI, it reorders arrival at the server — and if that matters, sequential is the correct setting rather than the conservative one.