Skip to content

Convertidor HEX a OKLCH

Convierta HEX a OKLCH para tokens de diseño de Tailwind v4. Salida perceptualmente uniforme en vivo con avisos de gama Display P3. Gratis, solo en el navegador.

Sin rastreo Se ejecuta en el navegador Gratis
Toda la conversión de color sucede localmente en su navegador. No se envía ningún dato a ningún servidor.
Gama: sRGB Display P3 Rec2020
Contraste vs:
AA AA-Lg AAA AAA-Lg · APCA Lc
Simulación de daltonismo (8 tipos)
Protanopia (ciego al rojo)
Deuteranopia (ciego al verde)
Tritanopia (ciego al azul)
Acromatopsia (total)
Protanomalía (débil al rojo)
Deuteranomalía (débil al verde)
Tritanomalía (débil al azul)
Acromatomalía (parcial)
Tintes claros / Matices oscuros / Tonos / Armonías

Tintes claros

Matices oscuros

Tonos

Armonías

Copiar como código
Referencia de colores comunes
Revisado para conformidad con CSS Color 4 §11.2 + §15.1, corrección de matrices OKLAB de Ottosson 2020, paridad con la paleta de Tailwind v4, precisión de detección de gama Display P3 / Rec.2020, y estabilidad en viajes de ida y vuelta entre HEX y OKLCH a través de los rangos de Luminosidad 0-1, Chroma 0-0.4, y Matiz 0-360°. — Equipo de Ingeniería de Go Tools · May 27, 2026

¿Qué es un convertidor HEX a OKLCH?

Un convertidor hex a OKLCH es una pequeña utilidad que convierte un código de color hex (`#3b82f6`) en la tripleta perceptualmente uniforme Luminosidad / Chroma / Matiz que codifica el mismo color en el espacio OKLCH (`oklch(0.629 0.193 263.4)`). Los códigos hex son las cadenas escuetas en base 16 que los diseñadores y desarrolladores pegan entre Figma, Sketch, Photoshop, PDFs de guías de marca y hojas de estilo CSS — tres canales de 8 bits empaquetados en una forma `#RRGGBB` de 6 caracteres, anclados al espacio de color sRGB definido por IEC 61966-2-1 en 1996. OKLCH es la forma polar de OKLAB, el espacio de color perceptualmente uniforme de Björn Ottosson de 2020, añadido a CSS vía la sintaxis `oklch()` en CSS Color 4 (W3C Candidate Recommendation desde 2022). Los canales son luminosidad perceptual (0-1, también escribible como 0-100%), chroma (0 hasta aproximadamente 0.4 para los colores sRGB más saturados, sin límite superior para colores de gama amplia), y matiz (0-360°, el mismo eje angular que usa HSL). El soporte de navegador aterrizó en todos los evergreen entre marzo de 2022 (Safari 15.4) y mayo de 2023 (Firefox 113), con Chrome 111 en medio (marzo de 2023) — la cobertura combinada en caniuse supera el 94%. Ejemplo: el blue-500 de Tailwind es `oklch(0.629 0.193 263.4)`.

**Uniformidad perceptual — por qué importa.** En OKLCH (y en su primo rectangular OKLAB), distancia numérica igual en el canal L corresponde a distancia percibida igual en brillo — a través de cada matiz, cada nivel de chroma, cada región del espacio de color. En HSL, valores de L iguales se ven desigualmente brillantes a través de los matices porque HSL hereda las peculiaridades de gamma de sRGB: un verde en `hsl(120 100% 50%)` se ve visiblemente más brillante que un azul en `hsl(240 100% 50%)`, aunque ambos reporten L=50%. La causa estructural es que HSL deriva L geométricamente (promedio del máximo y mínimo de canal en sRGB codificado en gamma), mientras que OKLCH deriva L de un modelo anclado perceptualmente que linealiza primero y enruta a través de una etapa de respuesta de conos LMS. La consecuencia práctica: mantener L constante a través de matices en OKLCH produce brillo visualmente equivalente — un verde en `oklch(0.7 0.2 130)` y un azul en `oklch(0.7 0.2 250)` se ven igual de brillantes en pantalla. Por esto Tailwind v4 migró su paleta por defecto a rampas basadas en OKLCH en 2025 — cada paso de matiz oscuro (50, 100, 200, …, 900, 950) alcanza la misma diferencia de luminosidad percibida, así que los colores de marca se sienten consistentes a través de los matices sin ajuste manual por color.

**Tailwind v4 y la revolución de tokens de diseño.** Tailwind v4 (lanzado en enero de 2025) reemplazó su generación de color basada en HSL con un sistema basado en OKLCH. shadcn/ui siguió poco después, adoptando OKLCH para su tema de variables CSS; Radix Colors v3 también lo adoptó. Por qué ahora: los sistemas de diseño necesitan matices oscuros que se vean espaciados uniformemente a lo largo de toda la paleta, y necesitan que esa propiedad se mantenga automáticamente conforme la paleta crece. Con HSL, los diseñadores tenían que corregir manualmente cada paso de color — subiendo L un 5% extra en el extremo oscuro de la rampa azul para coincidir con el extremo oscuro de la rampa verde, luego volviendo a subir cuando la marca evolucionaba. Con OKLCH, una sola fórmula (escalonar L en 0.1, mantener C y H constantes) produce rampas consistentes automáticamente. Ejemplo real: en Tailwind v3, `red-500` y `blue-500` tenían pesos percibidos visiblemente distintos a pesar de L% HSL idénticos; en v4, `red-500` y `blue-500` se ven equilibrados porque ambos se sientan en la misma L OKLCH. Esto importa para accesibilidad (contraste consistente contra fondos compartidos significa que los estados de componente se sienten uniformes a través de la paleta), consistencia de marca (la jerarquía visual se mantiene a través de paletas — un botón `primary` y un botón `accent` a la misma L se sienten como el mismo nivel de jerarquía), y ergonomía de desarrollador (un modelo mental en lugar de docenas de excepciones ajustadas a mano enterradas en la especificación de tokens de diseño).

**Implicaciones de gama amplia.** OKLCH no tiene límites — puede representar colores fuera de sRGB, incluido todo lo que Display P3 y Rec.2020 pueden reproducir. Esto lo convierte en la elección natural para pantallas modernas de gama amplia. La mayoría de los dispositivos Apple desde 2017 (iPhone 7 en adelante, MacBook Pro 2016 en adelante, cada iPad Pro) renderizan Display P3 nativamente, y muchos dispositivos Android modernos y pantallas de portátiles también. La contrapartida: no cada tripleta OKLCH se asigna a un color sRGB válido. La herramienta muestra tres insignias de gama — sRGB, Display P3, Rec.2020 — así que puede ver inmediatamente si el OKLCH actual se mostrará correctamente en un objetivo dado. Cuando el color es solo sRGB, el botón **Ajustar a sRGB** usa reducción binaria de chroma (según el algoritmo informativo de mapeo de gama de CSS Color 4 §13) para reducir el color dentro de gama mientras preserva L y H — dándole un fallback hex que puede enviar vía `@supports not (color: oklch(0 0 0))` junto al valor OKLCH original para los clientes de gama más amplia.

