Not doing CSS much, I was this years old to learn about “font-variant-numeric: tabular-nums”
Posted by jpluimers on 2026/08/25
Via the below BSKY post (some call these skeets), I learned about the CSS feature “font-variant-numeric: tabular-nums” which switches on the OpenType tnum feature of fonts that support it.
More and more supports these tabular numerics, which makes all digits equally wide making both numbers in tables and lists as well as quickly changing numbers like sub-second timers a lot easier to read.
Failing example due to WordPress ditching the style
Enabling the tnumfeature of a fontDefault Modern:
style="font-variant-numeric: tabular-nums";Classic:
style="font-feature-settings: 'tnum'";111222333444555
666777888999000 111222333444555
666777888999000 111222333444555
666777888999000
The problem with WordPress is that despite the td cells having the styles during editing, upon saving the styles get removed. That’s why the above table does not show the style difference any more. I tried putting the style in different places like in div elements inside the table, but that failed as well.
You can see the table succeeding in this gist: [Wayback/Archive] Enabling the tnum feature of a font: style="font-variant-numeric: tabular-nums"; and style="font-feature-settings: 'tnum'"; · GitHub
Rendered it is at [Wayback/Archive] Enabling the tnum feature of a font: style="font-variant-numeric: tabular-nums"; and style="font-feature-settings: 'tnum'"; (note the rendering will first show a “External Content Notice | rawgit.hack” remark with an “Open the page” button to open the actual rendered page).
For a comparison of tools to rendering gists, see Sweep the Strait: Minesweeper, but in the Straitt of Hormuz (plus some tests with RawGit alternatives).
Succeeding example, even in WordPress
Luckily in a blockquote this works, but requires a style="font-family: system-ui, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial, 'Helvetica Neue', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';" around the blockquote:
111222333444555
666777888999000
style="font-variant-numeric: tabular-nums";111222333444555
666777888999000
style="font-feature-settings: 'tnum'";111222333444555
666777888999000
Fonts that you can use
According to code modified from [Wayback/Archive] css – Font-variant-numeric for Google Fonts – Stack Overflow (thanks [Wayback/Archive] herrstrietzel), these serif Google Fonts support tnum (CodePen runnable at Filter google fonts by features – simple – serif):
Filter google fonts by features
- Merriweather:
- category: serif
- variants: regular, italic
- subsets: cyrillic, cyrillic-ext, latin, latin-ext, vietnamese
- axes: opsz, wdth, wght
- features: aalt, c2sc, calt, case, ccmp, dlig, dnom, frac, liga, lnum, locl, numr, onum, ordn, pnum, sinf, smcp, ss01, ss02, ss03, subs, sups, tnum, zero
- Noto Serif:
- category: serif
- variants: regular, italic
- subsets: cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, math, vietnamese
- axes: wdth, wght
- features: aalt, c2sc, case, ccmp, dnom, frac, liga, lnum, locl, mgrk, numr, onum, ordn, pnum, rtlm, sinf, smcp, ss03, ss06, ss07, subs, sups, tnum, zero
- Noto Serif Display:
- category: serif
- variants: regular, italic
- subsets: cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese
- axes: wdth, wght
- features: aalt, c2sc, case, ccmp, dnom, frac, liga, lnum, locl, mgrk, numr, onum, ordn, pnum, rtlm, smcp, ss03, subs, sups, tnum, zero
- Playfair:
- category: serif
- variants: regular, italic
- subsets: cyrillic, cyrillic-ext, latin, latin-ext, vietnamese
- axes: opsz, wdth, wght
- features: aalt, afrc, c2sc, calt, case, ccmp, cv01, dlig, dnom, frac, liga, lnum, locl, numr, onum, ordn, pnum, rlig, sinf, smcp, ss05, ss10, ss11, ss14, subs, sups, tnum, zero
- Roboto Serif:
- category: serif
- variants: regular, italic
- subsets: cyrillic, cyrillic-ext, latin, latin-ext, vietnamese
- axes: GRAD, opsz, wdth, wght
- features: dnom, frac, liga, lnum, locl, numr, onum, pnum, sinf, ss01, ss02, ss04, ss05, ss06, ss07, subs, sups, tnum, zero
From the same author, I also forked SO: get full woff2 file from google fonts dev api.
BSKY post
[Wayback/Archive] Post by @berthub.eu — Bluesky
En voor wie gevoelig is voor dat soort dingen (🙋♂️), data zijn nu netjes uitgelijnd waardoor opsommingen er minder rommelig uitzien. “font-variant-numeric: tabular-nums” is een mooi ding!
Screenshot (see link below)
[Wayback/Archive] bafkreiboljzlncnsshpjia6lxth5nzixemieycuf7k4a2lxfmg7oyo374i (1000×258)
The example from the image is a [Wayback/Archive] Inbreng verslag van een schriftelijk overleg over het Fiche: Mededeling ‘EU-Agenda voor Steden’ (Kamerstuk 22112-4240).
Related
- List of typographic features – Wikipedia
- Number Case
- Lower Case Numbers
onum - Upper Case Numbers
lnum
- Lower Case Numbers
- Number Spacing
- Monospaced Numbers
tnum - Proportional Numbers
pnum
- Monospaced Numbers
- Number Case
- [Wayback/Archive] font-variant-numeric – CSS | MDN has the formal definition but lacks examples except for
font-variant-numeric: ordinal; - [Wayback/Archive] Syntax for OpenType features in CSS has many examples including CSS for older browsers. Some examples are:
Numbers
- [Wayback/Archive] Soren (@sorenblank): “`tabular-nums` should be the default for any number that updates ( timers, counters, prices, percentages, scores, live data etc ). you can enable this tnum OpenType feature using the CSS property `
font-variant-numeric`. .tabular-nums { font-variant-numeric: tabular-nums; }” | nitter has a video showing the timer example
`
tabular-nums` should be the default for any number that updates ( timers, counters, prices, percentages, scores, live data etc ). you can enable this tnum OpenType feature using the CSS property `font-variant-numeric`..tabular-nums {
font-variant-numeric: tabular-nums;
}- [Wayback/Archive] Tweet JSON
- [Wayback/Archive] -Mcfq-Ntqym7-S3n.jpg (1200×674)

