Works with any backend npm install Zero dependencies

Icon Only

An icon-only upload button with no text. Ideal for compact interfaces where space is limited.

Drag & drop files here
<style>
 .mu-select-btn {
 width: 48px; height: 48px;
 border-radius: 50%;
 padding: 0;
 }
</style>
<button type="button" class="mu-select-btn" title="Upload files">
 <svg ...>+</svg>
</button>
var uploader = new MultipleUpload(document.getElementById('myUploader'), {
 uploadUrl: '/api/upload'
});

Bringing your own markup

This demo passes only uploadUrl. Everything else — the button, its icon, the queue container — is markup already on the page carrying the component's class names, which it adopts instead of generating its own. That is the mechanism behind every custom layout here, not a special icon mode.

Where a bare icon works

A toolbar, a table row action, a chat composer: places where the surrounding context already says what the button does and a text label would be redundant. Give it an aria-label and a tooltip regardless — an icon with no accessible name is unusable with a screen reader, and the meaning of a paperclip is a convention rather than a certainty.