**Las matemáticas de conversión HEX → OKLCH.** La canalización está bien definida y anclada en dos fuentes primarias: W3C CSS Color 4 para las etapas sRGB y XYZ, Ottosson 2020 para la etapa OKLAB. Paso uno: analizar `#RRGGBB` a tres canales sRGB enteros de 8 bits vía `parseInt(hex.slice(1, 3), 16)` por canal. Paso dos: normalizar cada canal a 0-1 dividiendo por 255. Paso tres: descodificar gamma a linear-sRGB vía la función a trozos de CSS Color 4 §11.2 (`v <= 0.04045 ? v/12.92 : ((v+0.055)/1.055)^2.4`). Paso cuatro: multiplicar por la matriz 3×3 de §15.1 para obtener coordenadas CIE XYZ D65. Paso cinco: multiplicar por la matriz LMS de Ottosson (de su implementación de referencia de 2020) y tomar la raíz cúbica de cada canal. Paso seis: multiplicar por la matriz OKLAB de Ottosson para obtener L / a / b. Paso siete: cartesiana a polar — `C = sqrt(a² + b²); H = atan2(b, a) * 180 / π`, envolver H en 0-360°. La canalización completa se ejecuta en microsegundos — cada pulsación de tecla vuelve a renderizar la salida OKLCH al instante sin debounce.

El flujo HEX → OKLCH de esta herramienta es una dirección de una familia de 5 radios que comparten el mismo convertidor de color unificado subyacente. El convertidor de color unificado dedicado es el centro — muestra los 9 formatos editables simultáneamente y es la herramienta correcta cuando su flujo de trabajo necesita más que solo hex y OKLCH. Los radios de dirección única apuntan a intenciones específicas de búsqueda en Google: el convertidor hex a RGB para la dirección de canvas y hardware, el convertidor RGB a hex para el inverso, el convertidor hex a HSL para el espacio cilíndrico de diseñador heredado que todavía se usa en muchos códigos de Tailwind v3, y el convertidor hex a CMYK para aproximaciones de preparación de imprenta. Los cinco radios y el centro comparten la misma fuente de verdad OKLCH internamente y las mismas matrices de Ottosson 2020, así que los resultados están garantizados idénticos a lo largo de la familia. Cada conversión se ejecuta localmente en su navegador — sus códigos hex nunca se suben, nunca se registran, y se disparan cero peticiones de red mientras escribe. Verifique en DevTools. Para profundizar en por qué OKLCH se convirtió en el estándar de los sistemas de diseño en 2024–2026, consulte nuestra guía complementaria: El espacio de color OKLCH explicado — por qué Tailwind v4 lo adoptó.

// sRGB hex → OKLCH per W3C CSS Color 4 + Ottosson 2020
// References: https://www.w3.org/TR/css-color-4/#color-conversion-code
//             https://bottosson.github.io/posts/oklab/
// Worked example: #3b82f6 (Tailwind blue-500) → oklch(0.629 0.193 263.4)
function hexToOklch(hex) {
  const h = hex.trim().replace(/^#/, '');
  const srgb = [0, 2, 4].map(i => parseInt(h.slice(i, i + 2), 16) / 255);
  // sRGB → linear-sRGB (CSS Color 4 §11.2 piecewise gamma)
  const lin = srgb.map(v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4));
  const [lr, lg, lb] = lin;
  // linear-sRGB → XYZ D65 (CSS Color 4 §15.1 matrix)
  const x = 0.4124564 * lr + 0.3575761 * lg + 0.1804375 * lb;
  const y = 0.2126729 * lr + 0.7151522 * lg + 0.0721750 * lb;
  const z = 0.0193339 * lr + 0.1191920 * lg + 0.9503041 * lb;
  // XYZ D65 → LMS (Ottosson 2020), cube-root, → OKLAB
  const l_ = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z);
  const m_ = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z);
  const s_ = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.6338517070 * z);
  const L = 0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_;
  const a = 1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_;
  const b = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_;
  // OKLAB → OKLCH (Cartesian to polar)
  const C = Math.sqrt(a * a + b * b);
  const H = (Math.atan2(b, a) * 180 / Math.PI + 360) % 360;
  return `oklch(${L.toFixed(3)} ${C.toFixed(3)} ${H.toFixed(1)})`;
}
console.log(hexToOklch('#3b82f6')); // → oklch(0.629 0.193 263.4)

Características principales

Salida perceptualmente uniforme a través de todos los matices

El canal L de OKLCH está anclado al modelo perceptual OKLAB (Ottosson 2020), así que cada paso de L se ve como el mismo cambio de brillo a través de todos los matices — un verde en `oklch(0.7 0.2 130)` y un azul en `oklch(0.7 0.2 250)` se leen como igual de brillantes en pantalla. Esta es la propiedad estructural que permite a Tailwind v4 generar rampas visualmente uniformes automáticamente sin ajuste manual por color, la misma propiedad que la rampa HSL equivalente no puede garantizar porque HSL hereda las peculiaridades de gamma de sRGB.

Listo para Tailwind v4 — Suelte en bloques @theme

La salida OKLCH usa la forma separada por espacios de CSS Color 4 (`oklch(0.629 0.193 263.4)`) — la sintaxis exacta que Tailwind v4 espera dentro de un bloque `@theme` como `--color-primary: oklch(0.629 0.193 263.4);`. La precisión de L coincide con la precisión publicada de la paleta de Tailwind (tres decimales en L y C, un decimal de grado en H), así que un flujo de pegar-en-config produce tokens idénticos a los que Tailwind envía por defecto. Combine con el fragmento de Tailwind v4 de la sección Copiar como código para la línea completa del token.

Insignias de gama Display P3 + Rec.2020

Tres insignias en vivo (sRGB, Display P3, Rec.2020) señalan si la tripleta OKLCH actual cae dentro del rango reproducible de cada espacio. Útil porque OKLCH no tiene límites — muchos colores de alto chroma exceden sRGB pero caben en P3, que la mayoría de los dispositivos Apple desde 2017 pueden renderizar nativamente. Las insignias se vuelven rojas cuando están fuera de gama así que puede decidir si mantener el valor de gama más amplia para pantallas modernas o ajustar a sRGB para compatibilidad universal. La comprobación de rango de canal se ejecuta en cada pulsación de tecla.

Ajustar a sRGB para compatibilidad heredada

El botón Ajustar a sRGB ejecuta reducción binaria de chroma (algoritmo informativo de CSS Color 4 §13): mantenga L y H fijos, busque C hacia abajo hasta que la conversión sRGB resultante se mantenga dentro de gama. La búsqueda termina en aproximadamente 30 iteraciones con precisión por debajo del píxel. Preservar L y H significa que el color ajustado se lee como la misma familia de matiz al mismo brillo — simplemente pierde saturación, que es el compromiso visualmente menos chocante. El hex ajustado se combina con el OKLCH original vía `@supports not (color: oklch(0 0 0))` para fallback en capas.

Conversión instantánea por pulsación de tecla

No hay botón Convertir. Escriba un solo carácter en el campo HEX y el campo OKLCH se actualiza en el mismo cuadro de animación. La representación canónica interna es la tripleta OKLCH misma, así que editar OKLCH directamente es igual de rápido — el cursor se queda donde lo puso, solo los otros campos de formato se vuelven a renderizar. Las matemáticas de conversión (sRGB → lineal → XYZ → LMS → OKLAB → polar) se ejecutan en microsegundos; sin debounce, sin latencia, sin reflujo visible.

Ejemplo trabajado vía canalización W3C + Ottosson 2020

La sección de ejemplo de código envía una implementación JavaScript funcional de la canalización completa HEX → OKLCH usando las matrices exactas y la función de gamma publicadas en W3C CSS Color 4 (§11.2 gamma a trozos, §15.1 matriz linear-sRGB → XYZ D65) y la implementación de referencia de OKLAB de Björn Ottosson de 2020. Pegue en un REPL de Node y verifique que `#3b82f6` da `oklch(0.629 0.193 263.4)`. Cada valor de matriz está copiado y pegado de su fuente primaria — sin rederivaciones ni redondeos.

Bidireccional con HSL / RGB / HEX en el centro unificado

