Image Swapper
A privacy‑first batch image converter that runs entirely in the browser.
My Role
End‑to‑end: product design, UI, front‑end implementation, accessibility, QA
Stack
Vanilla HTML/CSS/JS · Canvas API · JSZip (CDN) · jSquash WebP encoder (libwebp WASM, CDN) · No backend
Product Highlights
Privacy by design, not by policy.
Every conversion runs entirely in‑browser via the Canvas API, so images never touch a server. Nothing is uploaded; nothing is at risk.
A crop tool that trusts the user with precision.
Drag a handle for quick, approximate crops, or type an exact pixel value in the Width/Height fields and watch the crop box snap to match. Each interaction method is tuned to its own sensible minimum rather than one number for both.
Built for one image or twenty.
Batch intake, configurable multi‑size export per image, and a single ZIP download that allows for a full asset export pass without extra steps.
Accessibility as a first-class requirement, not a retrofit.
Every custom control, including the crop handles and the collapsible panels, is fully keyboard-operable with correct ARIA roles, verified to WCAG 2.1 AA, purposefully integrated from day one rather than patched after launch.
Bugs traced to root cause, not just silenced.
From a Flexbox shrink‑to‑fit sizing quirk to a z‑index stacking issue disguised as a color bug, each interface problem was diagnosed to its actual mechanism and properly fixed, rather than patched with a workaround that could resurface elsewhere.