Addaly is in open beta. Things will change, and AI answers can be wrong — check anything that matters.

Design, Before Any Software

Hierarchy, type, colour and spacing — the part of design you can do with a pencil, before any software.

Lesson 29 of 748 min

Letter spacing, and the sizes type was drawn for

Three different things with similar names

Kerning adjusts the space between one specific pair of letters. AV, To, Ta and Wa need it, because the shapes nest. Typeface designers ship kerning tables with the font, and the browser uses them by default in most cases; font-kerning: normal makes it explicit.

Tracking, or letter-spacing, applies the same adjustment uniformly across a run of text. This is the one you control.

Optical size is the idea that a typeface should be drawn differently for different sizes. It is the one most people have never heard of, and it explains the other two.

Why large type needs tighter tracking

A typeface's default spacing is designed for a particular size — usually somewhere in the range of running text. When you scale the letters up to 60 pixels, the spaces scale up with them. But apparent gaps do not grow the way they measure: at large sizes the same proportional space reads as a hole.

So headings need negative tracking and small text needs positive. Working numbers:

60px display    letter-spacing: -0.02em to -0.03em
40px heading    letter-spacing: -0.01em to -0.02em
16px body       letter-spacing: 0
12px caption    letter-spacing: 0.01em
12px ALL CAPS   letter-spacing: 0.06em to 0.10em

The all-caps line is the one to memorise. Capitals are spaced for use as initials inside lowercase words, not for running together in a word of their own, so a caps label set at default tracking looks cramped. Adding 6 to 10 per cent is the standard correction, and a caps label without it is one of the most recognisable marks of untrained typesetting.

Use em rather than pixels so the tracking scales with the size.

What optical size actually was

In metal type, every size was cut separately. A punchcutter making 6-point type gave it sturdier strokes, larger counters, shorter extenders and looser spacing, because at 6 points the ink spreads and the eye needs help. The same face at 48 points got finer hairlines, tighter spacing and more delicate detail.

Photocomposition and then digital type threw this away: one outline, scaled to any size. That is why a heading in a digital face often looks slightly loose and slightly clumsy, and why small text in the same face looks slightly fragile. You have been compensating by hand with tracking ever since, without necessarily knowing that is what you were doing.

Variable fonts brought it back as a real axis. A font with an opsz axis contains a design space, and the renderer interpolates the appropriate drawing for the size in use:

css
body { font-optical-sizing: auto; }

That is the default in modern browsers where the font supports it, and it applies the correct design automatically. Families with a genuine optical size axis include Roboto Flex, Source Serif 4, Newsreader and Literata — all free. When a face has this, you need much less manual tracking, because the shapes themselves are being adjusted rather than just the gaps.

When to touch kerning by hand

Almost never in running text. The font's tables are better than your judgement across thousands of pairs.

There is one real exception: a logotype or a short display line, where five or six words are going to be reproduced thousands of times and the pairs are visible at large size. There you set the letters individually, and the usual method is to work on the spaces rather than the letters — adjust until each gap looks like it contains the same amount of air as its neighbours, which is a judgement about area, not distance. A common training exercise is to set a word upside down, where you cannot read it and therefore cannot be distracted from the shapes.

Optical size: thrown away, then recoveredTo the 1950sEvery size was cut separately in metal. Six-point type got sturdier strokes, largercounters and looser spacing; 48-point got hairlines and tight spacing.1960s onPhotocomposition, and then digital type, kept one outline and scaled it. Thesize-specific drawings were discarded.Since thenDesigners have compensated by hand with tracking: negative on display sizes,positive on captions and all-caps labels.2016 onVariable fonts brought the design space back as an optical size axis, so therenderer interpolates the right drawing for the size in use.Where a face carries the axis, font-optical-sizing set to auto applies it. Roboto Flex, Source Serif4, Newsreader and Literata all have one, and all are free.
Optical size: thrown away, then recoveredTo the 1950sEvery size was cut separately in metal.Six-point type got sturdier strokes, largercounters and looser spacing; 48-point gothairlines and tight spacing.1960s onPhotocomposition, and then digital type, keptone outline and scaled it. The size-specificdrawings were discarded.Since thenDesigners have compensated by hand withtracking: negative on display sizes, positiveon captions and all-caps labels.2016 onVariable fonts brought the design space back asan optical size axis, so the rendererinterpolates the right drawing for the size inuse.Where a face carries the axis, font-optical-sizingset to auto applies it. Roboto Flex, Source Serif 4,Newsreader and Literata all have one, and all arefree.

Inkscape, Krita and Scribus all support manual letter-by-letter kerning; so does any vector editor. This is not a paid-tool capability.

Where it goes wrong

  • Tracking body text to fit. Adding letter-spacing to make a paragraph fill a space damages the word-shape recognition that reading depends on. Change the measure or the size instead.
  • Negative tracking at small sizes. Below about 14 pixels, letters are already close to touching at typical screen resolutions, and negative tracking makes them collide.
  • Tracking scripts that join. In Devanagari the letters sit under a connecting headline, and in Arabic they join cursively. Adding letter spacing breaks the joins and can make the text unreadable rather than merely ugly. Set letter-spacing: normal explicitly for those blocks if a global rule is applying tracking site-wide.

That last one catches people out constantly on multilingual sites, because the rule was written for a Latin heading and applied to everything.

The one thing to keep

Default letter spacing is drawn for one size, so display type wants negative tracking and all-caps labels want 6 to 10 per cent positive — and a font with an optical size axis adjusts the letterforms themselves rather than only the gaps.

Before you move on

A multilingual site applies letter-spacing: 0.05em to all headings for a refined look. The English headings improve; the Hindi headings become hard to read. What is happening?

Pick the one you would defend. Nobody sees your answer.

No ads. No data sale. No public scores on people. Ever.

© 2026 Addaly