Aunque este radio apunta a HEX → OKLCH específicamente, la misma página expone los otros ocho campos de formato también — RGB para hardware, HSL para CSS heredado, OKLAB para matemáticas de paletas, HSV/HWB para UIs de selector, CMYK para imprenta, y el color CSS con nombre más cercano. La fuente de verdad OKLCH interna significa que cada campo es bit-estable a través de viajes de ida y vuelta: HEX → OKLCH → HSL → HEX recupera el hex original. Haga clic en cualquier campo para editarlo directamente y vea cómo los demás se actualizan.

Resumen de soporte de navegador en línea

La herramienta expone los puntos de datos canónicos de soporte de navegador donde sean relevantes: Chrome y Edge 111 (marzo 2023), Safari 15.4 (marzo 2022 — el más temprano), Firefox 113 (mayo 2023), cobertura combinada en caniuse superior al 94%. Para clientes más antiguos, envuelva los tokens en `@supports (color: oklch(0 0 0))` y proporcione un fallback hex en la rama alternativa. La salida de Ajustar a sRGB es exactamente ese fallback, generado automáticamente desde la tripleta OKLCH actual — sin ajuste manual de chroma necesario.

100% en el navegador — sin subida, sin rastreo

Todo el análisis hex, la conversión OKLCH, la detección de gama, la puntuación de contraste y la generación de paletas se ejecutan localmente en su navegador. Sus códigos hex nunca se transmiten, nunca se registran en ningún servidor, nunca se analizan. Cero peticiones de red mientras escribe — verifique en DevTools. Seguro para paletas de marca no anunciadas, tokens de diseño internos para productos no lanzados, mockups borrador bajo NDA, y cualquier otro trabajo de color confidencial donde el valor no puede filtrarse.

Alternativas al convertidor HEX a OKLCH

OKLCH.com

herramienta de navegador

Herramienta de OKLCH bellamente construida por Andrey Sitnik (autor del polyfill postcss-oklab-function y Autoprefixer). La mejor en su clase para exploración pura de OKLCH con un selector con consciencia de gama amplia, visualización con consciencia de P3, y generación de paletas. No cubre la conversión HEX/RGB/HSL/CMYK como salidas primarias — enfocada solo en OKLCH. Recurra a OKLCH.com cuando esté haciendo trabajo profundo de diseño OKLCH; recurra a esta herramienta cuando también necesite conversión entre espacios y las características de gama/contraste/CVD.

Documentación de paleta de Tailwind v4

referencia de documentación

Los documentos de Tailwind v4 publican la paleta por defecto completa en OKLCH junto a los equivalentes hex. La mejor para buscar un tono exacto de Tailwind (`blue-500` → `oklch(0.629 0.193 263.4)`) o emparejar colores personalizados con el peso visual de un tono de Tailwind. No es interactiva — sin conversión de códigos hex arbitrarios. Esta herramienta cubre la misma precisión OKLCH y funciona para cualquier hex, no solo los más de 200 por defecto de Tailwind.

Playground de ColorJS.io

herramienta de navegador

ColorJS.io es la biblioteca autorizada de color CSS de Lea Verou y Chris Lilley; el playground expone el grafo de conversión completo (HEX, RGB, HSL, HWB, LCH, OKLCH, OKLAB, P3, Rec2020, ProPhoto, A98). Matemáticas profundamente correctas, ideal para trabajo de color a nivel de especificación. La UI está enfocada al desarrollador (no al diseñador) y carece de las características de contraste / CVD / paleta. Combine con esta herramienta: use ColorJS.io para las matemáticas que no puede verificar de otra manera, use esta herramienta para flujos activos.

Generador de temas shadcn/ui

herramienta de navegador

El generador de temas shadcn de Vercel produce temas OKLCH listos para pegar en variables CSS para proyectos shadcn/ui. El mejor para generación de tema de extremo a extremo cuando el entregable es un archivo de configuración de shadcn. No expone valores OKLCH intermedios para códigos hex arbitrarios — enfocado en el flujo completo de tema. Use el generador shadcn cuando esté construyendo un tema shadcn; use esta herramienta cuando necesite el OKLCH de cualquier color individual.

ColorHexa

herramienta de navegador

Páginas SEO por color de larga trayectoria con metadatos profundos. Recientemente añadió soporte OKLCH junto a HEX/RGB/HSL/CMYK. La UI está fechada (principios de los 2010), sin detección de gama amplia, sin contraste APCA. Fuerte para descubrimiento SEO de un hex específico vía Google; más débil para flujos de conversión activos donde la UX de campos unificados y las características de gama/contraste importan. Esta herramienta gana en cada eje de flujo activo.

Selector de color de DevTools del navegador

característica incorporada del navegador

Chrome, Firefox y Safari DevTools todos vienen con un selector de color que conmuta entre HEX, RGB, HSL, HWB y OKLCH en línea cuando hace clic en una muestra de color en el panel CSS. Gratis, sin instalar, siempre disponible. Carece de las insignias de gama, puntuación de contraste, simulación de daltonismo, y exportación de código para plataformas no-web (SwiftUI, Compose). Recurra a DevTools cuando ya esté depurando CSS; recurra a esta herramienta cuando necesite salida multiplataforma o las comprobaciones más profundas.

CLI de Culori

biblioteca de línea de comandos

Culori es la biblioteca de color JavaScript más exhaustiva con consciencia OKLCH; su CLI maneja la conversión HEX → OKLCH como un one-liner (`culori convert '#3b82f6' --to oklch`). Excelente para scripts de CI y migración de tokens por lotes. Sin selector visual ni insignias de gama. Use Culori CLI para automatización; use esta herramienta para trabajo interactivo de color único y la retroalimentación visual inmediata.

Ejemplos de HEX a OKLCH

Migrar paleta HSL de Tailwind 3 → tokens OKLCH de v4

#3b82f6

Salida OKLCH: `oklch(0.629 0.193 263.4)`. El flujo canónico de migración a Tailwind v4: defina el color de marca una vez en su bloque `@theme` como `--color-primary: oklch(0.629 0.193 263.4)`, luego componga tintes claros escalonando L hacia arriba (`oklch(0.7 0.193 263.4)`, `oklch(0.8 0.15 263.4)`) y matices oscuros escalonando L hacia abajo (`oklch(0.5 0.193 263.4)`, `oklch(0.4 0.18 263.4)`). El matiz se queda fijo en 263.4°, el chroma se ancla cerca de 0.19, la luminosidad perceptual es el único eje que barre — una rampa unidimensional que se lee como visualmente uniforme a lo largo de toda la escala, algo que la rampa HSL equivalente no puede garantizar.

Migración de tokens de diseño con matices oscuros perceptualmente uniformes

#FF5733

Salida OKLCH: aproximadamente `oklch(0.66 0.18 28)`. Para construir una rampa de 5 pasos de matices oscuros a partir de este naranja de marca, mantenga C = 0.18 y H = 28 constantes y escalone L a través de 0.3, 0.45, 0.6, 0.75, 0.9 — produciendo `oklch(0.3 0.18 28)` hasta `oklch(0.9 0.18 28)`. Cada par adyacente se siente como el mismo salto visual en brillo, porque la L de OKLCH está anclada al modelo perceptual OKLAB (Ottosson 2020) en lugar de a la L geométrica enredada en gamma de HSL. El chroma puede recortarse silenciosamente hacia sRGB en los extremos; las insignias de gama de la herramienta señalan exactamente qué pasos necesitan atención.

OKLCH de gama amplia → fallback sRGB para sitios de Tailwind v3

#FF1744

