Alfa hexadecimal a porcentaje de opacidad #RRGGBBAA
Descubra la opacidad escondida en un color hex: el último par de #33669980 es 80, que corresponde al byte 128 y a una opacidad del 50,2 %, no al 50 % que muchos suponen. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Hex
- #33669980
- Alfa en hex
- 80
- Byte alfa
- 128
- Opacidad (%)
- 50,2
Este conversor de alfa hexadecimal a opacidad lee los dos últimos dígitos de un color RRGGBBAA de ocho cifras y transforma ese byte en un porcentaje de 0% a 100%. Valida el color completo antes de calcular, admite una almohadilla inicial opcional y devuelve el color normalizado, el par alfa, el byte decimal y el porcentaje de opacidad. El resultado es determinista y se redondea siempre a dos decimales, por lo que resulta adecuado para tokens de diseño, revisiones de CSS, migraciones automatizadas, documentación y pruebas que necesitan un valor numérico estable en lugar de una estimación visual.
Lea el byte alfa en la posición correcta
Un color hexadecimal de ocho dígitos en el orden de CSS contiene cuatro pares de bytes: rojo, verde, azul y alfa. Por tanto, el byte alfa es siempre el último par de RRGGBBAA. Por ejemplo, los pares de #33669980 son 33, 66, 99 y 80, así que este conversor utiliza 80.
El orden importa porque algunas herramientas gráficas y formatos antiguos emplean AARRGGBB, con alfa al principio. Esta capacidad no adivina convenciones ni reorganiza canales. Solo acepta RRGGBBAA, con o sin una almohadilla inicial.
Comprueba los ocho dígitos aunque únicamente los dos últimos determinen el porcentaje. Validar el valor completo evita que un color incorrecto como #ZZZZZZ80 parezca fiable solo porque su par alfa sea válido. Si su fuente guarda alfa al principio, convierta primero el formato.
Convierta el byte en un porcentaje estable
Un byte hexadecimal abarca de 00 a FF, equivalentes a valores decimales entre 0 y 255. La opacidad comparte esos extremos: el byte 0 es totalmente transparente y el byte 255 es totalmente opaco. La conversión divide el byte alfa decimal entre 255 y multiplica el resultado por 100.
Por ejemplo, un alfa 80 equivale al decimal 128 y produce 50.2, no el 50 supuesto. Los extremos siguen siendo exactos: 00 devuelve 0 y FF devuelve 100. El campo numérico no incluye el signo de porcentaje, por lo que puede compararse, ordenarse, serializarse o utilizarse en otros cálculos sin limpiar texto.
Valide la entrada y use el resultado con seguridad
El tratamiento estricto de entradas es esencial cuando los colores circulan por sistemas de diseño, generadores de código o migraciones de hojas de estilo. El conversor rechaza valores ausentes, tipos que no sean cadenas, longitudes incorrectas y caracteres distintos de 0-9 o A-F. Ignora espacios alrededor de una cadena válida y acepta mayúsculas o minúsculas, pero no repara silenciosamente colores abreviados, RGB de seis dígitos, almohadillas dobles ni valores con alfa al principio.
Así, una canalización automática puede detenerse pronto y mostrar el problema real. La salida correcta sirve para auditar tokens, traducir un color suministrado a una etiqueta de opacidad legible, revisar CSS generado y crear casos de regresión. También explica por qué el valor 80, considerado medio transparente, equivale aproximadamente a 50.2%.
Qué puede hacer con ella
Auditar tokens de diseño
Convierta bytes alfa integrados en porcentajes legibles y conserve el byte exacto para su trazabilidad.
Revisar CSS generado
Confirme que un color RRGGBBAA exportado contiene la opacidad prevista por diseñadores y desarrolladores.
Crear casos de migración
Genere valores estables de opacidad para pruebas que trasladan colores de ocho dígitos a otra representación.
Preguntas frecuentes
¿Qué orden hexadecimal de ocho dígitos se admite?
El orden requerido es RRGGBBAA, con alfa en los dos últimos dígitos. AARRGGBB no se admite como convención alternativa.
¿Puedo incluir la almohadilla inicial?
Sí. Tanto #33669980 como 33669980 son válidos y producen el mismo resultado normalizado.
¿Cómo se calcula el porcentaje?
El par alfa se interpreta como byte, se divide entre 255, se multiplica por 100 y se redondea a dos decimales.
¿Por qué el alfa 80 produce 50.2 y no 50?
El hexadecimal 80 equivale al decimal 128, y 128 dividido entre 255 es algo mayor que la mitad. El resultado con dos decimales es 50.2.
¿Qué opacidad dan los pares alfa 00 y FF?
El 00 da un 0 %, un color totalmente transparente, y el FF, que es el byte 255, da un 100 %, un color totalmente opaco. Cada par intermedio se divide entre 255 y se multiplica por 100.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/color/hex-alpha-to-opacity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hex":"#33669980"}'const res = await fetch("https://api.kit.forhosting.com/color/hex-alpha-to-opacity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hex": "#33669980"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/hex-alpha-to-opacity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hex": "#33669980"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/hex-alpha-to-opacity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hex":"#33669980"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hex":"#33669980"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/hex-alpha-to-opacity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"hex": "#33669980"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.hex_alpha_to_opacity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Lea el byte alfa en la posición correcta
La respuesta incluye un hexadecimal canónico en minúsculas y conserva el par extraído en alpha_hex, para que usted pueda comprobar qué byte originó el cálculo.
Convierta el byte en un porcentaje estable
Como la mayoría de los valores intermedios no producen un porcentaje decimal finito, opacity_percent se redondea a dos decimales. La regla es fija y determinista: una entrada idéntica siempre genera el mismo JSON, sin depender del idioma del navegador, la hora, la red ni la configuración del equipo. La respuesta conserva alpha_byte junto al porcentaje redondeado para mantener el valor original de ocho bits cuando sea necesario.
Valide la entrada y use el resultado con seguridad
Una entrada rechazada genera un error invalid_input con un mensaje útil, en lugar de devolver un porcentaje engañoso. Una conversión por API cuesta $0.002; el cálculo puro no depende de la red y también admite ejecución inmediata en el navegador. Use opacity_percent como presentación redondeada y alpha_byte como fuente exacta para recorridos sin pérdida.
Preguntas técnicas
¿Qué ocurre si el color no es válido?
La solicitud devuelve un error invalid_input que describe el valor ausente, la longitud incorrecta, el tipo erróneo o el carácter no válido.
¿Cuánto cuesta una conversión mediante API?
Una conversión cuesta $0.002.