Works with any backend npm install Zero dependencies

Animations

Custom CSS animations triggered on upload events: a pulse on file add, a shake on error, and a bounce on completion.

Drag & drop files here
<style>
 @keyframes mu-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.03); } 100% { transform: scale(1); } }
 @keyframes mu-shake { 0%,100% { transform: translateX(0); } 20%,60% { transform: translateX(-6px); } 40%,80% { transform: translateX(6px); } }
 @keyframes mu-bounce { 0%,100% { transform: translateY(0); } 40% { transform: translateY(-8px); } }
 .anim-pulse { animation: mu-pulse 0.4s ease; }
 .anim-shake { animation: mu-shake 0.5s ease; }
 .anim-bounce { animation: mu-bounce 0.5s ease; }
</style>
var el = document.getElementById('myUploader');
function animate(cls) {
 el.classList.remove(cls);
 void el.offsetWidth; // Force reflow
 el.classList.add(cls);
}

var uploader = new MultipleUpload(el, {
 uploadUrl: '/api/upload',
 onSelect: function() { animate('anim-pulse'); return true; },
 onComplete: function() { animate('anim-bounce'); },
 onError: function() { animate('anim-shake'); }
});