Salida OKLCH: aproximadamente `oklch(0.62 0.27 26)`. Un rojo de alto chroma como este excede el cubo sRGB — la insignia de gama **sRGB** se enciende en rojo, la insignia **Display P3** confirma que cabe en P3, y Rec.2020 también lo cubre. En un monitor estándar de 24 bits se renderiza como una aproximación desaturada; en una pantalla Display P3 (la mayoría de los dispositivos Apple desde 2017) se renderiza saturado. Haga clic en **Ajustar a sRGB** para ejecutar el algoritmo de reducción binaria de chroma (CSS Color 4 §13 informativo) — L y H se quedan fijos mientras C se encoge hasta que el color quepa, produciendo un fallback hex adecuado para un código de Tailwind v3 que todavía usa tokens hex de 8 bits.

Migración de tema shadcn/ui

#0f172a

Salida OKLCH: aproximadamente `oklch(0.21 0.04 264.7)`. shadcn/ui migró su tema de variables CSS a OKLCH poco después del aterrizaje de Tailwind v4, y `#0f172a` (slate-900 de Tailwind) es el fondo canónico del modo oscuro. La herramienta reproduce el valor OKLCH publicado de shadcn para el mismo hex, así que puede verificar que un port de tema de la comunidad coincida con la definición upstream. Combine con la fila de contraste para confirmar que el primer plano del modo oscuro (blanco o casi blanco) sigue superando WCAG AA contra este fondo — `oklch(0.21 ...)` contra `oklch(1 0 0)` reporta una razón cómoda de 16:1.

Construir un par oscuro/claro de Tailwind v4 desde un hex de marca

#3b82f6

Salida OKLCH: `oklch(0.629 0.193 263.4)`. Para derivar un par oscuro/claro emparejado para un tema, pivote solo el canal L mientras mantiene C y H constantes: el primary del modo claro se vuelve `oklch(0.7 0.15 263)` (ligeramente más brillante, ligeramente menos cromático para evitar fatiga visual sobre fondos blancos), el primary del modo oscuro se vuelve `oklch(0.5 0.18 263)` (ligeramente más oscuro, ligeramente más cromático para mantener saliencia sobre fondos oscuros). Ambas variantes se leen como la misma identidad de marca porque el matiz está fijo; el desplazamiento perceptual de L equilibra la legibilidad a través de ambos modos sin ajuste manual de RGB por canal.

Conversiones HEX → OKLCH comunes (Tailwind v4)

Tabla de referencia de 10 tonos medios populares de la paleta por defecto de Tailwind v4 con sus equivalentes HEX y OKLCH. Los valores coinciden con la precisión publicada de la paleta de Tailwind v4 (tres decimales en L y C, entero o un decimal en H).

Tailwind slate-500

#64748b oklch(0.55 0.04 257)

El slate-500 por defecto de Tailwind CSS — el gris frío neutro usado para texto del cuerpo, superficies secundarias y elementos de UI desenfatizados. El chroma bajo (0.04) lo mantiene visualmente neutro.

#64748b oklch(0.55 0.04 257)

slate es la rampa neutra canónica para temas amigables con el modo oscuro — cada tono de slate se sienta a chroma muy bajo así que se leen como gris en lugar de teñidos de azul.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind gray-500

#6b7280 oklch(0.55 0.03 258)

El gray-500 por defecto de Tailwind CSS — la contraparte verdaderamente neutra de slate. Chroma ligeramente más bajo que slate (0.03 vs 0.04) para una apariencia más acromática.

#6b7280 oklch(0.55 0.03 258)

gray y slate se sientan a L casi idéntica (0.55) — el brillo perceptual está emparejado, solo la pequeña diferencia de chroma los distingue.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind red-500

#ef4444 oklch(0.64 0.21 25)

El red-500 por defecto de Tailwind CSS — el rojo canónico de acción destructiva / error. El chroma alto (0.21) lo mantiene saliente contra fondos neutros.

#ef4444 oklch(0.64 0.21 25)

red-500 se sienta a L=0.64, coincidiendo con la L=0.63 de blue-500 — las rampas de v4 son perceptualmente equilibradas a través de matices, a diferencia de la paleta basada en HSL de v3.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind orange-500

#f97316 oklch(0.71 0.19 42)

El orange-500 por defecto de Tailwind CSS — el matiz cálido de acento y CTA. Se sienta entre rojo y ámbar en el círculo de matiz (42°).

#f97316 oklch(0.71 0.19 42)

La L más alta de orange-500 (0.71) vs la L de red-500 (0.64) es intencional — los amarillos y naranjas se ven brillantes a L perceptual más baja que los rojos.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind amber-500

#f59e0b oklch(0.76 0.16 70)

El amber-500 por defecto de Tailwind CSS — el matiz de advertencia / precaución, entre naranja y amarillo en la rueda.

#f59e0b oklch(0.76 0.16 70)

amber-500 alcanza la L más alta (0.76) de cualquier color de nivel 500 de Tailwind — los amarillos naturalmente necesitan L más alta para aparecer visualmente como 'tono medio'.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind green-500

#22c55e oklch(0.72 0.19 149)

El green-500 por defecto de Tailwind CSS — el matiz de éxito / confirmación. Se sienta a 149° en la rueda de matiz, en la región cian-verde.

#22c55e oklch(0.72 0.19 149)

green-500 a L=0.72 es un toque más brillante que red-500 a L=0.64 — esto coincide con la realidad perceptual (los verdes se ven brillantes) y da a la paleta un peso visual equilibrado.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind teal-500

#14b8a6 oklch(0.7 0.13 184)

El teal-500 por defecto de Tailwind CSS — el matiz frío de acento entre verde y cian. Chroma más bajo que green-500 porque los teales de alto chroma exceden sRGB fácilmente.

#14b8a6 oklch(0.7 0.13 184)

El H=184° de teal-500 se sienta justo después de cian (180°) — el cian puro en OKLCH es difícil de expresar en sRGB sin recorte de chroma; teal es el compromiso práctico.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind blue-500

#3b82f6 oklch(0.63 0.19 263)

El blue-500 por defecto de Tailwind CSS — el 'azul web' canónico de los 2020, el color de marca ancla para la paleta v4 y el tema por defecto de shadcn/ui.

#3b82f6 oklch(0.63 0.19 263)

blue-500 es el color de referencia más usado como punto de partida para migración OKLCH de Tailwind v4 — pegue #3b82f6 aquí para verificar la conversión contra el valor publicado.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind indigo-500

#6366f1 oklch(0.59 0.21 277)

El indigo-500 por defecto de Tailwind CSS — el compañero frío de acento del azul, sentado a 277° (hacia púrpura). El chroma alto (0.21) le da saliencia.

#6366f1 oklch(0.59 0.21 277)

indigo-500 se sienta a L más baja que blue-500 (0.59 vs 0.63) — el matiz más profundo absorbe más brillo aparente, y la rampa v4 lo tiene en cuenta perceptualmente.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Tailwind violet-500

#8b5cf6 oklch(0.6 0.24 295)

El violet-500 por defecto de Tailwind CSS — el matiz de acento púrpura a 295°. El chroma más alto (0.24) de cualquier color de nivel 500 de Tailwind, a menudo usado para branding de IA / productos creativos.

#8b5cf6 oklch(0.6 0.24 295)

El C=0.24 alto de violet-500 lo pone cerca del techo de la gama sRGB — empuje mucho más alto y cruzará a territorio de gama amplia solo de P3.

¿Necesita el selector de color completo con RGB, HSL, CMYK, avisos de gama y exportación de código? Pruebe el convertidor de color unificado — cada formato editable simultáneamente.

