CAFFENOL

INTRODUCTION

Caffenol is a darkroom toy, built on film development and darkroom craft. You load a photo and develop it into a negative in a simulated tank. Then you print that negative under a timed enlarger exposure. You shape the light by hand with cut cards that you wave over the paper.

The process is slow, and every step can make a new result. The pleasure is in the work, and the export is worth keeping, even when the first try is wrong.

There is no correct way to use Caffenol. Bend the system, and break it, until it works for you.


THREE STAGE WORKFLOW

Photos run through three stages: the bench, the tank, and the enlarger.

STAGE 1: THE BENCH

The bench is a light table. Use it to import photos, or to examine negatives that you developed before.

The house roll

A fresh bench is not empty. A contact sheet of three frames lies on the glass, stamped DEVELOPED FOR YOU: the house roll, the three starter scenes already run through the tank so the first click can go straight to the enlarger.

The three frames were developed three ways on purpose, and the rebate edge of each reads its recipe:

Click a frame to print it. The first click on a frame fetches its source and regenerates the negative from its recipe and seed (a few seconds, and the bench says so), then it goes under the lamp like any negative. Drop the whole sheet in the tank to develop all three again your own way.

The sheet is furniture until you touch it: nothing is saved until a frame is taken, the sheet is moved, or a line is written on it. The scissors on any frame bin the whole house roll while any frame is still untouched, with UNDO for a moment; a binned house roll stays binned. Once every frame has been touched it is a roll like any other, and the scissors cut one frame at a time.

The house roll leaves the drawer open beside it. It appears only on a bench with no negatives of your own, and stays once touched.

The house roll on a fresh bench: a three frame contact sheet stamped DEVELOPED FOR YOU, above the open film drawer

Loading a photo

Three ways to load:

  1. YOUR PHOTOS: the loading key on the bezel, beside the drawer face. Click the key to pick a file, or drag a photo from your desktop onto any part of the bench.
  2. Starter rolls: sealed cassettes in the film drawer (PATIO 01, BLOOM 05, SEAWALL 20). Click a cassette to load and develop it, or drag it to the tank dock.
  3. Straight into the tank: drag any cassette onto the tank dock; the develop stage starts.
The open film drawer on the bench: three sealed starter cassettes above the YOUR PHOTOS key and the drawer face

Accepted formats: JPEG, PNG, TIFF, and camera raw (DNG, CR2, CR3, NEF, ARW, RAF, ORF, RW2). A raw file loads from its embedded preview. HEIC is not supported; a raw file with no embedded preview cannot be read. Export a JPEG first for either case.

You won't see what's on the negative until it's developed.

Scanned negatives

Caffenol does a quiet test on every upload. If the file looks like a developed negative scan, Caffenol skips the tank and lands it on the glass, ready for the enlarger. If the test is unsure, the photo takes the usual path.

ALREADY A NEGATIVE in the tank sends the scan straight under the lamp when you know it came through as a scene. Works for uploads only, and only before you pour.

The negative shelf

The shelf shows your negatives.

The shelf survives a reload; negatives and print sessions persist in the browser's IndexedDB. Caffenol holds only one working negative in full; the rest of the shelf keeps a small preview until you put it on the bench.


STAGE 2: THE TANK

You build a recipe, pour, agitate (or not), and pull the film when you like. Development runs live, and you can cancel it at any instant.

FILM: the stock

The roll that you shot on. Each stock has its own characteristic curve (contrast, toe, shoulder) and grain. Grain comes from the film; the developer only shapes it, so every film and developer pair gives a distinct texture. Step through the shelf with the prev and next keys, or swipe the window.

The FILM window on the tank console, with PRESS 400 loaded and the prev and next keys beside it

Black and white stocks, always available:

STOCK TRAIT CHARACTER
HALO 250 SOFT CINE GRAYS Cinema stock. Long sweeping toe, gentle shoulder, silvery grays that never quite reach black. Rounded, handsome grain.
PRESS 400 FORGIVING WORKHORSE The reportage all-rounder. Soft shoulder holds highlights forever, takes a push with grace.
FLEX 125 SLOW, FINE GRAIN Slow and fine, a touch more spine through the mids. Classic landscape and portrait polish.
MONO-X 400 GRITTY STREET Crunchy toe drops shadows fast, gritty assertive grain that loves an edge developer.
EURO 100 FOGGY, SOFT COAT Old-world budget charm. Extra base fog, coarse lovable grain, a soft coat that mottles in the pour and crazes under a shock.
MAXI 100 SHARP, CLIPS HOT Modern tabular grain, near grainless and razor sharp, but the hard shoulder clips. Sings only when exposed generously and developed short.
ORTHO 80 BLIND TO RED Blind to red, generous to blue. Lips, brick, and rust go black, skies go empty. Fine even grain.

