Generador de tonos de Tailwind: escalas de color personalizadas de manera sencilla
Embed This Widget
Add the script tag and a data attribute to embed this widget.
Embed via iframe for maximum compatibility.
<iframe src="https://colorfyi.com/iframe/entity//" width="420" height="400" frameborder="0" style="border:0;border-radius:10px;max-width:100%" loading="lazy"></iframe>
Paste this URL in WordPress, Medium, or any oEmbed-compatible platform.
https://colorfyi.com/entity//
Add a dynamic SVG badge to your README or docs.
[](https://colorfyi.com/entity//)
Use the native HTML custom element.
Tailwind CSS incluye una paleta de color cuidadosamente elaborada: 22 matices, cada uno con 11 tonos del 50 al 950. Cubre la gran mayoría de los casos de uso — pero en el momento en que necesitas usar el azul específico de tu marca, o un morado que coincida exactamente con el logotipo de tu empresa, la paleta integrada no es suficiente.
Aquí es donde un generador de tonos se vuelve esencial. Proporcionas un color — tu primario de marca, un acento, un color semántico — y el generador produce una escala completa del 50 al 950, formateada exactamente como un objeto de configuración de Tailwind CSS, lista para incorporar en tu tailwind.config.js.
Esta guía explica cómo funciona el sistema de tonos de Tailwind, cómo generar escalas personalizadas usando el Generador de tonos de ColorFYI, y cómo configurar Tailwind para usarlas eficazmente, incluyendo el modo oscuro.
Cómo funciona el sistema de tonos de Tailwind
La escala de color de Tailwind se basa en un sistema numérico de 11 pasos:
50 100 200 300 400 500 600 700 800 900 950
Cada paso representa un nivel de luminosidad perceptual:
- 50 es el más claro — casi blanco, solo una pizca de color
- 500 es el color "puro" — completamente saturado, luminosidad media
- 950 es el más oscuro — casi negro, tinte profundo
Los números no son arbitrarios. Están espaciados para crear saltos perceptuales de luminosidad aproximadamente uniformes. La diferencia entre 100 y 200 se ve igual a tu ojo que la diferencia entre 700 y 800.
¿Por qué 11 pasos?
11 pasos proporcionan suficiente granularidad para cubrir todos los casos de uso comunes en una UI:
| Tono | Uso principal |
|---|---|
| 50 | Fondos de página y sección, tintes sutiles |
| 100 | Fondos hover para elementos fantasma/contorno |
| 200 | Fondos de estado deshabilitado, bordes sutiles |
| 300 | Bordes decorativos, divisores sutiles |
| 400 | Texto de marcador de posición, color de icono secundario |
| 500 | El color base — botones rellenos, vínculos |
| 600 | Estado hover para elementos interactivos rellenos |
| 700 | Estado activo/presionado, texto accesible sobre fondos claros |
| 800 | Texto oscuro sobre fondos de color, texto de énfasis |
| 900 | Encabezados, texto de alto contraste |
| 950 | Tintes casi negros, texto de máximo contraste |
Este sistema hace que cada color de Tailwind funcione como un mini sistema de diseño por sí mismo. Si necesitas texto blanco legible sobre un botón relleno, usa -600. Si necesitas un tinte de fondo apenas perceptible, usa -50.
La escala 50–950 en detalle
Veamos un ejemplo concreto usando la escala violet integrada de Tailwind:
| Tono | Hex | Luminosidad RGB (L en OKLCH) |
|---|---|---|
| violet-50 | #F5F3FF | ~98% |
| violet-100 | #EDE9FE | ~95% |
| violet-200 | #DDD6FE | ~89% |
| violet-300 | #C4B5FD | ~80% |
| violet-400 | #A78BFA | ~70% |
| violet-500 | #8B5CF6 | ~57% |
| violet-600 | #7C3AED | ~48% |
| violet-700 | #6D28D9 | ~40% |
| violet-800 | #5B21B6 | ~33% |
| violet-900 | #4C1D95 | ~26% |
| violet-950 | #2E1065 | ~15% |
Observa que el color base violet-500 se sitúa aproximadamente en el 57% de luminosidad — no exactamente en el medio del rango 0–100%, sino ligeramente por encima del punto medio para mantener la escala visualmente equilibrada. Los tonos muy oscuros se comprimen en un rango de luminosidad menor (15–40%) porque el ojo humano distingue los tonos oscuros con menos precisión que los claros.
Generación de escalas de color personalizadas
Uso del Generador de tonos de ColorFYI
El Generador de tonos toma cualquier código hex y produce una escala con formato Tailwind completa. El flujo de trabajo es:
Paso 1: Ingresa el color de tu marca en el campo de entrada.
Por ejemplo, tu marca usa el azul exacto #0057B8 — un azul medio-oscuro usado por muchas marcas corporativas.
Paso 2: El generador calcula los 11 tonos usando un algoritmo perceptualmente uniforme, mostrando el código hex y una vista previa visual de cada paso.
Paso 3: Copia el bloque de configuración de Tailwind generado.
La salida para #0057B8 se ve aproximadamente así:
brand: {
50: '#E6F0FF',
100: '#CCE1FF',
200: '#99C3FF',
300: '#66A4FF',
400: '#3386FF',
500: '#0057B8', // Tu color de entrada, anclado en 500
600: '#0049A3',
700: '#003B8A',
800: '#002D6B',
900: '#001F4D',
950: '#001230',
},
Qué significa "anclar"
El generador de tonos ancla tu color de entrada en la posición 500 de forma predeterminada. Esto significa que el color de entrada se convierte en el centro de la escala — se generan cinco tonos más claros por encima y cinco más oscuros por debajo.
Algunos generadores permiten anclar en una posición diferente. Si el color de tu marca ya es un azul marino muy oscuro, anclarlo en 700 u 800 puede producir un rango más útil. Si es un pastel muy claro, anclar en 200 o 300 tiene más sentido. El Generador de tonos te permite ajustar el punto de anclaje.
Por qué importa la uniformidad perceptual
Un generador de tonos ingenuo podría simplemente disminuir el valor L de HSL en incrementos iguales: 95%, 85%, 75%, 65%, 55%, 45%, 35%, 25%, 15%. Las matemáticas son simples, pero el resultado visual es desigual. Las transiciones en el extremo claro de la escala parecen más espaciadas que en el extremo oscuro, porque la visión humana es más sensible a las diferencias de luminosidad en los tonos medios.
El generador de ColorFYI usa interpolación de luminosidad OKLCH, que produce pasos que parecen visualmente equidistantes — coincidiendo con la calidad perceptual de las escalas predeterminadas elaboradas a mano de Tailwind.
Configuración de tailwind.config.js
Extensión con un color personalizado
La forma más segura de añadir una escala de color personalizada es extender los valores predeterminados de Tailwind en lugar de reemplazarlos:
// tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
theme: {
extend: {
colors: {
brand: {
50: '#E6F0FF',
100: '#CCE1FF',
200: '#99C3FF',
300: '#66A4FF',
400: '#3386FF',
500: '#0057B8',
600: '#0049A3',
700: '#003B8A',
800: '#002D6B',
900: '#001F4D',
950: '#001230',
},
},
},
},
}
Después de añadir esto, puedes usar clases como bg-brand-500, text-brand-700, border-brand-200 y hover:bg-brand-600 en todo el proyecto.
Reemplazo de un color integrado
Si quieres reemplazar completamente un color predeterminado (por ejemplo, reemplazar el blue de Tailwind con tu azul de marca):
module.exports = {
theme: {
extend: {
colors: {
blue: {
50: '#E6F0FF',
// ... hasta el 950
},
},
},
},
}
Las clases como bg-blue-500, text-blue-700 usarán ahora tu escala personalizada en lugar del azul integrado de Tailwind.
Uso de variables CSS para temas en tiempo de ejecución
Para aplicaciones que necesitan cambio de tema en tiempo de ejecución (por ejemplo, productos de marca blanca, temas personalizables por el usuario), define la escala como propiedades personalizadas CSS:
/* globals.css */
:root {
--color-brand-50: #E6F0FF;
--color-brand-100: #CCE1FF;
--color-brand-200: #99C3FF;
--color-brand-300: #66A4FF;
--color-brand-400: #3386FF;
--color-brand-500: #0057B8;
--color-brand-600: #0049A3;
--color-brand-700: #003B8A;
--color-brand-800: #002D6B;
--color-brand-900: #001F4D;
--color-brand-950: #001230;
}
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
brand: {
50: 'var(--color-brand-50)',
100: 'var(--color-brand-100)',
// ... hasta el 950
},
},
},
},
}
Ahora, cambiar las variables CSS en tiempo de ejecución (mediante JavaScript) recolorea toda la UI al instante.
Configuración de Tailwind v4
Tailwind CSS v4 traslada toda la configuración a CSS usando @theme:
@import "tailwindcss";
@theme {
--color-brand-50: #E6F0FF;
--color-brand-100: #CCE1FF;
--color-brand-200: #99C3FF;
--color-brand-300: #66A4FF;
--color-brand-400: #3386FF;
--color-brand-500: #0057B8;
--color-brand-600: #0049A3;
--color-brand-700: #003B8A;
--color-brand-800: #002D6B;
--color-brand-900: #001F4D;
--color-brand-950: #001230;
}
No se necesita tailwind.config.js. Las variables --color-brand-* están disponibles automáticamente como clases de utilidad (bg-brand-500, text-brand-700, etc.).
Tonos para el modo oscuro
El modo oscuro no invierte tu escala de color — invierte qué tonos usas. La misma escala funciona tanto para modo claro como oscuro; simplemente intercambias qué extremo de la escala gestiona los fondos y cuál gestiona el texto.
El principio de inversión
| Rol | Modo claro | Modo oscuro |
|---|---|---|
| Fondo de página | brand-50 | brand-950 |
| Fondo de superficie/tarjeta | brand-100 | brand-900 |
| Borde sutil | brand-200 | brand-800 |
| Texto atenuado | brand-400 | brand-600 |
| Texto de cuerpo | brand-700 | brand-300 |
| Texto de encabezado | brand-900 | brand-100 |
| Botón relleno | brand-500 | brand-500 |
| Hover del botón | brand-600 | brand-400 |
El color del botón relleno (brand-500) es el mismo en ambos modos — es el punto de anclaje. Todo lo que lo rodea se invierte: los fondos claros se convierten en fondos oscuros, el texto oscuro se convierte en texto claro.
Implementación con el modo oscuro de Tailwind
<!-- Fondo: claro-50 en modo claro, oscuro-950 en modo oscuro -->
<div class="bg-brand-50 dark:bg-brand-950">
<!-- Tarjeta: claro-100 en modo claro, oscuro-900 en modo oscuro -->
<div class="bg-brand-100 dark:bg-brand-900 rounded-lg p-6">
<!-- Encabezado: texto oscuro-900 en modo claro, claro-100 en modo oscuro -->
<h2 class="text-brand-900 dark:text-brand-100">Título de la tarjeta</h2>
<!-- Texto de cuerpo: oscuro-700 en modo claro, claro-300 en modo oscuro -->
<p class="text-brand-700 dark:text-brand-300">El contenido de la tarjeta va aquí.</p>
<!-- Botón: siempre brand-500, el hover cambia de dirección según el modo -->
<button class="bg-brand-500 hover:bg-brand-600 dark:hover:bg-brand-400 text-white">
Acción
</button>
</div>
</div>
Generación de una paleta oscura separada
Para algunos sistemas de diseño, especialmente aquellos con una separación visual significativa entre el modo claro y el oscuro, puede ser conveniente generar una escala "oscura" separada. Esta podría ser:
- Una versión ligeramente más cálida o más fría del mismo matiz (más saturada para el modo oscuro, ya que los fondos oscuros necesitan colores más vívidos para lucir equivalentes)
- Un matiz complementario que funcione mejor sobre fondos oscuros
Genera ambas escalas con el Generador de tonos y defínelas como tokens separados:
:root {
/* Escala de modo claro */
--color-brand-500: #0057B8;
}
[data-theme="dark"] {
/* Escala de modo oscuro (ligeramente más saturada) */
--color-brand-500: #3386FF;
}
Escenarios comunes de escalas personalizadas
Coincidir exactamente con un color de marca
Muchas guías de marca especifican un único código Pantone o hex. Si el color de tu marca es #E63946 (un rojo vívido), genera la escala anclada en 500. Tu rojo de marca se convierte en brand-500 y obtienes el rango completo para flexibilidad de diseño.
Añadir un gris neutro cálido
Las escalas de gris predeterminadas de Tailwind se inclinan hacia el frío. Para crear un gris cálido que armonice con un primario naranja o rojo, genera una escala de tonos para un color cálido desaturado como #8B7355 y úsalo como gris neutro. El leve calor crea coherencia visual con tu primario.
Creación de escalas de color semánticas
Tu sistema de diseño probablemente necesita escalas semánticas:
- Éxito: Genera desde un verde como #16A34A
- Advertencia: Genera desde un ámbar como #D97706
- Error/Peligro: Genera desde un rojo como #DC2626
- Información: Genera desde un azul cielo como #0284C7
Cada una se convierte en una escala con nombre en tu configuración (success, warning, error, info) junto a las escalas primary y neutral de tu marca.
Conclusiones clave
- El sistema de tonos 50–950 de Tailwind proporciona 11 pasos de luminosidad perceptualmente espaciados, desde casi blanco hasta casi negro, diseñados para cubrir todos los casos de uso de UI.
- El Generador de tonos de ColorFYI convierte cualquier código hex único en una escala completa lista para Tailwind usando un algoritmo perceptualmente uniforme.
- Extiende
tailwind.config.jsusandotheme.extend.colorspara añadir escalas personalizadas sin perder los valores predeterminados de Tailwind; usa@themeen Tailwind v4. - Usa propiedades personalizadas CSS (
var(--color-brand-500)) para el cambio de tema en tiempo de ejecución y aplicaciones de marca blanca. - El modo oscuro no necesita un color diferente — usa la misma escala invertida: los tonos claros se convierten en fondos, los tonos oscuros en texto.
- Genera escalas separadas para tu color primario, neutro/gris y semánticos (success, warning, error, info) para construir un sistema de diseño completo.
- Usa la convención de nomenclatura numérica de manera consistente para que los desarrolladores sepan exactamente qué tono usar:
600para estados hover,700para texto accesible sobre blanco,100para fondos sutiles.