Cómo usar el convertidor HEX a OKLCH

  1. 1

    Pegue un código hex en el campo HEX

    Suelte cualquier valor hex en la entrada HEX — con o sin el `#` inicial, en abreviación de 3 dígitos (`#F73`), forma completa de 6 dígitos (`#3b82f6`), abreviación alfa de 4 dígitos (`#F738`), o forma completa alfa de 8 dígitos (`#FF573380`). El parser normaliza las cinco formas de entrada en el mismo color interno antes de derivar OKLCH. La capitalización no importa (`#3b82f6` y `#3B82F6` se analizan de forma idéntica). Los caracteres inválidos o conteos de dígitos incorrectos producen un error discreto en línea; un hex válido actualiza cada otro campo de formato en tiempo real, incluido OKLCH.

  2. 2

    Lea la tripleta OKLCH del campo OKLCH

    El campo OKLCH expone el valor en la forma moderna de CSS Color 4: `oklch(0.629 0.193 263.4)` para un color opaco, `oklch(0.629 0.193 263.4 / 0.5)` para uno con alfa. L se redondea a tres decimales (coincide con la precisión publicada de Tailwind v4), C a tres decimales, H a un decimal de grado. La fuente de verdad OKLCH interna de la herramienta significa que la precisión flotante subyacente se preserva a través de cada otro campo — los viajes de ida y vuelta de regreso a hex se mantienen bit-estables, a diferencia de los convertidores heredados con pivote HSL que derivan en uno o dos grados por viaje.

  3. 3

    Haga clic en Copiar para tomar la cadena OKLCH

    Cada tarjeta de formato tiene un botón Copiar a la derecha. Un clic y el valor aterriza en su portapapeles — la etiqueta del botón cambia brevemente a "¡Copiado!" para que lo sepa. La cadena copiada es la sintaxis canónica de CSS Color 4 (`oklch(0.629 0.193 263.4)`), lista para soltar en un bloque `@theme` de Tailwind v4 o en una definición de variable CSS de shadcn/ui. Para salida específica de plataforma (propiedad personalizada CSS, token de Tailwind v4, SwiftUI, Compose, Flutter), use la sección Copiar como código debajo del selector — esos fragmentos emiten el formato que cada plataforma espera nativamente.

  4. 4

    Compruebe las insignias de gama Display P3 / Rec.2020

    Tres insignias de gama (sRGB, Display P3, Rec.2020) muestran si el color actual cae dentro del rango reproducible de cada espacio. Si la insignia sRGB se vuelve roja pero P3 está en verde, el color es un OKLCH de gama amplia que se renderizará saturado en hardware Apple (iPhone, iPad, MacBook desde 2017+) pero se desaturará en un monitor heredado de 24 bits. El botón **Ajustar a sRGB** usa reducción binaria de chroma (algoritmo informativo de CSS Color 4 §13) para reducir el color dentro de sRGB mientras preserva L y H, produciendo un fallback hex que puede enviar vía `@supports not (color: oklch(0 0 0))`.

  5. 5

    También visibles: RGB, HSL, OKLAB, HSV, HWB, CMYK, color con nombre

    El mismo hex que pega también ilumina los otros ocho campos de formato — RGB para llamadas de canvas y hardware, HSL para variables CSS heredadas, OKLAB para matemáticas de paletas y matrices de daltonismo, HSV y HWB para flujos de selector de color de diseñadores, CMYK para estimaciones de imprenta, y el color CSS con nombre más cercano para prosa de documentación. Nunca está atrapado en hex → OKLCH solamente. El selector (cuadrado SL + deslizador de matiz + deslizador de alfa) impulsa los nueve simultáneamente, y en navegadores Chromium el botón EyeDropper muestrea cualquier píxel en pantalla, incluso fuera del navegador.

Errores comunes de HEX / OKLCH

Leer el chroma de OKLCH como saturación de HSL

El chroma de OKLCH no tiene límites (0 a ~0.4 para colores que caben en sRGB, más alto para gama amplia) — NO es un porcentaje de saturación 0-100% como la S de HSL. Asumir que C=0.3 significa "30% saturado" malinterpreta la escala: 0.3 es altamente cromático, cerca del techo sRGB para algunos matices y bastante más allá para otros. El C máximo varía por L y H — un verde a L=0.7 soporta mucho mayor C que un azul a L=0.3. Trate C como una distancia absoluta desde el gris, no como un porcentaje relativo.

✗ Incorrecto
Establecer OKLCH C = 0.3 esperando "30% de saturación":
oklch(0.7 0.3 250) → puede exceder la gama sRGB para azules
El color de gama amplia se renderiza desaturado en pantallas heredadas.
✓ Correcto
Trate C como chroma absoluto, compruebe las insignias de gama:
oklch(0.7 0.15 250) → cómodamente en sRGB para este par L+H
Use las insignias para encontrar el C máximo que cabe en la gama objetivo.

Tratar la L de OKLCH igual que la L de HSL

Ambos espacios reportan luminosidad como un eje 0-1 (o 0-100%), pero miden cosas distintas. La L de HSL es geométrica — derivada del promedio de máximo/mínimo de RGB en sRGB codificado en gamma. La L de OKLCH es perceptual — anclada al modelo OKLAB. Portar una paleta basada en HSL como `oklch(L%, C, H)` y esperar brillo coincidente produce resultados desiguales porque la relación de L entre los dos espacios no es lineal. Para colores de tono medio L=0.6 de OKLCH es aproximadamente L=50% de HSL, pero la curva deriva en los extremos oscuro y claro.

✗ Incorrecto
Copiar porcentajes de L de HSL directamente en OKLCH:
hsl(220 50% 30%) portado como oklch(0.30 0.10 220)
Los dos colores se ven notablemente distintos en brillo.
✓ Correcto
Re-derive OKLCH desde el hex original, no porte HSL:
fuente hex → conversión OKLCH → oklch(0.34 0.08 254)
La L perceptual se mantiene correcta; la paleta se siente uniforme.

Olvidar que OKLCH de gama amplia no se mostrará en sRGB

OKLCH no tiene límites — puede escribir `oklch(0.7 0.4 30)` y la sintaxis es válida, pero el chroma excede lo que el espacio de bytes de 256 por canal de sRGB puede codificar. En un monitor sRGB ese color se recorta a la aproximación dentro de gama más cercana (usualmente una versión desaturada). En un monitor Display P3 se renderiza correctamente. Enviar un OKLCH de gama amplia sin comprobar las insignias de gama produce un color que se ve distinto en pantallas distintas — un error sutil pero real de consistencia entre plataformas.

