Blog · October 22, 2026

Should big type get tighter letter-spacing?

The standard advice is yes: tighten headlines, loosen captions. Then you open Apple’s own tracking table for San Francisco and find the opposite. Above 24 points, Apple adds space. Both are correct, and which one applies to you depends on a single property of the font you’re using. Here is how to tell, and the unit mistake that quietly undoes the work once a design is scaled up for export.

A font is spaced for one size

Every glyph carries a little empty space on each side, called its sidebearings. The type designer sets those once, and they are tuned for the size the font is mostly used at, which for an interface face means body text. Scale the font up and every gap scales with it, in exact proportion.

Your eye doesn’t judge it in proportion. At 12 pixels, letters need air between them to stay distinct; strokes are a pixel or two wide and the gaps are what make an “rn” read as two letters instead of an “m”. At 96 pixels the same proportional gaps become wide channels of empty space, and the word starts to read as a row of separate shapes instead of one unit. Tracking is the correction for that mismatch: a single number added to, or taken from, every gap at once.

Inter’s curve: tighten, then stop

Rasmus Andersson, who designed Inter, published the correction he uses as a formula on Inter’s “dynamic metrics” page:

tracking = −0.0223 + 0.185 × e−0.1745 × size

The result is in ems, so multiply by the font size to get pixels. Worked through, it gives about +1.0% at 10px, roughly zero at 12px, −1.1% at 16px, −2.0% at 24px, and −2.2% from around 40px up. In other words: open the small sizes a touch, tighten through the mid range, and level off. Nothing about a 120px headline needs more tightening than a 48px one. The curve flattens because by then the gaps are all large and the proportion is what the eye reads.

That is the source of the rule everyone repeats, and for a font like Inter it’s right.

Apple’s table goes the other way

The Human Interface Guidelines publish a tracking value for San Francisco at every point size from 6 to 96. The small end looks like Inter: +41 thousandths of an em at 6pt, 0 at 12pt, −26 at 17pt (the body size, which works out to −0.43pt). Then it turns. It’s −23 at 20pt, −12 at 22pt, crosses zero between 23 and 24, and reaches +14 by 28pt. From there it eases back down, +8 at 48pt and +4 at 64pt, and sits at 0 from 80pt up.

A designer who learned “big type, tight tracking” and sets a 34pt San Francisco title at −2% has done the opposite of what Apple specifies, by about three percent of the font size.

The reason, as far as the shape of the table tells it, is that San Francisco is not one design. It has a Text cut drawn for small sizes and a Display cut drawn for large ones, and the system moves from one to the other somewhere around 20pt. The Display cut is already drawn with tighter spacing built in, so the correction it needs is smaller and runs the other direction: the table opens it back up a little through the 24–60pt range where a headline usually sits. Inter’s formula was made for a single design stretched across every size, which is why it only ever tightens.

The question to ask the font

So the useful rule is not about size. It is: does this font change its drawing at large sizes?

The unit that breaks at export size

Tracking only holds up if it’s stored as a fraction of the font size. The tools disagree on that. Figma accepts a percentage. CSS accepts em. Flutter’s letterSpacing and the point values in Apple’s table are absolute: logical pixels and points that don’t change when the font does.

That matters the moment a design gets scaled. A store screenshot headline is drawn on a canvas over a thousand pixels wide, and the type is often 100px or more. Copy the iOS body value of −0.43 into that headline and it comes out at −0.4%, which is nothing. Tune a headline to −1px at 32px in a preview and render it at 120px, and −3% has become under −1%. The fix is the same everywhere: store a ratio and multiply at render time. In Flutter that is letterSpacing: fontSize * -0.02, not letterSpacing: -1.

Capitals and small text go the other way

Capital letters are spaced to sit next to lowercase, where the short letters around them leave room. Put a word in all capitals and those sidebearings meet each other with nothing in between, so caps settings usually want positive tracking, a few percent of the size, even at sizes where lowercase would be tightened. The same goes for small labels: the positive end of both Inter’s curve and Apple’s table exists because text below about 12px gets harder to read when the letters crowd.

The trailing space nobody sees until it’s centred

One more thing to check once the number is right. Browsers add letter-spacing after every character, including the last one. We measured it in Chrome: the word HELLO set in Arial at 100px with letter-spacing: 0.1em grows by exactly 50px, five gaps for five letters, not four. On centred text that extra gap pushes the visible word half of it, 5px here, to the left of centre. With negative tracking it goes the other way. Cancel it with a matching margin-inline-end on the element, or measure the trailing gap before you centre. It’s the same kind of small offset we covered in why “perfectly centered” looks slightly off, except this one is real geometry, not perception.

How to check it by eye

Numbers get you close; your eye makes the call. Set the headline at the size it will actually be seen, not zoomed out to fit the artboard. Look for three things:

If you’re setting white type on a dark background, start a little looser than you would on white; light text spreads into its gaps. Setting white type on dark without the bloom covers that adjustment in detail.

Short version. Tighten big type only when the font uses the same drawing at every size. If it has a display cut, use the cut and leave tracking near zero. Store tracking as a fraction of the font size, loosen all-caps and tiny labels, and check centred text for the trailing gap.

Store screenshot headlines are where all of this shows: big type, scaled for export, often on dark, and usually centred.

Set your screenshot headlines → Where to break a headline that runs two lines