longform design system

A system distilled from 13 reading experiences / v1

Design for the reader who is still reading.

Longform earns attention it never gets to demand. This system is the small set of rules the best reading experiences share — how long a line runs, how much air a page breathes, and the one most pages get wrong: giving the eye somewhere to rest.

13 sites measured 7 pillars built to be copied tokens at the end
01

Visual cadence — the law most pages miss

Every longform site in this study, no matter how different it looks, gives the reader a visual beat every one to three screens. A photo, a diagram, a chart, a pull-quote — something that is not a paragraph. This is not decoration. It does two jobs at once: it rests a brain that has been decoding text, and it re-anchors the reader's imagination to what the author actually meant. It turns "staring at a wall of text" into "moving through a story."

A wall of text Paced with visual beats diagram / chart pull-quote
The same words, two rhythms. On the left the reader has no exits; on the right the eye lands somewhere every few paragraphs. Same content, very different willingness to finish.

What a visual beat is for

Give every visual a job. If it has none, cut it — a decorative stock photo reads as filler and costs trust. The five jobs, from the study:

// orient

Orient

A hero or establishing image sets place and tone before the argument starts. UNSW and Honda open on a full-bleed scene.

// explain

Explain

A diagram or chart that carries the claim the prose only summarises. Stripe's architecture figures, OWID's charts.

// rest

Rest

A contained figure that simply breaks text density and keeps the scroll rhythm. Tubik, NN/g, Elle.

// ground

Ground

A photo that anchors an abstract point to something concrete and real, so imagination doesn't drift.

// delight

Delight

An illustration that carries voice and personality. Wait But Why's hand-drawn sketches disarm and clarify at once.

How much is enough?

The sites sit on a spectrum, from charts outnumbering paragraphs to none at all. More visual is not automatically better — the right density depends on how much of the argument is quantitative or spatial. But every one clears the floor: a beat at least every few screens.

Significant visuals per 100 paragraphs The Pudding 367 — viz > text Our World in Data 27 Stripe 26 Wait But Why 14 (clustered) Notes on Remix 3 0 — typographic rests only Measured from rendered pages. Pudding bar truncated; label shows true value.
The density spectrum. Quantitative arguments (Pudding, OWID) carry more of the load in visuals; a pure essay (Notes on Remix 3) paces with type alone. Both are valid — neither is a wall.

The rule generalises past editorial. An AI-generated explainer, an audit report, or a research summary is longform too, and it fatigues a reader the same way. When there are no photographs to reach for, you manufacture the beat — a generated diagram, a summary box, a severity chart, a callout, a table. Section 07 works that through.

02

Measure — the master lever

The single most consistent trait across all 13 sites is line length, not font choice. Aim for roughly 45–75 characters per line on desktop and ~40 on a phone. Too long and the eye loses its place returning to the next line; too short and rhythm breaks. When a column must run wide, buy it back with more leading.

This line is held to about 34em. Your eye returns to the start of each line without hunting, which is exactly why it feels effortless to keep going.

// ~60 characters per line — comfortable

This line is allowed to run the full width of its container, which on a wide screen becomes a long, tiring sweep where the eye has to travel a long way back to the left edge and often lands a line above or below where it meant to, which is the small friction that makes people quietly give up.

// 100+ characters per line — the eye loses its place

// desktop

540–835px column

The whole study lives here. Narrower for essays, wider only with high leading (NN/g runs 835px at 1.85 leading).

// mobile

~40 CPL

Two ways to get there: shrink the body (20→16px) or hold the size and let the column narrow. Both land near 40.

// token

max-width: 66ch

Set the reading column in ch units so measure holds as the font changes.

03

Leading, type & scale

Body line-height runs 1.5 to 1.85. The more a page wants to feel authoritative and be read slowly, the more air it puts between lines. Pair a display face with a body face deliberately — the pairing carries the personality, the body stays quiet.

The four pairings that recur

// editorial

Serif display + sans body

Tubik, Shorthand. A high-contrast serif headline over a calm humanist sans.

// scholarly

Sans display + serif body

NN/g, OWID. The inversion reads as trustworthy and academic.

// warm

All serif

Postcards by Elle. One serif family across roles, held together by colour temperature.

// direct

All sans / condensed

Honda, UNSW, Penguin. One sans worked hard across weights and widths.

A working type scale

displayReading, by design
h1The section it belongs to
h2A quieter subhead
bodySet the body at 18–20px with 1.6–1.75 leading. Everything else is a ratio away: the display is a leap, the subhead a step, the caption a whisper.
captionA caption or a meta label, in the utility face.
04

Colour & ink