The color and slide stocks are a separate lab (see COLOR AND SLIDE below): MEADOW 160, CARNIVAL 400, VISTA 100, and the LANTERN 100 slide.

ORTHO 80 and the color stocks require color channels in the negative.

CHEMISTRY: the developer

Three bottles on a rack. Step through them with the keys beside the window; the wedge under each name is the negative that bottle leaves, from bare base to the deepest density, as it will look on the light table.

Dilution alters the mix. A cut mix works more slowly: stronger edge effects, sharper grain, tamed highlight contrast.

Stop bath and wash are toggles; the panel states the cost of skipping either before you commit.

The CHEMISTRY module with the MIX plate open: the bottle rack, the three dilutions, and the stop bath and wash toggles

BATH: temperature

A hotter developer works faster and coarser; colder works slower and thinner. The chemistry follows a time and temperature law. The CHART readout updates as you move the dial, estimating how long this recipe needs to reach full development.

The TEMPER mark is the process base.

A temperature too far from the base shocks the emulsion. A cold bath on a warm coat crazes it into a vein network (reticulation). The interface lets you know when you're in the danger zone.

The BATH fader seated on the TEMPER mark at 68 F, with the danger band printed in safelight red toward the hot end

EURO 100 emulates a softer coat, and will show reticulation.

The temperature scale follows the process of the loaded stock (B&W, C41, E6). Black and white sits around room temperature (base 68 F, range 62 to 86). Color processes run hot and narrow around their own base.

CLOCK: time-lapse

TIME-LAPSE ×8 runs the soak at eight times speed. Toggling during development does not change the result.

The CLOCK module with the TIME-LAPSE ×8 switch

Developing

POUR AND START begins development. The negative reveals itself under the safelight as it develops. Two controls shape the result:

The POUR AND START key, with the chart estimate for the recipe under it
The HOLD TO AGITATE key on the tank
The PULL AND FIX key mid soak, with the TIME-LAPSE ×8 switch still reachable above it

Every negative inherits a faint pour mottle. A seeded minority also shows drying marks.

Processes

The stock decides the process.

When the negative is developed, TO ENLARGER takes a negative to print and TO LIGHT TABLE takes a slide to the bench. DEVELOP AGAIN resets the recipe.

The fixed tank plate: the recipe it ran, the amber TO ENLARGER key, and DEVELOP AGAIN under it

STAGE 3: THE ENLARGER

You project the negative onto paper under a timed exposure and shape the light by hand. Light accumulates on the paper in every frame. A dodge card withholds it; that area prints lighter. The hole in a burn card adds it; that area prints darker. At stop, the paper curve maps the accumulated exposure into a positive.

PAPER: the stock

The box that the sheet comes from. Sets the material, base tone, maximum black, surface sheen, and tooth.

BOX TRAIT CHARACTER
Test Print INK BLACKS, WET SHEEN The modern trade sheet. Coldest, deepest, near textureless. A print taken at its word.
Christmas Gift MATTE, VELVET GRAYS Velvet diffuse. No glare, no favorites, blacks that stop short and do not apologize.
Gallery WARM BASE, TOOTHY The gallery classic. Warm bone base, brown-black depths, an air-dried fiber tooth you can feel with your eyes.
Book COLD TONE, STEEL BLACKS Old bromide manners. Steel-blue blacks on a cool base, matte-leaning fiber with a fine visible grain.

Two more boxes live in the color lab (see below): the Postcard RA-4 color sheet and the Slide Print direct positive sheet.

Each box carries a small step wedge in its own tint, paper white to its black. Under the safelight the easel shows a dim estimate of the sheet at the dialed seconds, so a step of the box, the grade, or the clock shows on the easel before any paper is spent. Once the exposure starts, the estimate follows the light you are actually laying down.

The PAPER window on the enlarger console, with the Test Print box loaded

GRADE: contrast

The grade is a contrast number on the multigrade ladder, from 0 (soft) to 5 (hard). Low grades open the tonal range and hold detail everywhere. High grades crush the image toward pure black and white. A thin, underdeveloped negative needs a higher grade; a dense, overcooked one should go lower.

The GRADE window on grade 2, with the ladder printed from SOFT to HARD under it

EASEL: turn, rotation, slide, and blades

The rotation slider sets the sheet angle, plus or minus 45 degrees, with a click at zero. Use it to correct a horizon or to lean the image deliberately.