Note the 1 is different in pnum and tnum.
- [Wayback/Archive] video.twimg.com/amplify_video/2028516779639861257/vid/avc1/480×270/0-fpy7Lbp0fNE5-I.mp4
- [Wayback/Archive] video.twimg.com/amplify_video/2028516779639861257/vid/avc1/640×360/vVBURMDVc2-Ui8uQ.mp4
- [Wayback/Archive] video.twimg.com/amplify_video/2028516779639861257/vid/avc1/1282×720/S_3IRD77iPxtwvkR.mp4
- [Wayback/Archive] video.twimg.com/amplify_video/2028516779639861257/vid/avc1/1922×1080/_3oyKJnuA3t0_NvY.mp4
- [Wayback/Archive] video.twimg.com/amplify_video/2028516779639861257/vid/avc1/3840×2156/UZ-V3_QbDbNxEvMO.mp4
- [Wayback/Archive] Soren on X: “`tabular-nums` should be the default for any number that updates ( timers, counters, prices, percentages, scores, live data etc ). you can enable this tnum OpenType feature using the CSS property `font-variant-numeric`. .tabular-nums { font-variant-numeric: tabular-nums; } …”
- [Wayback/Archive] Align Numbers Perfectly with CSS tabular-nums mistakenly coerces you to use both
font-variant-numeric: tabular-nums;andfont-feature-settings: 'tnum';. You need either or. - [Wayback/Archive] css – Font-variant-numeric for Google Fonts – Stack Overflow (thanks [Wayback/Archive] herrstrietzel) is where I got the above font list from.
Queries:
- [Wayback/Archive] “font-variant-numeric: tabular-nums” at DuckDuckGo
- [Wayback/Archive] tabular-nums at DuckDuckGo
- [Wayback/Archive] which fonts support tnum at DuckDuckGo
–-jeroen






Leave a comment