✗ Incorrecto
Enviar oklch(0.7 0.4 30) sin comprobar la gama sRGB:
Las pantallas P3 renderizan rojo saturado; las pantallas sRGB renderizan desaturado
El color de marca se ve inconsistente entre el hardware de usuario.
✓ Correcto
Compruebe la insignia de gama sRGB, Ajustar a sRGB si es necesario, en capas con @supports:
@supports (color: oklch(0 0 0)) { --primary: oklch(0.7 0.4 30); }
@supports not (color: oklch(0 0 0)) { --primary: #ef6b50; }
El hardware P3 obtiene el valor de gama amplia; el hardware sRGB obtiene el fallback ajustado.

Falta de soporte de navegador para oklch()

El análisis nativo de `oklch()` aterrizó en Chrome y Edge 111 (marzo 2023), Safari 15.4 (marzo 2022), y Firefox 113 (mayo 2023). La cobertura combinada en caniuse es del 94%+, pero el 6% restante incluye IE 11, Safari antiguo en iOS 15.3 o anterior, Android Chrome antiguo, y webviews incrustadas. Enviar `oklch()` sin un fallback a esa cola larga se renderiza como el valor CSS `inherit` o falla completamente. Detecte características siempre con `@supports` para sitios de producción con audiencias amplias.

✗ Incorrecto
Definir el color de marca solo en OKLCH:
:root { --primary: oklch(0.629 0.193 263.4); }
IE 11 y Safari antiguo de iOS no renderizan ningún color.
✓ Correcto
Capa con @supports para fallback con elegancia:
:root { --primary: #3b82f6; }
@supports (color: oklch(0 0 0)) { :root { --primary: oklch(0.629 0.193 263.4); } }
Los navegadores modernos obtienen OKLCH; los navegadores heredados obtienen el fallback hex.

Confundir OKLCH y LCH (forma polar de CIE-LAB)

CSS Color 4 envía tanto `oklch()` como `lch()`. Se ven idénticos en forma (L / C / H) pero usan espacios subyacentes distintos: `lch()` es la forma polar de CIE-LAB (1976), `oklch()` es la forma polar de OKLAB (Ottosson 2020). Los dos NO son intercambiables — `lch(60% 50 240)` y `oklch(0.6 0.15 240)` describen colores distintos. La uniformidad perceptual de CIE-LAB se rompe alrededor de azules saturados, por eso Ottosson rederivó OKLAB. Para nuevo trabajo de sistema de diseño, prefiera `oklch()` sobre `lch()`.

✗ Incorrecto
Sustituir lch() por oklch() esperando el mismo resultado:
lch(60% 50 240) ≠ oklch(0.6 0.15 240) — colores completamente distintos
Copiado y pegado entre espacios, el valor está silenciosamente equivocado.
✓ Correcto
Elija un espacio y manténgase en él:
oklch(0.629 0.193 263.4) para sistemas de diseño modernos
o lch(60% 50 240) — pero no cambie nombres de función sin re-convertir

Quién usa HEX a OKLCH

Desarrolladores frontend migrando a tokens OKLCH de Tailwind v4
Tailwind v4 estandarizó OKLCH para su paleta por defecto en enero de 2025. Migrar un código de v3 con colores de marca basados en hex significa convertir cada hex a OKLCH y soltar el resultado en el nuevo bloque `@theme`. Pegue cada hex aquí, copie el valor `oklch()`, defina `--color-primary: oklch(0.629 0.193 263.4)` y amigos. Las insignias de gama en vivo señalan cualquier color que exceda sRGB para que pueda decidir si mantener el valor de gama amplia para usuarios de Display P3 o ajustar a sRGB.
Autores de temas shadcn/ui construyendo paletas personalizadas
El tema de variables CSS de shadcn/ui usa OKLCH para cada token (`--background`, `--foreground`, `--primary`, etc.). Los temas personalizados se derivan de un hex de marca base convirtiendo a OKLCH y luego barriendo L para las variantes claro/oscuro. Pegue el hex de marca, lea la tripleta OKLCH, construya el resto del tema escalonando L mientras mantiene C y H fijos. Coincide exactamente con el flujo canónico de shadcn.
Autores de sistemas de diseño generando rampas perceptualmente uniformes
Genere una rampa 50/100/200/.../900 escalonando el canal L en incrementos OKLCH iguales mientras mantiene C y H fijos. La brecha visual entre paradas adyacentes se ve idéntica a través de cada matiz — lo que una paleta de colores de marca realmente necesita. Tailwind v4 usa exactamente esta construcción para su paleta por defecto, y shadcn/ui la refleja. Pegue cada hex de marca, lea el OKLCH, genere la rampa algorítmicamente o vía el panel de Tintes claros/Matices oscuros/Tonos debajo del selector.
Ingenieros de accesibilidad verificando contraste en espacio OKLCH
El contraste WCAG 2.1 y APCA ambos reportan contra el color sRGB resuelto, no contra la tripleta OKLCH — pero conocer la L OKLCH de un color de marca hace que el ajuste de contraste sea predecible: suba L en 0.1 para pasar AA contra blanco, baje L en 0.1 para pasar AA contra negro. La vista simultánea OKLCH + WCAG + APCA hace visible la relación. Pegue el hex de marca, observe las insignias de contraste, ajuste L en OKLCH (más predecible que HSL) hasta que el par pase ambas métricas.
Desarrolladores web construyendo tokens de color de gama amplia para pantallas modernas
La mayoría de los dispositivos Apple desde 2017 (y muchos dispositivos Android modernos) renderizan Display P3 nativamente. Definir colores de acento de marca en OKLCH le permite direccionar rojos y verdes saturados solo de P3 que ningún código hex puede codificar. Pegue un hex existente para leer su OKLCH, luego empuje el canal C por encima del techo sRGB para reclamar la saturación extra de P3. Las insignias de gama confirman que el nuevo valor cabe en P3 (y hace fallback con elegancia en pantallas solo sRGB vía compresión de chroma del navegador).
Educadores enseñando luminosidad perceptual vs geométrica
La vista simultánea OKLCH + HSL hace obvia la diferencia entre luminosidad perceptual y geométrica. Pegue un verde saturado y un azul saturado a la misma L=50% de HSL; los valores L de OKLCH difieren notablemente porque OKLCH mide el brillo realmente percibido. Arrastre el deslizador de matiz de HSL y observe la L de OKLCH oscilar mientras mantiene la L de HSL constante — la curva es la peculiaridad de gamma visualizada. Una demostración lista para el aula de por qué los sistemas de diseño migraron a OKLCH.
Mantenedores de código abierto modernizando documentación de tokens
Los documentos de sistemas de diseño más antiguos típicamente listan los colores de marca solo como códigos hex. Modernizar a OKLCH significa mostrar el mismo color en ambos espacios — el hex para compatibilidad de bloques de código, el OKLCH para la tabla de especificación y la definición de token moderna. Pegue cada hex, copie la salida OKLCH, actualice los documentos. El hash de URL compartible también permite a los colaboradores enlazar al color exacto en discusión en una issue de GitHub sin ambigüedad.

Matemáticas y canalización de HEX a OKLCH

HEX → OKLCH es una canalización de 7 pasos
La conversión enruta a través de cinco representaciones intermedias: hex → sRGB entero → sRGB normalizado (0-1) → linear-sRGB (gamma descodificada) → CIE XYZ D65 → OKLAB → OKLCH. Cada paso es una matriz o función a trozos bien definida de una fuente primaria. La herramienta ejecuta la canalización completa en cada pulsación de tecla; las matemáticas son lo suficientemente rápidas (microsegundos) que no se necesita debounce. Exponer la tupla RGB intermedia junto a OKLCH significa que puede depurar un valor OKLCH inesperado inspeccionando los canales RGB.
Función de gamma de CSS Color 4 §11.2
La conversión sRGB → linear-sRGB usa la función a trozos de CSS Color 4 §11.2: `v ≤ 0.04045 ? v/12.92 : ((v + 0.055) / 1.055)^2.4`. La forma a trozos (con un pequeño segmento lineal cerca de cero) evita la inestabilidad numérica de la forma de exponente puro en colores muy oscuros. Esta es la misma función que los perfiles ICC usan para codificar sRGB y la misma función que los navegadores usan internamente al renderizar códigos hex. La inversa para OKLCH → hex aplica la misma función en reversa: `v ≤ 0.0031308 ? v * 12.92 : 1.055 * v^(1/2.4) - 0.055`.
Matriz §15.1 de CSS Color 4: linear-sRGB ↔ XYZ D65
La matriz de CSS Color 4 §15.1 convierte linear-sRGB a CIE XYZ bajo el punto blanco D65: `X = 0.4124564 R + 0.3575761 G + 0.1804375 B`, `Y = 0.2126729 R + 0.7151522 G + 0.0721750 B`, `Z = 0.0193339 R + 0.1191920 G + 0.9503041 B`. La fila Y da la fórmula de luminancia sRGB. La matriz es la misma que se usa en cada biblioteca de gestión de color, incluyendo ICC, Adobe Color Engine, y la canalización open-source LCMS. La matriz inversa para OKLCH → hex aplica la inversa de §15.1.
Matrices OKLAB y paso de raíz cúbica de Ottosson 2020
La conversión XYZ D65 → OKLAB usa dos matrices y un paso de raíz cúbica publicados en el artículo OKLAB de Björn Ottosson de 2020. La primera matriz transforma XYZ a un espacio de respuesta de conos LMS (modelado libremente sobre las sensibilidades de los conos humanos L/M/S). Saque la raíz cúbica de cada canal para comprimir el rango dinámico de forma no lineal (el paso correctivo de uniformidad perceptual). La segunda matriz transforma LMS con raíz cúbica a las coordenadas L/a/b de OKLAB. Las tres operaciones usan los valores exactos publicados en la implementación de referencia del artículo; sin rederivaciones ni redondeos. La inversa para OKLCH → hex aplica estas matrices en reversa.
OKLAB ↔ OKLCH es cartesiana a polar
Los ejes `a` y `b` de OKLAB forman un plano de chroma perpendicular al eje L. OKLCH codifica polarmente ese plano: `C = sqrt(a² + b²)` (distancia euclidiana desde el gris), `H = atan2(b, a) * 180 / π` (ángulo en grados, envuelto a 0-360°). La inversa: `a = C * cos(H * π / 180)`, `b = C * sin(H * π / 180)`. La forma polar es preferida sobre OKLAB para almacenamiento de tokens de diseño porque el matiz es un eje estable — rotar el matiz no cruza accidentalmente por gris como puede hacer rotar `a` o `b` en OKLAB.
Detección de gama vía comprobación de rango de canal
Un color se considera dentro de la gama para un espacio objetivo (sRGB, Display P3, Rec.2020) si cada canal cae dentro de `[-ε, 1 + ε]` después de la conversión a las primarias de ese espacio, donde `ε = 1e-7` para absorber el ruido de precisión flotante alrededor de los límites. La insignia de gama para cada espacio se vuelve roja cuando cualquier canal excede el rango. OKLCH no tiene límite de gama — `oklch(0.7 0.4 30)` es una coordenada válida pero puede exceder el espacio de bytes de 256 por canal de sRGB. La comprobación se ejecuta en cada pulsación de tecla; combinada con Ajustar a sRGB, esto captura el pifia de adopción más común (OKLCH de gama amplia no mostrándose correctamente en pantallas heredadas).
Reducción binaria de chroma de Ajustar a sRGB
Ajustar a sRGB coincide con el algoritmo informativo de mapeo de gama en CSS Color 4 §13: mantenga L y H fijos en los valores actuales, búsqueda binaria de C ∈ [0, currentC] para el mayor C cuya conversión sRGB se mantenga dentro de gama. La búsqueda corre como mucho 30 iteraciones (precisión ~10⁻⁹), más que suficiente para precisión visual. Preservar L y H significa que el color ajustado se lee como la misma familia de matiz al mismo brillo — simplemente pierde saturación. No recortamos canales RGB directamente porque eso distorsiona el matiz notoriamente (especialmente en azules, que se recortan hacia el púrpura).

Buenas prácticas para flujos HEX / OKLCH

Use OKLCH como el formato de token canónico en código nuevo
Para cualquier sistema de diseño que envíe en 2025 o posteriores, defina colores de marca y rampas de paleta en OKLCH. El eje L da rampas perceptualmente uniformes automáticamente; el eje Chroma puede direccionar colores de gama amplia que hex no puede codificar. Mantenga un fallback hex para navegadores antiguos vía `@supports not (color: oklch(0 0 0))` o PostCSS en tiempo de compilación, pero haga de OKLCH la fuente de verdad en su almacén de tokens. Tailwind v4 y shadcn/ui ambos envían así; los nuevos proyectos pueden seguir su ejemplo sin fricción.
Genere rampas escalonando L, manteniendo C y H constantes
La construcción canónica de rampa OKLCH: fije C y H, barra L en incrementos iguales. Una rampa de 9 pasos `oklch(L 0.15 263)` para L = 0.1, 0.2, …, 0.9 produce espaciado visualmente uniforme a través de cada paso. Esto es exactamente lo que Tailwind v4 hace internamente. No barra C junto con L a menos que quiera que la intensidad cromática de la rampa varíe deliberadamente (raro). No derive H entre pasos — incluso una deriva de 5° hace que la rampa se sienta enredada.
Coincida con la precisión de Tailwind v4: 3 decimales L+C, 1 decimal H
La paleta por defecto de Tailwind v4 publica valores OKLCH con tres decimales en L y C, y un decimal en H — `oklch(0.629 0.193 263.4)` para blue-500. Coincidir con esta precisión en sus propios tokens significa que los flujos de pegar-en-config producen valores idénticos a los que Tailwind envía, y las herramientas de diff no señalarán diferencias espurias. El redondeo por defecto de la herramienta sigue esta convención; copiar y pegar en un bloque `@theme` es bit-exacto.
Ejecute OKLCH de gama amplia a través de la comprobación de gama Display P3
Si está apuntando a hardware Apple moderno (iPhone, iPad, MacBook desde 2017+) o enviando contenido con consciencia HDR, las insignias de gama le permiten empujar C por encima del techo sRGB para reclamar la saturación extra de P3. La compresión de chroma aplicada por el navegador evita que el color se recorte en pantallas solo sRGB. No pre-ajuste a sRGB por defecto a menos que sepa que toda su audiencia está en pantallas heredadas — eso pierde un 30%+ de la saturación que el hardware P3 puede renderizar.
Proporcione un fallback hex vía @supports para navegadores pre-2023
Aunque el soporte de navegador evergreen para `oklch()` ahora es del 94%+, la cola larga (IE 11, Android Chrome antiguo, webviews incrustadas) todavía necesita un fallback. Envuelva los tokens en `@supports (color: oklch(0 0 0))` y proporcione una variante hex en la rama alternativa. La salida de Ajustar a sRGB es exactamente ese fallback — generado automáticamente desde la tripleta OKLCH actual con L y H preservados. Los plugins PostCSS en tiempo de compilación como `postcss-oklab-function` también pueden insertar la aproximación sRGB en tiempo de compilación.
Documente tanto el OKLCH como el hex fuente en sus tokens
Cuando envíe una variable CSS como `--color-primary: oklch(0.629 0.193 263.4)`, incluya un comentario con el hex fuente: `/* source: #3b82f6 (Tailwind blue-500) */`. Seis meses después, cuando alguien necesite derivar un matiz oscuro relacionado o comprobar el valor contra un PDF de guías de marca, el hex fuente preserva el rastro completo de procedencia. OKLCH solo es significativo pero más difícil de reconocer a simple vista; el hex fuente es el identificador que la mayoría de compañeros de equipo buscarán primero.
Use el hash de URL para compartir decisiones de color en vivo
Cada cambio de color actualiza el hash de URL como `#hex=3b82f6` o `#oklch=...` automáticamente. Copie la URL en un hilo de Slack o issue de GitHub y cualquiera que la abra aterrizará en el mismo color con la misma tripleta OKLCH. Esto es más fiable que pegar una cadena OKLCH en chat — los destinatarios a veces escriben mal los decimales o envuelven la precisión incorrecta — y permite a un hilo de revisión de diseño hacer referencia a un color exacto en lugar de "el azul de marca que discutimos el martes". El hash nunca se transmite al servidor.

Preguntas frecuentes

¿Qué es el color OKLCH?
OKLCH es la forma polar de OKLAB, un espacio de color perceptualmente uniforme publicado por Björn Ottosson en 2020. Los canales son luminosidad perceptual (0-1, también escribible como 0-100%), chroma (0 hasta aproximadamente 0.4 dependiendo del matiz y la L, sin límite superior), y matiz (0-360°, conceptualmente idéntico al matiz de HSL). Se deriva de CIE-LAB enrutando a través de una etapa de respuesta de conos LMS con un paso de raíz cúbica. CSS Color 4 añadió la sintaxis `oklch()` en 2022. Tailwind v4 estandarizó OKLCH para su paleta por defecto en 2025. Ejemplo: `oklch(0.629 0.193 263.4)` es el blue-500 de Tailwind.
¿Es OKLCH mejor que HSL?
Para sistemas de diseño, sí. La L (lightness) de HSL es geométrica — derivada promediando el máximo y mínimo de RGB — y hereda la curva de gamma de sRGB, así que `hsl(60 100% 50%)` (amarillo) se ve visiblemente más brillante que `hsl(240 100% 50%)` (azul) aunque ambos reporten L=50%. La L de OKLCH es perceptual, anclada al modelo OKLAB de Ottosson 2020. La consecuencia práctica: una rampa OKLCH a L uniforme se ve visualmente uniforme a través de cada matiz; una rampa HSL necesita correcciones por matiz ajustadas a mano para verse uniforme. Por esto Tailwind v4 migró su paleta por defecto de generación basada en HSL a basada en OKLCH.
¿Qué navegadores soportan oklch()?
Todos los navegadores evergreen desde mediados de 2023: Chrome y Edge 111 (marzo 2023), Safari 15.4 (marzo 2022, el aterrizaje más temprano), Firefox 113 (mayo 2023). La cobertura combinada en caniuse supera el 94%. Para la cola larga — IE 11, Safari antiguo, Android Chrome en hardware heredado — envuelva sus tokens en `@supports (color: oklch(0 0 0))` y proporcione un fallback hex o `hsl()` en la rama alternativa. Herramientas en tiempo de compilación como PostCSS `postcss-oklab-function` también pueden insertar una aproximación sRGB junto al valor OKLCH en tiempo de compilación.
¿Por qué usar OKLCH en Tailwind v4?
Tailwind v4 (lanzado en enero de 2025) movió su paleta por defecto de generación basada en HSL a basada en OKLCH específicamente porque OKLCH da rampas perceptualmente uniformes automáticamente. Bajo el sistema HSL de v3, `red-500` y `blue-500` tenían pesos percibidos visiblemente distintos a pesar de L% HSL idénticos, lo que forzaba a los diseñadores a ajustar a mano paradas individuales; bajo v4, ambos se ven equilibrados porque ambos se sientan en la misma L OKLCH. OKLCH también desbloquea colores Display P3 de gama amplia que ningún código hex puede codificar — un token de Tailwind v4 como `oklch(0.65 0.25 30)` puede direccionar rojos P3 que exceden sRGB. La compilación sigue emitiendo fallbacks hex para navegadores antiguos.
¿Es OKLCH perceptualmente uniforme?
Sí — esa es la intención del diseño. OKLCH hereda la uniformidad perceptual de OKLAB, el espacio de color de Björn Ottosson de 2020 diseñado específicamente para corregir las no-uniformidades de CIE-LAB (el mejor espacio perceptualmente uniforme anterior). Un paso fijo en el canal L corresponde a un paso fijo de brillo percibido. Un paso fijo en C corresponde a un paso fijo de chroma percibido. Las aproximaciones de CIELAB se rompen alrededor de colores muy saturados; OKLAB y su forma polar OKLCH se mantienen precisos a través de la gama, por eso cada herramienta moderna de sistema de diseño (Tailwind v4, shadcn/ui, Radix Colors v3) estandarizó sobre él.
¿Cómo se lee un valor OKLCH?
`oklch(L C H)` — tres números, opcionalmente con `/ A` para alfa. L es luminosidad perceptual de 0 (negro) a 1 (blanco); la forma numérica y la forma de porcentaje son equivalentes (`0.6` y `60%`). C es chroma de 0 (gris) hasta aproximadamente 0.4 para los colores sRGB más saturados; no hay límite superior duro, los colores de gama amplia pueden excederlo. H es matiz en grados de 0 a 360, igual que HSL (0/360 = rojo, 120 = verde, 240 = azul). Ejemplo: `oklch(0.629 0.193 263.4)` es el blue-500 de Tailwind — brillante, altamente cromático, en el arco azul.
¿Cuál es la diferencia entre OKLCH y LCH?
Ambos son formas polares (Lightness / Chroma / Hue) de un espacio de color de la familia CIE-LAB. LCH es la forma polar de CIE-LAB, el espacio perceptualmente uniforme de 1976. OKLCH es la forma polar de OKLAB, la actualización de Ottosson de 2020. La diferencia: la uniformidad perceptual de CIE-LAB se rompe alrededor de azules y púrpuras altamente saturados (una debilidad documentada del modelo), así que una rampa LCH a través de colores saturados se ve sutilmente desigual. OKLAB lo corrige rederivando las matrices a partir de una etapa de respuesta de conos LMS corregida. Ambos vienen en CSS Color 4 (sintaxis `lch()` y `oklch()`); para nuevo trabajo de sistema de diseño en 2025, prefiera OKLCH.
¿Cómo convierto hex a OKLCH?
La canalización es: analice hex `#RRGGBB` a canales sRGB enteros vía `parseInt(hex, 16)`, normalice a 0-1, descodifique gamma a linear-sRGB vía la función a trozos de CSS Color 4 §11.2, multiplique por la matriz §15.1 para obtener CIE XYZ D65, multiplique por la matriz LMS de Ottosson y saque raíz cúbica a cada canal, multiplique por la matriz OKLAB de Ottosson para obtener L/a/b, luego cartesiana a polar: `C = sqrt(a² + b²); H = atan2(b, a) * 180 / π`. La canalización completa se ejecuta en microsegundos. Esta herramienta la ejecuta en vivo mientras escribe — `#3b82f6` aterriza como `oklch(0.629 0.193 263.4)` al instante.

Herramientas relacionadas

Ver todas las herramientas →

Conversor de Bases — Binario, Hex, Decimal, Octal

Herramientas de Conversión

Convierte números entre binario, hexadecimal, decimal, octal y cualquier base personalizada (2-36) al instante. Gratis, privado, sin registro — todo el procesamiento ocurre en tu navegador.

Convertidor de Color — HEX, RGB, HSL y OKLCH

Herramientas de Conversión

Convierta HEX a RGB, HSL, OKLCH, OKLAB y CMYK en su navegador — copie cualquier formato con un clic. Gratis, sin registro, sus colores nunca salen de la página.

Convertidor HEX a CMYK

Herramientas de Conversión

Convierta colores HEX a CMYK en su navegador. Aproximación ingenua basada en sRGB para vistas previas de imprenta. Gratis, sin registro, sus colores nunca salen de la página.

Convertidor HEX a HSL

Herramientas de Conversión

Convierta cualquier color hex a HSL en su navegador — admite hex de 3 dígitos, 6 dígitos y 8 dígitos con alfa. Gratis, instantáneo, sin registro, sus colores nunca salen de la página.

Convertidor HEX a RGB

Herramientas de Conversión

Convierta cualquier código de color hex a RGB en su navegador — admite hex de 3 dígitos, 6 dígitos y 8 dígitos con alfa. Gratis, instantáneo, sin registro, sus colores nunca salen de la página.

Comprimir Imágenes Online — JPEG, PNG y WebP

Herramientas de Conversión

Reduce el tamaño de las imágenes hasta un 80% — comprime JPEG, PNG y WebP en tu navegador, sin subir archivos. Lotes de 20 imágenes, ajusta la calidad, compara antes y después. Gratis y privado.