A professional-grade photo editor that runs entirely in the browser. No upload. No account. No tracking. Every pixel stays on your machine.
Built on vanilla JS with a Canvas-2D render pipeline backed by SharedArrayBuffer workers. The color science is real — ACES scene-linear workflow, LUT precision transforms, HDR exposure fusion. Not a filter app. An editing tool.
What it does
COLOR SCIENCE
- ACES pipeline — scene-linear Academy Color Encoding System. Same color model used in film post.
- LUT import —
.cubefiles, 1D and 3D, applied at full precision. Bring your own looks. - Rec.709 / Rec.2020 / Log C transforms — industry-standard gamut and gamma conversions.
- Temperature + Tint — white balance in kelvin, not sliders-to-nowhere.
TONE CONTROLS
- Brightness, Contrast, Clarity, Highlights, Shadows, Whites, Blacks
- Saturation, Vibrance — perceptual, not naïve multiplication
- Dehaze — cuts atmospheric haze via local contrast recovery
- Vignette — clean edge darkening, no edge blowout
DETAIL + FX
- Sharpen + Blur — local detail enhancement and controlled softening
- Grain — film-grain synthesis, not noise
- Vignette — exposure-correct falloff
HDR FUSION
Load multiple exposures. Merge into a single HDR image. Tone-map for output. Works offline, in the browser, without server round-trips.
CURVES
Master RGB curve editor. Per-channel precision. Luminance masking built in. This is the edit layer that matters.
PRESETS
- Original, Rec.709, Rec.2020, Log C, Linear, Cinematic, B&W, Vintage
- Save your own looks — stored locally, no sync required
SNAPSHOTS + BATCH
Compare versions with Snapshots. Apply a full adjustment stack to a folder of images with Batch mode. No queue, no cloud — local pipeline.
Architecture
Built to be fast and private. The render pipeline runs in a Web Worker via SharedArrayBuffer — the main thread never blocks during processing.
- Vanilla JS — no framework. Direct DOM, direct Canvas API.
- SAB render pipeline — SharedArrayBuffer passes pixel data to workers without copying. Fast.
- Web Workers — all heavy computation off the main thread. UI stays responsive.
- Canvas 2D — hardware-accelerated 2D compositing.
- VitePWA + Workbox — offline-first. Install it once, use it without a connection.
- Cloudflare Pages — deployed with full security headers: CSP, COOP, COEP, CORP, HSTS, Permissions-Policy.
COOP + COEP are required for SharedArrayBuffer in modern browsers. The editor enforces them. That’s also why it can’t be embedded in an iframe — frame-ancestors: none is intentional.
Privacy model
No image data leaves the browser. Ever.
- No upload endpoint
- No analytics
- No cookies
- No account, no login, no email
- No subscription
- No tracking pixels
- Free. No catch.
The only network request is loading the app itself. After that, fully offline.