Empezar aquí
Qué es DTCG
DTCG es el grupo del W3C que define un formato JSON común para intercambiar tokens de diseño entre herramientas. Qué es, qué estado tiene y para qué lo usamos.
Última revisión:
DTCG son las siglas de Design Tokens Community Group, un grupo comunitario del W3C. También se usa "DTCG" para referirse a la especificación que publica: un formato de archivo para que distintas herramientas puedan leer y escribir los mismos tokens.
En esta página
- El problema que resuelve
- Qué define la especificación
- Un token en formato DTCG
- Estado actual
- DTCG en Figma
- Cómo lo usamos en DesignToken101
- Lo que te llevas
El problema que resuelve
La especificación nombra tres tipos de herramientas que trabajan con tokens (Format Module: Terminology):
| Tipo | Qué hace | Ejemplos citados |
|---|---|---|
| Herramienta de diseño | Crear y editar diseño visual | Figma, Sketch, Adobe XD |
| Herramienta de traducción | Convertir tokens de un formato a otro, por ejemplo a código | Style Dictionary, Terrazzo |
| Herramienta de documentación | Documentar el uso de los tokens | Storybook, Zeroheight, Supernova |
Cada herramienta tenía su propio formato. El objetivo de DTCG es mejorar la interoperabilidad entre ellas definiendo un formato estándar para los datos de tokens, de modo que los equipos no tengan que escribir su propio código de conexión (Format Module: Introduction).
Qué define la especificación
La versión actual, 2025.10, se divide en módulos:
- Format Module: la estructura del archivo. Qué es un token, un grupo, un alias y los tipos de valor.
- Color Module: cómo se representa un color (espacio de color y componentes).
- Resolver Module: cómo trabajar con tokens en varios contextos, como modo claro y modo oscuro.
Conceptos clave del Format Module:
- Token: información asociada a un nombre legible; como mínimo, un par nombre/valor.
- Tipo (
$type): la categoría del valor, para que las herramientas sepan tratarlo. - Grupo: un conjunto de tokens para organizarlos. La especificación dice que los grupos son arbitrarios y que las herramientas no deben deducir de ellos el tipo ni el propósito de un token.
- Alias (o referencia): un token cuyo valor es otro token.
- Token compuesto: un token cuyo valor tiene varias partes con nombre, como una sombra o un estilo tipográfico.
Fuente: Format Module: Terminology.
Los tipos simples que define son color, dimension, fontFamily, fontWeight, duration, cubicBezier y number. Los compuestos son strokeStyle, border, transition, shadow, gradient y typography (Format Module: Types).
Un token en formato DTCG
Un archivo DTCG es un archivo JSON. Las propiedades de la especificación empiezan por $. Este ejemplo define un color primitivo y un token semántico que apunta a él:
tokens.json
{
"color": {
"blue": {
"500": {
"$type": "color",
"$value": {
"colorSpace": "srgb",
"components": [0.145, 0.388, 0.922],
"hex": "#2563eb"
}
}
},
"action": {
"primary": {
"$type": "color",
"$value": "{color.blue.500}"
}
}
}
}color.blue.500tiene un valor explícito: un objeto con espacio de color y componentes.color.action.primaryes un alias: su valor es el nombre completo de otro token entre llaves. Las llaves solo pueden apuntar a tokens completos, no a grupos (Format Module: Curly brace syntax).
Algunas reglas que afectan a cómo nombrarás tus tokens (Format Module: Character restrictions):
- Los nombres no pueden empezar por
$. - Los nombres no pueden contener
{,}ni.. - Los nombres distinguen mayúsculas y minúsculas, pero la especificación advierte que dos nombres que solo se diferencian en eso pueden producir duplicados al convertirlos a código.
La especificación recomienda las extensiones .tokens o .tokens.json (Format Module: File extensions).
Estado actual
- Versión: 2025.10, publicada el 28 de octubre de 2025 como Final Community Group Report.
- No es un estándar del W3C ni está en el proceso de estándares del W3C. Lo publica un grupo comunitario.
- Es estable. El documento dice que se considera estable y que las actualizaciones llegarán en especificaciones nuevas que la sustituyan.
Fuente: Format Module: Status of this document.
Nota
"No es un estándar del W3C" no significa que no sea fiable. Significa que no ha pasado por el proceso formal de estándares del W3C. El propio documento indica que, tras un amplio consenso, está pensado para que las herramientas lo implementen.
DTCG en Figma
Figma importa y exporta variables en formato DTCG (Figma: Modes for variables):
- Exportar un modo: vista Variables → clic derecho sobre el modo → Export mode.
- Exportar todos los modos de una colección: clic derecho sobre la colección → Export modes.
- Importar: crear una colección nueva y arrastrar uno o varios archivos JSON a la vista Variables. Cada archivo crea un modo.
Hay restricciones de importación que conviene conocer desde el principio:
| Tipo DTCG | Variable de Figma | Restricción al importar |
|---|---|---|
color | Color | Solo espacios de color sRGB y HSL |
dimension | Number | Solo unidad px |
fontFamily | String | Un único nombre de fuente, no una lista |
duration | Number | Solo unidad s |
number | Number o Boolean | Boolean si lleva la extensión com.figma.type: "boolean" |
string | String | No es un tipo DTCG oficial, pero Figma lo acepta |
Además, Figma convierte los puntos de los grupos en barras (color.accent.light pasa a color/accent/light) y, si dos tokens acaban con el mismo nombre, solo importa el primero (misma fuente).
Al exportar, Figma no deshace esas conversiones: los tamaños salen como number sin unidad y la familia tipográfica como string. Además, los alias salen con el valor ya resuelto. Lo explicamos en Figma exporta casi DTCG.
Aviso
DTCG admite unidades rem y otros espacios de color, pero Figma solo importa px y sRGB o HSL. Un archivo DTCG válido no siempre se importa completo en Figma. Lo tendremos en cuenta al diseñar nuestras escalas.
Cómo lo usamos en DesignToken101
DTCG es el punto intermedio entre Figma y el código. Exportamos las variables de Figma, las normalizamos a DTCG estricto y una herramienta de traducción las convierte en variables CSS. Lo verás completo en Cómo encajan Figma, DTCG y Tailwind.
El Format Module no define modos. Para expresar claro y oscuro existe el Resolver Module, que organiza los tokens en sets (siempre cargados) y modifiers (ejes de variación) con contexts (los valores posibles, como light y dark). Sus documentos usan la extensión .resolver.json (Resolver Module 2025.10).
Figma, por su parte, exporta un archivo por modo. En DesignToken101 unimos esos archivos con un documento del Resolver Module; lo veremos en el módulo De Figma al código.
Lo que te llevas
- DTCG es el formato común para mover tokens entre herramientas: un JSON con
$value,$typey alias entre llaves. - La versión 2025.10 es estable, aunque no es un estándar del W3C.
- Figma importa y exporta DTCG con limitaciones: solo
px, sRGB o HSL, y los alias salen resueltos.