Cuneyt Ozturk

FAX OFFICE 1987 - Drop a photo. Get it back as a film scan. 8 cameras.

by
Drop a photo, get it back as a film scan. 8 emulated cameras (Contax T2, Leica M3, Pentax 67, Polaroid SX-70, Yashica T4, Mamiya 7, Plaubel Makina, Moriyama era Nikon F) each with its own per pixel rendering pipeline calibrated against real film datasheets. Not LUTs. Runs entirely in your browser, no upload, no signup. Free Contax T2 unlimited. $29 one-time unlocks all 8 forever.

Add a comment

Replies

Best
Cuneyt Ozturk
Maker
📌
Hey PH 👋 I built FAX OFFICE 1987 because VSCO went subscription, Lightroom film preset packs cost $50–200 each, and Dehancer is $89–349 inside Final Cut. None of them let me just drop a photo and see what a Contax T2 would have done with it. So I built that. Solo dev, ~6 months. The whole thing is one HTML file, vanilla JavaScript, Canvas 2D no WebGL, no shaders, no framework. Each of 8 cameras is its own per-pixel pipeline (~80–200 LOC), calibrated against real film stock datasheets. Tonal curves from datasheets, RMS grain values, halation modeled as luma-gated red-channel Gaussian bloom. The hardest part was halation the warm bleed around highlights. Without it, every output reads as Instagram filter. With it, real film photographers stop bouncing in 3 seconds. ~30 lines of code, biggest delta in the whole project. The other constraint that shaped everything: privacy first. I didn't want to handle photo uploads. No S3 bills, no GDPR scope, no users wondering if I really deleted their stuff. That single decision pushed everything client-side and ended up as the cleanest line on the homepage: your photo never leaves your device. Free tier is the Contax T2 + Fuji Superia 400, unlimited, no signup. The other 7 cameras (Leica M3, Pentax 67, Polaroid SX-70, Yashica T4, Mamiya 7, Plaubel Makina, Moriyama-era Nikon F push) give you 3 free trial develops each, then $29 one-time unlocks all 8 forever. Honest limits: B&W cameras still differentiate less than I want at thumbnail size, no live preview while sliding (full re render per change), HEIC handling on iOS Safari is occasionally flaky. Would love feedback especially from anyone who actually shoots film. Brutal takes welcome. "That's not how Velvia handles magenta" is exactly the kind of comment I'm looking for. Thanks PH 🙏