50 design token files, compared
Token counts by category, formats, and the meaning layer (descriptions, deprecation fields, usage rules), counted programmatically from the raw public token files of 50 design systems.
| System | Owner | Format | Color | Typography | Spacing | Descriptions | Deprecation | Usage rules |
|---|---|---|---|---|---|---|---|---|
| SLDS | Salesforce | Theo YAML | 320 (256p/64a) | 16 | 9 | No | No | No |
| Spectrum | Adobe | JSON (DTCG-ish) | 636 (372p/264s) | 312 | 15 | No | Yes | No |
| Primer | GitHub | DTCG JSON5 | 290 prim | 15 base | 33 (merged) | Yes | Yes | Yes |
| Carbon | IBM | TS/JS | 244 prim | 32 (+36 styles) | 13 | No | Partial | No |
| Polaris | Shopify | TS | 466 (240p/226s) | 31 (+55 styles) | 22 | Yes | No | Partial |
| Fluent | Microsoft | TS | 688 prim | 27 | 11 (22 directional) | No | No | No |
| Paste | Twilio | YAML (Style Dict) | 338 (143p/195s) | 44 | 52 | Yes | No | Partial |
| Gestalt | JSON (Style Dict) | 175 (109p/66s) | 12 base | 33 | No | No | No | |
| Nord | Nordhealth | JSON (Theo) | 64 (7p/57s) | 20 | 6 | Yes | No | Partial |
| Canvas | Workday | JSON (Style Dict) | 361 (256p/105s) | 55 | 25 (merged) | Yes | Yes | No |
| Atlassian | – | JS (Style Dict raw) | 541 (150p/391s) | 23 | 23 | Yes | Yes | Partial |
| Telekom Scale | Deutsche Telekom | JS | 158 (135p/23s) | 34 | 12 | No | No | No |
| USWDS | GSA | JSON + SCSS | 461 prim | 44 | 44 | No | No | No |
| PatternFly | Red Hat | JSON (Style Dict) | 516 (78/96/342) | 17 base | 8 base | Yes | No | Partial |
| Helsinki HDS | City of Helsinki | JSON (Style Dict) | 73 prim | 17 | 12 | No | No | No |
| Backpack | Skyscanner | JSON (DTCG/Figma) | 212 (75p/137s) | 10 (no sizes) | 11 | No | No | No |
| Cloudscape | AWS | TS (Style Dict) | 380 | 68 | 119 | Yes | Yes | Partial |
| Pajamas | GitLab | JSON (DTCG) | 332 (154p/178s) | 72 | 32 | Yes | Yes | Partial |
| Material Design 3 | SCSS | 142 (91p/51s) | 67 | none | Partial | Partial | No | |
| Ant Design | – | TS | ~222 (130+79+seeds) | 20 | 9 | Yes | Yes | No |
| Chakra UI | Chakra | TS | 136 prim | 36 | 34 | No | No | No |
| Base Web | Uber | TS | 170s (267p/59f) | 39 | 22 (merged) | No | Yes | No |
| Radix Themes | Radix UI | CSS vars | 930 file (~79/theme) | 83 | 9 | No | No | No |
| Open Props | argyleink | CSS vars | 247 (19x13) | 56 | 74 (merged) | No | No | No |
| Mantine | – | TS | 140 prim | 21 | 5 | No | No | No |
| EUI | Elastic | TS | 366 (159p/207s) | 16 | 10 (merged) | Yes | Yes | Partial |
| Garden | Zendesk | TS | 213 prim | 24 | 8 | No | No | No |
| Orbit | Kiwi.com | JSON (Style Dict) | 76 prim | 12 | 14 | No | No | No |
| Clay / Lexicon | Liferay | SCSS | ~155 | 27 | 9 | Partial | Yes | No |
| Vibe | monday.com | CSS vars | 220s | 73 | 10 | No | Partial | No |
| The Guardian | Guardian News | TS (from tokens.json) | 94 (pillar-organized) | 100 (presets) | 15 | Partial | Partial | No |
| Bootstrap | – | SCSS | 31 (14/9 prim + 8 sem) | 22 | 6 | Partial | Partial | No |
| Braid | SEEK | TS | 62 (semantic only) | 11 | 9 | No | No | No |
| Grommet | HPE | TS | 52 | 11 (+24 heading) | 8 | No | Partial | No |
| Vitamin | Decathlon | CSS vars | 133 (68p/65s) | 27 | 11 | No | Partial | No |
| Stacks | Stack Overflow | LESS | 148 | 24 | 26 | Partial | Partial | Partial |
| Shoelace / Web Awesome | Font Awesome | CSS vars | 255 (198p/57s) | 26 | 10 | No | No | No |
| Vanilla | Canonical | SCSS | 52 (35p/17s) | 25 | 22 | Partial | Partial | Partial |
| Foundation | Zurb | SCSS | 10 | 22 | 5 | Partial | No | No |
| Bulma | – | SCSS | 45 (20p/25s) | 19 | 7 | No | No | No |
| NL Design System | NL DS (Dutch gov) | DTCG | 372 (semantic only) | 113 | 53 | Yes | Yes | No |
| GOV.UK | GDS (UK gov) | SCSS | 88 (68p/20s) | 12 | 10 | Yes | No | Partial |
| TDesign | Tencent | LESS / CSS vars | 125 (62p/63s) | 53 | 55 | Partial | No | No |
| Arco | ByteDance | LESS / CSS vars | 272 (140 prim) | 19 | 23 | No | No | No |
| Semi Design | ByteDance | SCSS / CSS vars | 333 (222p/111s) | 12 | 10 | Partial | No | No |
| Suomi.fi | Finnish gov | JSON | 34 (semantic) | 22 | 16 | Partial | No | No |
| Australian GOLD | Australian gov | TS | 23 (semantic) | 14 | 11 | Partial | No | No |
| Forma 36 | Contentful | TS | 120 (63p/57s) | 32 | 9 | No | No | No |
| Theme UI | system-ui | TS | 5 (semantic) | 17 | 9 | No | No | No |
| Pharos | JSTOR | Style Dict JSON | 59 | 31 | 13 | Partial | No | No |
Method: Counts produced programmatically (jq/python/grep) on raw token files at pinned commits where possible. Canonical/default theme only. No scoring; like-for-like comparison.
Color totals are not apples-to-apples in intent: systems exposing full primitive ramps count every shade. Where separable, the split is shown as (primitives p / semantic s). "Partial" in the meaning columns means comment-only, or carried in a sibling metadata file rather than the token source itself.