How we design ·

A study of our type.

You know the difference between a menu you can read at a glance and one you have to squint at. Every piece of type on this website is set below as itself, at its real size, with the reason it’s set that way: three typefaces, one ladder of sizes and one rule for the space between lines. Nothing was chosen by eye and left there.

I · The faces

Three typefaces, each with one job

A typeface, or face, is one design of letters. We use three, and like the people in a good kitchen, each has one station and never cooks at another’s. That alone settles most questions before anyone has to ask them.

Archivo
Titles and headings. A grotesque, the plain, sturdy kind of letter without the small feet called serifs, drawn by Héctor Gatti at the Argentine foundry Omnibus-Type and released in 2012. It has the weight and plainness of a poster, and it is free for anyone to use.
Atkinson Hyperlegible Next
Everything you read. Made by the Braille Institute for readers with low vision, with letters drawn so that none can be mistaken for another. We chose it because a typeface that works for people who struggle to read works well for everyone else, too.
Atkinson Hyperlegible Mono
Labels, numbers, dates and sources. The same family, monospaced, meaning every letter takes the same width, so the labels feel related to the reading text while looking clearly different from it.

II · The scale

Every size is a rung on one ladder

Aa10Aa16Aa10 + 16 = 26Aa16 + 26 = 42Aa26 + 42 = 68Aa42 + 68 = 110, set at 108
Our type sizes, every second step. Each is the two before it added together, to within a grid line.

A ladder is easy to climb because nobody placed its rungs by eye. There are thirteen type sizes on this site, and no others. Each is about 1.27 times the one below it, the square root of the golden ratio, so every second rung is the golden ratio itself.

That gives the ladder a useful property: from the reading size up, each size is very nearly the two sizes two steps below it added together. Sixteen and twenty-six make forty-two. Every size also has to sit on a grid of 4px units, with half-pixel steps for type, so the steps are close to the ratio rather than exact. The widest miss is 3.2%.

Sizes change in whole steps at five named screen widths, never smoothly. A size that grew continuously with the window would spend most of its life between the rungs.

--text-8xl136--text-6xl84--text-4xl52--text-2xl322012.5
Every second rung at its own size, each in a square three times as large. The squares tile a golden rectangle down to 20; the red mark is where 12.5 runs half a pixel over.

The ladder, as set

Leading is the space from one line to the next; the rule column is what the golden rule for it gives. The largest sizes are set only in capitals, which have no tails below the line, and run tighter.

TokenSizeStepLeadingRuleUsed for
--text-xs10px—16pxown, 1.5On the ladder, kept in reserve
--text-sm12.5px×1.25020pxown, 1.5Labels, captions and sources
--text-base16px×1.28024pxown, 1.5Interface text: buttons, form fields, short notes
--text-lg20px×1.25032px32px ✓Reading: every paragraph of argument
--text-xl26px×1.30036px36px ✓Third-level headings
--text-2xl32px×1.23144px44px ✓Second-level headings
--text-3xl42px×1.31352px52px ✓Display titles on phones; homepage headlines
--text-4xl52px×1.23864px64px ✓On the ladder, kept in reserve
--text-5xl68px×1.30880px80px ✓Display titles from 640px
--text-6xl84px×1.23580px96px, set tighterHomepage poster, phones
--text-7xl108px×1.286100px120px, set tighterHomepage poster, 1024px
--text-8xl136px×1.259124px144px, set tighterHomepage poster, 640px and 1280px
--text-9xl172px×1.265156px180px, set tighterHomepage poster, 1440px

III · The leading

One rule for the space between lines

Lines of text are like rows of seats: too close and they feel cramped, too far apart and you lose your place. Printers call the distance from one line to the next leading. Ours is the type size multiplied by φ raised to the power of twenty over the size, rounded to the 4px grid.

leading = size × φ20 / size

At our reading size, 20px, that is exactly φ, a line of 32px. As the type grows, the multiplier relaxes toward one, so headings sit closer together than body text. The point is the gap a reader actually sees: the air between one line and the next stays near 12px at every size (40 on 52, 52 on 64, 68 on 80) instead of swelling with the letters, so the rows feel equally roomy whether the type is small or large. A careful typesetter used to do this by hand.

On reading pages like this one there is a second rule, the reading rhythm. Every baseline, the invisible line the letters sit on, lands on one grid, a reading line apart, the way a book page is set. Each block keeps its own leading; the space between blocks grows, by never more than a line, until the next baseline lands. The grid button at the top shows these lines on the whole page. Here they are always on, and they line up across both columns.

A computer checks the rule, and every other rule on this page, each time the site is built. If anyone sets a size that is off the ladder, or a leading the rule does not give, the build stops and says which line of which stylesheet is wrong.

20 / 32Rows ofseatsAIR 12AT 1.5: 1040 / 52Rows ofseatsAIR 12AT 1.5: 2052 / 64Rows ofseatsAIR 12AT 1.5: 2668 / 80Rows ofseatsAIR 12AT 1.5: 34
The same rows at four sizes, at true size. The yellow is the air between one row’s letters and the next: 12px at every size. A flat line height of 1.5 would leave more and more as the type grows.

IV · Every piece of type

Seven settings, and the reason for each

Seven settings cover every word on this website. Each sample below is set with the site’s own styles, so what you see is the real thing.

Make good work.

.gc-display
Display: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceArchivo, weight 900font-family, font-weight
Size and leading68 / 80 from 640px; 42 / 52 belowfont-size / line-height
Letter spacing−0.045emletter-spacing
Word spacing+0.08emword-spacing

01 Display

A page title is read once, from a distance, as a shape. Archivo is a grotesque with nineteenth-century bones, sturdy enough to carry a whole sentence at poster size without looking shouty.