TURN below the baseboard stands the sheet up a quarter turn, so a portrait frame prints upright instead of on its side. The paper takes the turned shape: a landscape negative turned once prints edge to edge on a portrait sheet. Four presses come back around, so an upside-down frame can be righted too. The readout shows the turn next to the angle. Turning clears any cards on the easel, since a card cut for one shape of sheet is no use on the other, and it goes dead once the exposure starts. NEW SHEET unlocks it again.

The baseboard shows the easel from above. The dashed rectangle is the projection area and never moves. The pale rectangle is your paper. Push the paper up to half a frame in any direction; release near center to snap it back to square. The slide is not a crop: the image appears elsewhere on the paper. Paper outside the projection area gets no light and comes out bare white.

Turn on the lamp to preview the paper. Sliding or rotating during an exposure smears the print.

Four blades come in from the edges and crop the print. Every sheet starts with a thin rim because the blades rest on the paper to hold it flat.

Drag the blades on the sheet. Each blade covers up to a third of the frame. Dodge and burn cards over a blade remain movable. The baseboard updates in real time.

RESET beside TURN returns the easel to its default: square, centered, blades open. Active only after something moves. It leaves the turn alone: the turn is the composition, not a drift.

The EASEL module: the rotation slider detented at zero, the baseboard plan with the paper square under the beam, and TURN and RESET below

Turn the lamp on to position the blades against the projected image. Blades lock when the exposure starts. Rotation and slide never lock.

EXPOSURE: the window

The focometer key row controls the exposure: time down, lamp, expose or stop, and time up.

The EXPOSURE window: the timer dial set to 12 seconds over the focometer key row

Dodge and burn by hand

During the exposure window, wave physical cut cards over the paper.

  1. Cut a card: press ✂ DODGE or ✂ BURN to start a cut. Click or tap corners to draw a closed polygon over the paper. A card needs at least three corners. CLOSE CUT, Enter, or the first corner again lands the card. SCRAP IT or Escape abandons it.
  2. A DODGE card withholds light where you hold it; that area prints lighter. A DODGE card leaks a little light.
  3. A BURN card is the inverse: a hole adds light through it; that area prints darker.
  4. Wave it: pick the card up and move it while the timer runs. Edge softness is bound to pointer speed. Hold still for a hard edge; wave for a feathered falloff. Faster hands feather wider. Touch input gets its own smoothing; a resting fingertip does not flutter the edge.

Caffenol records the whole path of every card: time, position, and speed. A print session is reproducible. CLEAR CARDS removes them all.

The CARDS box that floats over the easel, with the DODGE and BURN cutters

On a phone the cards live in the console drawer. The CLOSE CUT and SCRAP IT keys dock on the stage, where the corners land.

After the print

The preview shows the print with its metadata: the negative and the exposure time.

SCRAP IT marks a print you would not keep, and asks why. The verdicts feed the tuning of the process.


COLOR AND SLIDE

The color lab is still in beta. When enabled, color film stocks appear in FILM and color paper boxes in PAPER.

Color film

The enlarger HEAD

The head switches between two modules. Cross-process printing requires this switch.

The HEAD module with the switch on B&W, COLOR printed in its three inks beside it

The dichroic head is dual-purpose.

Color paper

For color paper, you'll see dye passes: CYAN PASS, MAGENTA PASS, and YELLOW PASS. The intensity of each pass can be adjusted on the dichroic head.


ANSEL, THE DARKROOM ELDER

Ansel sits in the bottom right of the darkroom. He is the printer who came with the building, ran it before you arrived, and made most of your mistakes first. He respects the work more than the result.

Ansel on his amber monitor, mid sentence, with the OFF key on the bezel

He speaks when you summon him and when you poke his face. He also speaks when your recipe or result warrants a word: a large temperature shift, a hard push, a blown exposure, a promising accident, or a print worth keeping.

He walks you through the core loop once on the first session in a new browser.

OFF dismisses him. CALL brings him back.


KEYBOARD AND GESTURE REFERENCE

INPUT WHAT IT DOES
Click or tap corners Place a dodge or burn card's corners
Enter Close the current cut
Escape Abandon the current cut
Click the first corner Also closes the cut
Hold HOLD TO AGITATE Agitate the tank while you hold the key
Shake the device Agitate, where motion input works
Drag a dial window Spin a dichroic filter dial
Drag a negative Rearrange it on the light table
Click a contact sheet Lift the whole sheet to the light, and lay it down
Click a sheet's header Write the roll's name, date, or file number
Drag to a dock Carry a roll to the tank, a negative to the enlarger
Swipe the shelf window Step through films, papers, or grades
Backtick (`) Toggle the hidden tuning panel (power users)