Two findings surprised the study. First, the best body text is rarely pure black — it's a very dark slate, navy, or warm brown, which reads softer over a long session. Second, restraint wins: most pages spend on a single rationed accent and let it mean something.

ink #14161A
slate #425466
navy #1D3D63
brown #5D4C37
paper #FCFCFB
accent #5B4EE9
// emotion

Four ways to make it feel

Warmth from temperature, boldness from colour-blocks, drama from dark + photography, calm from mono + one accent.

// contrast

≥ 4.5:1, always

Body text over any background must clear WCAG AA. Text over an image needs a scrim to guarantee it.

// ration

One accent, spent rarely

Links, one mark, a rule. Use it everywhere and it stops meaning anything.

05

The visual-rest kit

These are the beats you reach for when you have no photograph — the devices that pace a text-only read. Each one is a place for the eye to land. All rendered live below.

Drop cap + lead

Reading is expensive. The reader is decoding symbols into meaning line after line, and a good page keeps paying that cost back — with air, with rhythm, and with somewhere to look up.

Pull-quote
A visual that merely repeats the text is worse than none. Each beat must advance or anchor the meaning.
Callout / aside
i

Callouts lift one idea out of the flow. Use them for a warning, a definition, or a "if you remember one thing" — not as a dumping ground.

Data table (scrolls on mobile)
DeviceBodyLeadingMeasure
Desktop18–20px1.6–1.7545–75 CPL
Mobile15–18px1.5–1.6~40 CPL
Code / monospace block
.reading {
  max-width: 66ch;   /* measure */
  font-size: 1.125rem;
  line-height: 1.7;  /* leading */
}
06

Responsive & accessible by default

// meta

Ship the viewport tag

Every responsive rule depends on <meta name="viewport">. Missing it silently kills the mobile design.

// fluid

clamp() the scale

Type and spacing scale between phone and desktop with one rule, no breakpoint jumps.

// overflow

Body never scrolls sideways

Wide tables, diagrams and code scroll inside their own overflow-x box.

// focus

Visible focus, real alt

:focus-visible on every control; figures get captions; SVG gets a role="img" label.

// motion

Respect reduced-motion

Scroll effects and reveals are enhancements; they never gate content, and they stop under prefers-reduced-motion.

// contrast

Colour is never the only signal

Pair colour with a label, icon or shape so it survives colour-blindness and greyscale.

07

Applied: AI content & audit reports

The reason this matters beyond magazines: most longform now is generated — model output, audit findings, research digests, release notes. It arrives as a wall of competent prose, which is exactly the failure mode. Give it the same cadence. You almost always have material for a beat; you just have to build it.

// orient

Lead with a summary box

One boxed paragraph of "what this is and what to do" before the detail. The reader orients before they invest.

// explain

Generate the diagram

A flow, a before/after, a system sketch as inline SVG. If a sentence describes a structure, draw the structure.

// rest

Chart the numbers

Any counts — severities, deltas, coverage — become a small bar or donut. A chart is a rest and a summary in one.

// signpost

Callout per finding

Each finding gets a severity chip and a one-line "why it matters", so the page is scannable, not just readable.

Worked example — the same audit, paced

SECURITY AUDIT · api-gateway2026-07-12
Summary. 12 findings across 4 services. 1 critical (auth bypass on /internal), 3 high. Ship the critical fix before release; the rest can follow this sprint.
Critical1 High3 Medium5 Low3
A severity chart is a rest and a summary at once. The reader sees the shape of the risk before reading a single finding.
!

Critical — auth bypass. /internal/* trusts a client header for identity. Anyone can set it. Fix: verify the signed token server-side; ignore the header.

Nothing above is decoration. The summary orients, the chart shows the shape of the risk, the callout makes the worst finding impossible to miss. That is the whole system, applied to the least glamorous longform there is.

08

Tokens

Copy-pasteable starting point. Swap the accent and fonts for your brand; keep the measure, leading and cadence.

:root{
  --measure: 66ch;        /* 45–75 CPL desktop */
  --body-size: 1.125rem;  /* 18px; 16px on mobile */
  --leading: 1.7;         /* 1.5–1.85 */
  --ink: #14161A;         /* not pure black */
  --paper: #FCFCFB;
  --accent: #5B4EE9;       /* one, rationed */
  --serif: "Fraunces", Georgia, serif;
  --sans: "Inter", system-ui, sans-serif;
  --mono: "IBM Plex Mono", monospace;
}
/* the one law: a visual beat every 1–3 screens.
   no photo? build one — diagram, chart, pull-quote, callout, table. */

See the law in practice: No. 09 — The Composite is a full article built entirely on this system, and the library shows all 13 sources it was distilled from.