Works with any backend npm install Zero dependencies

Progress Bar Styles

The built-in progress bar updates in real time during uploads.

(function() {
 new MultipleUpload('#demo', {
 uploadUrl: '/api/upload',
 multiple: true
 });
})();
CSS customization: Override .mu-progress-fill to change the bar color, or .mu-progress-text for the label style.

Progress with nothing to configure

The progress bar needs no options: the component renders overall queue progress and a per-file bar automatically. What is worth understanding is which number you are looking at, because they answer different questions.

Two numbers, weighted differently

Per-file progress is that file's own transfer. Overall progress is bytes across the whole queue, weighted by size rather than averaged across files — which is why a queue holding one large video and nine small images does not jump to 90% when the images finish. Averaging percentages produces exactly that misleading bar, and it is the usual reason a progress indicator appears to stall.