Caffenol
A photo editor you can get wrong
- Filed
- 2026.07.26
- Client
- Personal Project
- Extent
- 2 min,318 words
- Subject
- Design,Interaction Design,WebGPU
Caffenol is a darkroom toy. You load a photo, develop it into a negative in a simulated tank, then print it under a timed enlarger exposure, dodging and burning by hand. It runs in the browser on raw WebGPU.
The premise
Film simulation usually ships as a preset. Pick a name off a list and the look is applied, the same way every time. All the decisions that make darkroom work interesting have already been made by someone else.
Caffenol simulates the process instead of the look. Stock, developer, dilution, temperature, agitation, and the moment you pull the roll each move the result, and none of them can be undone. You find out what you have when the negative comes out of the tank.
The experiment
The chemistry is a real simulation: coupled density and activity fields model exhaustion, diffusion, bromide drag, and agitation, with the characteristic curve shared between TypeScript and WGSL.
Every second changes the result. Going short risks and underdeveloped negative, and too long can create harsh effects. Redeveloping is easy.
Organic results
Defects are legal. Skip the stop bath and the developer keeps working, so you get streaks. Skip the wash and you get bubble spots. Shock a warm emulsion with cold chemistry and it reticulates. The panel tells you the cost up front, then lets it happen. A defect you chose on purpose is a creative decision.
Each stage has an element of randomness, creating subtle and chaotic variations between prints, much like darkroom printing. Without the paper waste.