BRANTHOLM · Journal

Every photograph here is printed at one grade

2026-01-08 · Making · 6 min read

A contrast grade is a slope, not a filter. Fixing the slope for a whole site is what stops a portfolio looking like a moodboard — and the only way to prove it is to ship one plate that never went through it.

A portfolio is a set of photographs of other people’s things. Left alone, that set has no character at all: eighteen pictures taken by eighteen photographers in eighteen kinds of light. The usual fix is a preset, applied by eye, to most of them.

We fixed it the way a darkroom does. Photographic printing paper is sold in numbered contrast grades, and a grade is not a look — it is a slope on the paper’s characteristic curve. Grade 0 is soft, grade 5 is hard, and the same negative printed on two grades differs by that slope and by nothing else.

The whole treatment is one line

The grade

L_out = clamp( PIVOT + GRADE x (L_in - PIVOT), 0, 100 ) — after chroma has been driven to zero.

PIVOT = 46. GRADE = 1.85. One pivot and one slope for the entire site.

That is all of it. Chroma to zero, lightness through a fixed slope about a fixed mid-grey, clipped at both ends the way paper clips. Below L* 21.1 everything goes to black; above L* 75.2 everything goes to paper. The blank shadows are not a mistake, they are what a hard grade is for.

It is in the bytes, not in the browser

There is no CSS filter anywhere on this site and there must not be one. A filter is applied by a stylesheet, and a stylesheet is edited by people — it takes one refactor for a rule to stop matching one image in twenty, and nothing tells you. Bytes do not drift.

So the grade is baked into the shipped WebP files by a script, the ungraded masters are kept beside them, and a second script reads the shipped files back and recovers the slope by least squares. It does not read the grade script’s arithmetic; it decodes the file that a visitor downloads. If the grade ever stopped being applied, the recovered slope would fall to 1.00 and the build would fail.

And one plate that never went through it

A rule you cannot see broken is a description, not a rule. So one project ships without the grade, in the same index as the others: Ninebark is a colour system for a plant nursery, and a hard-grade black-and-white plate of a colour system is a picture of nothing.

Same crop, same box, same encoder, grade removed, nothing else changed. Measured off the shipped file it recovers a slope of 1.00 and a mean chroma of 46.5, against 1.85 and under 0.02 for the other seventeen. The harness requires it to differ — a control that cannot fail is not a check.

Why bother

Because the alternative is a moodboard. Eighteen photographs that merely resemble each other because one person picked them in an afternoon will fall apart the moment a nineteenth is added by somebody else. Eighteen photographs put through one operation will not, and the operation is four lines long, so the next person can run it.

The curve is drawn on the Process page, from the same two constants the script uses.

Tell us what you are making

Identity, print or wayfinding. Six weeks, one fixed fee, and artwork you own outright.

Start a project

Everything in the journal