Tabular Numerals: A Tiny Detail That Changes Everything
Why your dashboards keep jittering when numbers update.
Proportional numerals — the default in most fonts — give each digit its own optimal width. A 1 is narrow, an 8 is wide.
That's fine for body text but disastrous in tables and dashboards. Numbers shift horizontally every time they change, creating a distracting jitter.
Tabular numerals give every digit the same width. Columns stay aligned, numbers update cleanly, and your data feels trustworthy.
In CSS, enable them with font-variant-numeric: tabular-nums. Most modern fonts — Inter, IBM Plex, JetBrains Mono — support this out of the box.
Font preview
Inter
Font preview
JetBrains Mono
Why this matters
It is easy to treat typography as decoration, but in practice it is the closest thing a designer has to a voice. Tabular Numerals: A Tiny Detail That Changes Everything sits exactly where that voice meets performance, rendering and delivery on real browsers, which is why the topic keeps coming back every time a brand, product or page needs to feel like itself.
Designers, founders and developers all benefit from getting this right. A quick spin through DM Serif Display is usually enough to see how much variety there is between families that look superficially similar — and how much that variety changes the feel of a finished interface.
Font preview
DM Serif Display
The mistake is treating typography decisions as one-off choices. In reality they compound. The font you pick today drives the rhythm of every screen, every email and every PDF you ship for the next several years. web.dev's font best practices is a good outside read on why those early calls matter so much.
A worked example
Picture a long-form editorial site — essays, photo stories, the occasional embedded data visualisation. Reading sessions are long and considered.
Applying the ideas from Tabular Numerals: A Tiny Detail That Changes Everything starts with a single decision and ripples outward. You pick a primary family — often something proven like Karla — lock in a small set of weights, and define how those weights map to roles in the interface. Headlines get one weight, body another, captions a third. Nothing else is allowed without an explicit reason.
Font preview
Karla
From there you tune the scale. Set a comfortable body size for your audience — usually 16 to 18 pixels on the web, larger on long-form sites — and build a modular scale upward. Use weight and colour to handle secondary hierarchy instead of inventing new sizes. The result feels disciplined without feeling rigid.
Finally, test in context. Open the design at multiple viewports, in light and dark modes, with realistic content rather than lorem ipsum. If a candidate fails the real-content test, swap it for an alternative from Crimson Pro and try again — typography decisions that look elegant in a Figma mockup sometimes collapse the moment real headlines arrive.
Font preview
Crimson Pro
Common pitfalls
Once you start paying attention, the same handful of mistakes show up in almost every project that drifted off course. They are easy to fix once you notice them, and even easier to avoid the next time — and the font-display CSS spec catalogues several of them with examples worth bookmarking.
Mixing too many families. Two is usually plenty; three is occasionally justified; four is almost always a mistake. The more families you add, the more accidental visual noise you create.
Forgetting about numerics. Tabular figures keep tables aligned; proportional figures look better in running text. Most quality families ship both, and most designers never switch them on.
Loading too many weights. Every additional file slows the page and dilutes the system. Audit your real usage and cut anything you cannot point to in a layout.
None of these pitfalls are dramatic on their own. The trouble is that they accumulate quietly until one day the design feels tired and nobody can point to a single reason why. A short, regular audit catches all of them.
A quick checklist
Before you ship the next iteration of your design, run through a short checklist. It takes five minutes and prevents most of the typography regressions that creep in over time.
First, count your fonts. If you cannot justify every family and every weight in one sentence, remove the ones you cannot defend — Bebas Neue is a useful reference to sanity-check what each family actually offers. Second, verify your hierarchy by squinting at a representative screen — the most important element should still be the most prominent, even at low fidelity.
Font preview
Bebas Neue
Third, check the long content. Open the longest paragraph in the product and read it out loud. If you stumble, the line-height, measure or size is probably wrong. Fourth, test at extremes — the longest possible heading, the shortest possible label, an empty state, a localized translation. Typography that survives the extremes survives everything else.
Fifth and last, make sure the system is documented. A single page that lists your fonts, weights, sizes and rules saves more design time than any tool — the Variable Fonts site has a thoughtful take on writing those rules down without turning the doc into a chore.
Where this fits in a system
In a mature design system, typography is one of the first tokens to stabilise and one of the last to get revisited. That makes sense — once your team has agreed on a scale and a set of roles, those decisions touch every product surface and every channel. They become part of performance, rendering and delivery on real browsers rather than a layer painted on top.
Tokens give you the leverage. Instead of hard-coding pixel sizes everywhere, you define a token like text-body or text-heading-lg and let components reference it. When you decide to bump body up by one step — or swap the underlying family for something from Newsreader — you change one number and ship.
Font preview
Newsreader
Roles matter more than sizes. Two tokens that happen to be the same size today might diverge tomorrow because they represent different intentions. Naming by role — caption, body, lede, headline — protects you from the temptation to merge them whenever the numbers happen to align.
Finally, write down the why. A token system without documentation eventually drifts. A token system with a paragraph next to each entry survives team changes, redesigns and rebrands.
Wrapping up
Tabular Numerals: A Tiny Detail That Changes Everything rewards the people who slow down long enough to think about it. The principles are not complicated, the vocabulary is small, and the payoff is a body of work that reads as more considered than the average.
If you take only one thing away, make it this: typography is a long game. Every page you ship trains the audience to recognise your voice, and every inconsistency erodes that recognition a little. Pick a system — there are plenty of starting points in Karla — document it, and resist the urge to deviate without a real reason.
Treat each new project as a chance to tighten the system rather than start from scratch. Over time your typography stops being a collection of choices and starts being a stable craft — something a team can build on instead of relitigating every quarter.
Why this matters
It is easy to treat typography as decoration, but in practice it is the closest thing a designer has to a voice. Tabular Numerals: A Tiny Detail That Changes Everything sits exactly where that voice meets performance, rendering and delivery on real browsers, which is why the topic keeps coming back every time a brand, product or page needs to feel like itself.
Designers, founders and developers all benefit from getting this right. A quick spin through the full font library is usually enough to see how much variety there is between families that look superficially similar — and how much that variety changes the feel of a finished interface.
The mistake is treating typography decisions as one-off choices. In reality they compound. The font you pick today drives the rhythm of every screen, every email and every PDF you ship for the next several years. the Variable Fonts site is a good outside read on why those early calls matter so much.
Further reads
Six more posts to dig into next.
- Web6 min
Fluid typography with clamp for marketing pages
A focused look at fluid typography with clamp when applied for marketing pages.
- Web6 min
Variable fonts in design systems
A focused look at variable fonts when applied in design systems.
- Web5 min
Monospace numerals in product design
A focused look at monospace numerals when applied in product design.
- Web6 min
How to set up a variable font in a production web app
From woff2 subsetting to font-display, with code you can paste into a real Vite project.
- Web6 min
How to subset and self-host a Google Font properly
Cut 90 percent of font weight with glyphhanger, pyftsubset and a sensible preload strategy.
- Web6 min
How to set vertical rhythm with CSS in 2026
Modern leading, clamp-based scales, and how to keep baselines aligned without a rigid grid.