Image Compare Workbench

Image Compare Workbench is a local click-rail image compare by Sarth Calhoun. Drop a folder of images. Click a reference on one rail, click candidates on the other. The camera stays put. Used at Third Wall Studio.

Canonical: contraptions.bookofsarth.com/image-compare-workbench. Part of Contraptions. Source: github.com/whiddershins/image-compare-workbench. Sarth: sarth.net. Hosted on Cloudflare Workers.

How to use

Drop a folder, or pick files. One shared pool fills both rails. Click a thumb on the A rail, click a thumb on the B rail. Pan, zoom, wipe. Click another candidate. The view does not reset.

If a thumb is already A, it shows muted on B (and the other way around). Click the muted thumb to swap. S swaps too. Wipe: drag the divider, or drag the image under a held divider. V / H for vertical or horizontal. Full A/B fills one side. Size matching is two dials: which dimension to equalize, and who owns the size.

Keyboard: A / B pick a side, arrows cycle, F fit, 0 actual size, - / = zoom, space-drag pan, ? shortcuts. JPEG, PNG, WebP, GIF, AVIF. Not SVG, HEIC, RAW, EXR, PDF, or video.

What it is

The image set is the object. A and B are two picks from that set, not two folders. Two click-rails over one pool, so both sides of the comparison are one click away. One shared pan, zoom, and wipe. Change A or B and you stay on the feature you were looking at. The A-folder versus B-folder split is not a missing feature.

Why

The whole loop in one place: folder in, reference on one rail, candidates on the other, stay where you are. Camera never resets. Wipe never jumps. Nothing uploaded. The two-file slider is a solved widget. This is a workbench for a set.

Privacy

Images stay in the browser as local File objects and object URLs. No accounts, no analytics, no upload.

Context

Part of: Contraptions, small machines by Sarth Calhoun. Related: Burlap (visual reference prompting at Third Wall Studio).

Sat with: imgsli and Improve ImgSLI. imgsli is a web album with a slider; you pick from a set; it uploads. Improve ImgSLI puts selectable lists on both sides of a shared compare. Arbitrary pairs already exist there. This workbench is that browsing model as the whole instrument: one local pool, two independent click-rails, camera stays, nothing uploaded.

Built with: Svelte 5, Vite, TypeScript. Client-only. Cloudflare Workers.

First published 24 Aug 2026. All rights reserved. md ยท json