User guide
A folder in,
a stamped ZIP out.
Five steps, one screen. Your frames are decoded, stamped and re-encoded by a WebAssembly module running inside this tab — there is no upload, no account, and no server that ever sees a pixel.
DSC_4821_stamped.jpg · 4000×6000 · jpg q75
Step one
Bring in the frames
Drop a folder’s worth of images onto the Frames panel, or click it and pick them from disk. JPEG, PNG and WebP all read, mixed together in one batch if that is what you have.
The strip previews the first eight; the rest are counted, not decoded, so a hundred-frame batch does not cost you a hundred full-size previews before you have even chosen a stamp.
- Total size and the largest file are listed under the strip.
- Clear drops the whole selection and starts over.
- Anything past 120 MP is refused from its header, before it is decoded.
Drop frames here or pick them from disk
jpg · png · webp
Total120 frames · 2.4 GB
Step two
Pick the mark
The stamp is a single PNG, up to 10 MB. PNG only, because it is the format that carries a real alpha channel — a JPEG logo would arrive with a white box around it.
It is previewed on a checkerboard rather than on the mat: most stamps are white, and white on a pale surround shows you nothing. The checks are there so the transparency you are about to rely on is visible.
- Centred on every frame, scaled to fit, with 10 px of clear space.
- One stamp per run — swap it with Remove and pick again.
- A .png name over non-PNG data is caught and explained.
Size1200×240 · 86.4 KB
Positioncentred · contained with padding
Step three
Dial the opacity
Four presets and a slider. The swatches are filled with the coral they stand for, so 25 % looks like 25 % before you click it; the slider covers everything in between.
The preview reacts as you move — which is the point. A mark at 100 % signs the frame, a mark at 25 % only whispers over it, and which one is right depends on the photograph, not on a number someone recommended.
- The value applies to every frame in the batch.
- Try it here — this is the real control, not a picture of one.
Stamp opacity
Step four
Apply the stamp
Apply stamp wakes up once both halves are filled. Frames go through one at a time, and the line under the bar names the one being worked on, so a batch that stalls tells you which file did it.
Decide on the caption before you start: the switch under the frame strip writes each file’s own name along its bottom edge, in grey at half opacity, sized to the frame so a small crop and a stitched panorama both stay readable.
- Keep the tab in front — a backgrounded tab gets throttled by the browser.
- The finish line reports the frame count and the seconds it took.
Stamping
77 / 120 · DSC_4821.jpg
Step five
Take the batch
The gallery turns into the stamped set, every frame ticked, and two ways out sit beside it. Save to folder opens your file browser, and the frames are written into the folder you point at as loose files — nothing to unpack. Download ZIP says what the archive weighs before you commit, and works in every browser.
Reset all returns the page to how it loaded: frames, stamp, results and settings all go, ready for the next folder. It is there from the moment anything changes, not only at the end of a run.
- Saving to a folder needs Chrome, Edge or another Chromium browser; the ZIP does not.
- Inside the archive everything lands in a stamped-images/ folder.
- Output is JPEG at quality 75, named <original>_stamped.jpg.
- Hover a frame in the gallery for its dimensions and megapixels.
Archivestamped-images-1758…zip
Insidestamped-images/
Good to know
Six answers, before you ask them
Nothing leaves the browser
The whole pipeline is a WebAssembly module fetched once and run locally. Work offline if you like — after the first load there is nothing left to reach for.
Why JPEG comes out
Quality 75 is the sweet spot for a set meant to be sent on. JPEG has no alpha, so anything translucent is composited onto white before it is encoded.
The filename caption
Optional, off the switch under the frame strip. Grey at 50 % opacity, sized at 2.2 % of the frame’s shorter side and clamped between 16 and 96 px.
Where the limits sit
120 MP and 65 535 px per frame, checked from the header before any buffer is allocated — that is what keeps a decompression bomb from taking the batch down.
Large batches
Frames are processed one at a time, so memory stays flat however many you queue. Time scales with pixels, not with the number of files.
Light or dark
The studio follows your system until you pick a side, then it remembers. Frames always sit on a hue-free grey, so the surround never shifts your white balance.
Under the hood
The defaults, written down
Everything the interface does not ask you about. These are compiled into the Rust crate, so they read the same on every machine that loads the page.
- Engine
- wasm v2.1.2 · Rust
- Output
- jpg · quality 75
- Stamp padding
- 10 px
- Caption colour
- #7d7d7d at 50 %
- Max frame
- 120 MP · 65 535 px
- Max stamp
- 10 MB png
- Archive
- zip · one folder, one pass
That is the whole thing
Go and put your mark on it.
Drag a folder in and the first stamped frame is a few seconds away.
Open the studio