Design Tokens
Design tokens are named, machine-readable records of visual design decisions such as colors, spacing, type sizes and animation timing. Designers and developers store them once, in a shared format, and build tools translate them into the variables each platform uses, so web, iOS and Android apps stay visually consistent and a brand or theme change happens in one place instead of hundreds.
itWeb development | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Design Tokens
A design token is a design decision that has been given a name and written down as data. The blue of the main button, the gap between two cards, the speed of a fade: each becomes an entry such as color.action.background with a value behind it. That is the whole trick. The rest of the field is about what happens once a name exists.
The problem it solves is copying. The same blue has to live in a design file, a website, an iPhone app and an Android app. Before tokens, someone typed it into each place by hand, and the four copies slowly stopped agreeing. Tokens keep one source and let a build tool rewrite it into whatever each platform speaks, from CSS to Swift. Fewer people squinting at two blues and asking which one is real.
Three ideas carry most of the weight. First, a token can point at another token; that pointer is an alias, written as the other token's name in curly braces. Second, aliases stack into tiers. Primitive tokens hold the raw palette (color.blue.600), semantic tokens say what a value is for (color.action.background), and component tokens say which part of which component uses it. Designers apply the semantic layer and leave the primitives backstage. Third, a theme changes values, never names. Dark mode keeps color.surface.default and swaps what it points at.
There is even a standard. The W3C Design Tokens Community Group published its first stable version, 2025.10, in October 2025. A token file is JSON, and a token is any object with a $value property; everything else is a group that organizes tokens into a dotted path. A separate Resolver module describes themes as sets and modifiers, and when two sources disagree, the later one wins.
The surprise is where things break. A token pointing at a name that does not exist stops the build, loudly, which is the helpful kind of failure. The quiet kind happens in the browser. A missing CSS custom property, the double-hyphen variables tokens usually become on the web, makes the element fall back to some other color, and nothing anywhere complains. Another quiet one: some native transforms assume sizes arrive in rem, so an 8px spacing value can reach an iPhone sixteen times larger than intended.
Also worth knowing early: tokens store values, not behavior. A token can say what color a button is. It cannot say when the button is disabled or how it answers a keyboard. That is the job of components and their documentation.
Where to go next depends on the question. The Intro walks through the file format, tiers, themes and the build pipeline end to end. The Cheatsheet holds the reserved $ properties, value shapes and the transform and format names. The Field Notes cover what the tidy diagrams leave out, such as why renaming a token costs far more than changing its value. The Exercise has you build a light and dark theme with Style Dictionary and break a reference on purpose, which is more satisfying than it sounds.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.designtokens.org/
Supports
- First stable version 2025.10 of the Design Tokens specification
- https://www.w3.org/community/design-tokens/2025/10/28/design-tokens-specification-reaches-first-stable-version/
Supports
- Design Tokens specification reached its first stable version, 2025.10, on 2025-10-28
- Style Dictionary, Tokens Studio and Terrazzo named as reference implementations
- https://www.w3.org/community/design-tokens/
Supports
- The Design Tokens Community Group is a W3C Community Group
- Format, Color and Resolver modules 2025.10 published as final reports
- Announcement channel and RSS feed used by the Updates tab
- https://www.designtokens.org/tr/2025.10/format/
Supports
- Definition of a design token as information associated with a human-readable name, at minimum a name and value pair
- JSON file format, .tokens and .tokens.json extensions, media type application/design-tokens+json
- $value required; $type, $description, $extensions, $deprecated optional; $extends and $root for groups
- Groups are objects without $value; group $type inherited by child tokens
- Type resolution order through own $type, referenced token, parent groups, otherwise invalid
- Names must not begin with $ and must not contain curly braces or periods
- Curly-brace alias syntax and $ref JSON Pointer syntax, which tools must support
- Circular references make the value of every token in the chain unknown
- The 13 token types, dimension units px and rem, duration units ms and s
- fontFamily string or array, fontWeight 1 to 1000 or named aliases, cubicBezier with x in 0 to 1
- Tools must preserve extension data they do not understand
- $deprecated accepts true, false or an explanatory string
- https://www.designtokens.org/tr/2025.10/color/
Supports
- Color value object with colorSpace, components, optional alpha and optional hex
- The 14 supported color space identifiers
- The none keyword for missing components
- Hex fallback in six-digit format so it does not conflict with alpha
- https://www.designtokens.org/tr/2025.10/resolver/
Supports
- Resolver works with tokens in multiple contexts such as light and dark
- Alternate contexts are susceptible to combinatorial explosion
- .resolver.json extension; sets, modifiers, contexts, default and resolutionOrder
- A modifier needs at least two contexts
- Later entries in resolutionOrder override earlier ones in case of conflict
- https://www.designtokens.org/glossary/
Supports
- Definitions of alias, composite token, context, group, modifier, resolver, set and translation tool
- Style Dictionary and Terrazzo named as translation tools; Storybook and zeroheight as documentation tools
- https://www.w3.org/community/design-tokens/2019/07/31/call-for-participation-in-design-tokens-community-group/
Supports
- Call for participation in the Design Tokens Community Group on 2019-07-31 and its stated goal
- https://www.w3.org/community/design-tokens/2021/09/23/call-to-read-the-first-public-editors-draft-and-share-feedback/
Supports
- First Public Editor's Draft of the format module on 2021-09-23, drafted with design tool vendors
- https://www.w3.org/community/design-tokens/2022/06/14/call-to-implement-the-second-editors-draft-and-share-feedback/
Supports
- Second Editors' Draft on 2022-06-14 prefixed format properties with $ and renamed font to fontFamily
- First invitation for tool makers to implement the format
- https://www.w3.org/TR/css-variables-1/
Supports
- Custom properties are named with two leading hyphens, are inherited and are case-sensitive
- var() with an optional fallback
- Unset variables without fallback and cyclic references make a declaration invalid at computed-value time
- https://styledictionary.com/info/architecture/
Supports
- Build stages from configuration, source files, parsing and deep merge through preprocessors, transforms, reference resolution, formats and actions
- https://styledictionary.com/info/tokens/
Supports
- Legacy value, type and comment keys versus DTCG $value, $type and $description
- The two formats cannot be combined in one Style Dictionary instance
- Curly-brace aliases and the optional category, type, item naming structure
- https://styledictionary.com/info/dtcg/
Supports
- First-class DTCG support from version 4
- The 2025.10 format does not have full support yet; work in progress in version 5
- https://styledictionary.com/reference/hooks/transform-groups/predefined/
Supports
- The predefined transform group names
- The css group transforms, including kebab-case names and CSS shorthands for composite tokens
- https://styledictionary.com/reference/hooks/transforms/predefined/
Supports
- size/swift/remToCGFloat scales by 16 or basePxFontSize
- size/pxToRem, size/rem, size/remToDp and size/remToSp behavior
- https://styledictionary.com/reference/hooks/formats/
Supports
- outputReferences keeps references as var() calls in output
- Warnings when filtered tokens are referenced, and outputReferencesFilter
- Built-in formats including css/variables, scss/variables, android/resources, ios-swift/class.swift and compose/object
- https://github.com/style-dictionary/style-dictionary/releases/tag/v3.0.0
Supports
- Style Dictionary 3.0.0 released 2021-05-25
- https://github.com/style-dictionary/style-dictionary/releases/tag/v4.0.0
Supports
- Style Dictionary 4.0.0 released 2024-06-28 with DTCG $value, $type and $description support, ES modules and an asynchronous API
- https://www.npmjs.com/package/style-dictionary
Supports
- First npm publication of style-dictionary on 2017-03-07
- Node.js 22 or later required by version 5
- https://github.com/style-dictionary/style-dictionary
Supports
- Style Dictionary is Apache-2.0 licensed open source
- https://github.com/style-dictionary/style-dictionary/releases
Supports
- Release feed used by the Updates tab
- https://styledictionary.com/reference/logging/
Supports
- Reference Errors message and verbose log output naming the missing reference, observed with Style Dictionary 5.5.5 on 2026-09-26
- Generated CSS, JavaScript, Android and Swift output shown in the practice reference and exercise, observed locally on 2026-09-26
- https://github.com/salesforce-ux/theo
Supports
- Theo is a Salesforce UX tool for transforming and formatting design tokens; repository created 2014-02-19
- https://www.npmjs.com/package/theo
Supports
- First npm publication of theo on 2014-02-19
- https://help.figma.com/hc/en-us/articles/14506821864087-Overview-of-variables-collections-and-modes
Supports
- Color, number, string and boolean variables
- Collections and modes, one value per variable per mode
- Aliasing variables to implement design tokens
- https://help.figma.com/hc/en-us/articles/15339657135383-Guide-to-variables-in-Figma
Supports
- Variables used to implement design tokens and switch between contexts such as light and dark themes
- Scoping which variables can be used in designs
- https://help.figma.com/hc/en-us/articles/18490793776023-Update-1-Tokens-variables-and-styles
Supports
- Primitive tokens are reference only; semantic tokens give context on use
- Hiding primitive collections from publishing
- https://www.figma.com/blog/config-2023-recap/
Supports
- Figma launched variables at Config 2023 on 2023-06-21 with aliasing, scoping and modes
- https://docs.tokens.studio/
Supports
- Tokens Studio plugin with token sets, themes and sync to GitHub, GitLab and other providers
- Support for the DTCG format
- https://github.com/tokens-studio/figma-plugin
Supports
- Plugin repository created 2020-05-18, MIT licensed
- https://tokens.studio/
Supports
- Tokens Studio platform for token workflows between design and code
- https://terrazzo.app/docs/
Supports
- Terrazzo converts DTCG tokens to CSS, Sass, JavaScript, Swift and Tailwind through plugins
- tz init, build, lint and check commands
- https://terrazzo.app/
Supports
- Terrazzo is a collection of MIT licensed open source tools
- https://help.penpot.app/user-guide/design-systems/design-tokens/
Supports
- Native Penpot tokens with sets, themes, math expressions, DTCG format and JSON import and export
- https://penpot.app/pricing
Supports
- Penpot has a free plan and paid plans
- https://github.com/penpot/penpot
Supports
- Penpot is MPL-2.0 licensed open source
- https://material-web.dev/theming/material-theming/
Supports
- Reference, system and component tokens as CSS custom properties with --md-ref, --md-sys and component prefixes
- https://material-web.dev/theming/color/
Supports
- System color tokens follow --md-sys-color-<token> naming
- https://github.com/primer/primitives
Supports
- Primer tokens compiled with Style Dictionary, with base and functional layers
- Nine light and dark color themes including high-contrast, color-blind and tritanopia variants
- Overrides that list only tokens differing from the main mode
- The @ naming hack for a group default value
- Figma metadata stored in $extensions
- https://www.supernova.io/
Supports
- Supernova keeps tokens in sync between Figma and code and documents design systems
- https://zeroheight.com/
Supports
- zeroheight design system documentation connected to design and developer tools
- https://zeroheight.com/pricing/
Supports
- Free plan including one token set
- https://www.figma.com/
Supports
- Figma product homepage for the Landscape entry
- https://github.com/sindresorhus/awesome
Supports
- Discovery of the Design systems awesome list
- https://github.com/klaufel/awesome-design-systems
Supports
- Design tokens, design tools, documentation and testing entries curated for the Awesome Links tab
- https://github.com/mikaelvesavuori/figmagic
Supports
- Figmagic generates design tokens, exports graphics and extracts token-driven React components from Figma
- https://superposition.design/
Supports
- Superposition extracts design tokens from websites and exports them to CSS, Sass, JavaScript and design tools
- https://storybook.js.org/
Supports
- Storybook builds, tests and documents UI components in isolation
- https://www.chromatic.com/
Supports
- Chromatic visual testing from the Storybook team snapshots UI states, themes and viewports