Big type looks loose at its natural spacing, because the gaps grow along with the letters, so we pull the letters in by 4.5% of their size. Tightening letters tightens the spaces between words too, so we give the words a little back and they stay words.

On a phone the title drops by whole steps of the ladder, from 68 / 80 to 42 / 52, rather than shrinking smoothly. A size that shrank smoothly would spend its time between the rungs; whole steps keep every size on the ladder.

Three typefaces, each with one job

.gc-h1
Section heading: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceArchivo, weight 800font-family, font-weight
Size and leading40 / 52font-size / line-height
Letter spacing−0.01emletter-spacing

02 Section heading

This is the one size set off the ladder, and on purpose. It is measured against the lines of reading text instead: two lines of body text are 64px, and 40 is to 64 as 5 is to 8, the golden ratio in whole numbers.

A slightly lighter weight than the display keeps a heading from competing with the title above it. We measured its tightest common letter pair, and at −0.01em they still sit 0.015em apart, so no two letters touch.

One rule for the space between lines

.gc-h3
Second and third headings: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceArchivo, weight 800font-family, font-weight
Second level32 / 4432 / 44
Third level26 / 3626 / 36

03 Second and third headings

Each heading level is one step down the ladder from the last, so you can see which heading sits under which without a single size chosen by eye.

The space between their lines comes from the same rule as everything else on the page. Lines of large type sit closer together than lines of small type, so that the air between lines stays close to the same.

Look at the middle of a sunflower. Each new seed grows a fixed turn around from the last, about 137.5 degrees, so the seeds never line up behind one another, and the head packs tight with no gaps.

.gc-text
Reading: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceAtkinson Hyperlegible Next, weight 350font-family, font-weight
Size and leading20 / 32, the golden ratio itselffont-size / line-height
Letter spacing+0.05emletter-spacing
Word spacing+0.02emword-spacing
Measure624px, about 65 characters a linemax-width624px, about 65 characters a line
ColorFull ink, never graycolorFull ink, never gray
Lookatthemiddleofasunflower.Eachnewseedgrowsafixedturnaroundfromthelast,about137.5degrees,sotheseedsneverlineupbehindoneanother,andtheheadpackstightwithnogaps.
The sample above, set the way it describes: each letter 137.5° around from the last (the purple arc), every size a rung of the ladder.

04 Reading

The Braille Institute commissioned Atkinson Hyperlegible for people with low vision, and drew it with a panel of readers who have it. Letters that are easily confused, such as a capital I, a lower-case l and the number 1, are drawn to look unmistakably different. The 2025 edition, Next, added weights and the monospaced companion we use for labels.

We set it a little lighter than the regular weight, at 350, because at 400 its strokes came out heavier than the fonts it replaced. We measured the gaps: 0.05em of extra letter spacing makes the gap between letters about a third of a letter’s width, the spacing the British Dyslexia Association recommends, and the space between words stays at least three and a half times that.

Twenty pixels on thirty-two is 5 : 8. Six hundred and twenty-four pixels of it holds about 65 characters, the middle of the range typographers have recommended for a comfortable line since long before screens.

A lead paragraph is set at exactly the same size and in the same full ink, rather than a size larger. There is one reading size on this site, so the eye never has to adjust between the introduction and the argument.

Your email address

.gc-typestudy__interface
Interface: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceAtkinson Hyperlegible Next, weight 350font-family, font-weight
Size and leading16 / 24font-size / line-height

05 Interface

Text that you scan rather than read, such as buttons, form fields and short notes, uses the conventional 16px on 24, a line height of 1.5. Below reading size the golden rule would set lines too tight, so small text keeps this looser spacing.

Sixteen pixels is also the smallest size an iPhone accepts in a form field without zooming in when someone taps it, which can throw the whole page off to one side.

The rule is not there to replace the eye. It gives the work a steady edge.

.gc-pull
Pull quote: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceArchivo, weight 800font-family, font-weight
Size and leading32 / 36font-size / line-height
Measureφ⁵, about 11emmax-widthφ⁵, about 11em
MarkA hairline above and belowborderA hairline above and below

06 Pull quote

A pull quote is a sentence the page stands behind, so it is set as a statement: in the heading face, at a heading’s size and measure, between two hairlines. Nothing marks it in the margin, and nothing is set in italic.

II · The scale

.gc-apparatus
Apparatus: its settings, the CSS each one is, and each shown as set
SettingCSSAs set
FaceAtkinson Hyperlegible Mono, weight 500font-family, font-weight
Size and leading12.5 / 20, in capitalsfont-size / line-height
Letter spacing+0.12em, or +0.06em in captionsletter-spacing

07 Apparatus

Think of the signs in a library: the shelf numbers aren’t the books, but they help you find them. On this site, anything that names or measures the content, rather than being the content, is set in the monospaced face, small, in capitals and spaced out. We call it apparatus: section numbers, dates, labels, sources and captions.

A monospaced face is already evenly spaced, so it needs much less extra spacing than capitals in a proportional face would. Past about 0.14em, words stop reading as words.

Because apparatus is always set this way, a reader learns within a page or two to skim past it, or to look straight for it, the way you stop noticing shelf numbers until you need one.

V · Why it matters

Type is how a page treats people

Most people never notice type that is set well. They only notice that they kept reading.

The people who notice type that is set badly are the ones it leaves out: a reader with low vision squinting at gray text, a dyslexic reader losing the line in a paragraph that runs too wide, an older reader whose phone made the letters smaller than they can see. Every setting on this page is a small decision in their favor.

We wrote the rules down and let a computer keep them so that the decision is made once, carefully, and never quietly undone. The story of the proportion behind it is in The golden ratio, without the legends.