Saltar al contenido principal

Texto a binario

Este conversor muestra los bytes UTF-8 detrás de cualquier texto como grupos binarios de 8 bits, y viceversa. Los caracteres ASCII usan un byte, los emoji usan cuatro; el decodificador rechaza entrada que no sea múltiplo de 8 bits o no sea UTF-8 válido. Todo se ejecuta localmente en tu navegador.

Solo local

Texto a binario: explicación

No existe el binario de una letra: los bits describen bytes, y los bytes dependen de la codificación. Esta herramienta muestra la codificación que la web adoptó —UTF-8, según RFC 3629—, en la que cada carácter de a a 🙂 es de uno a cuatro bytes, representados como grupos de 8 bits.

La codificación es autodescriptiva: el primer byte anuncia la longitud. Un byte que empieza con 0 es un byte ASCII; 110 empieza dos; 1110 empieza tres; 11110 empieza cuatro; cada byte de continuación empieza con 10. Memoriza esa regla y la salida se vuelve legible.

El interruptor de dirección decodifica hacia atrás: pega bits, obtén texto. Decodificar es deliberadamente estricto: un conteo de bits que no sea un número entero de bytes, o bytes que rompan las reglas de continuación de UTF-8, son rechazados en lugar de decodificarse en caracteres de reemplazo. La conversión ocurre en esta pestaña; no se sube nada.

Los bits crudos son para ver; cuando esos bytes tienen que viajar por un canal solo de texto, base64 es el envoltorio estándar, y el Guía de Base64 explicada explica por qué fue diseñado así.

El binario es verboso —ocho caracteres por byte— y el Comparación Base64 vs hexadecimal muestra por qué hexadecimal suele ganar en papel y cómo se relacionan las dos notaciones.

Cómo el texto se convierte en bits

El conversor pasa tu texto al TextEncoder del propio navegador, que emite bytes UTF-8 directamente. Eso importa para los emoji: las cadenas de JavaScript almacenan 🙂 como dos mitades sustitutas, pero el codificador trabaja con puntos de código, por lo que produce una secuencia de cuatro bytes. Cada byte se rellena exactamente con ocho bits y se agrupa —ocho bytes por línea por defecto.

  • Codificar: la cadena se convierte en bytes UTF-8 mediante TextEncoder —sin BOM, sin dependencia de locale.
  • Renderizar: cada byte se escribe como 8 bits, con relleno de ceros —0x48 es 01001000, no 1001000.
  • Agrupar: los bytes se separan con espacios, las líneas con saltos de línea, según la agrupación que elijas.
  • Decodificar: el camino inverso elimina cada carácter que no sea 01, reensambla bytes y decodifica UTF-8 de forma estricta.

Leyendo la salida: el byte inicial te dice la longitud

El objetivo de diseño de UTF-8 era la compatibilidad con ASCII, y los patrones lo demuestran. ASCII mantiene sus códigos de un byte familiares —01000001 es A en ambos—, mientras que las secuencias más largas se construyen con bytes iniciales y de continuación en patrones fijos:

  • é (U+00E9) es 11000011 10101001 —un byte inicial de dos bytes y uno de continuación.
  • 🙂 (U+1F642) es 11110000 10011111 10011001 10000010 —la forma de cuatro bytes.
  • Un byte con prefijo 10 aislado es una continuación sin inicial —la firma clásica de corrupción.
Rango de punto de códigoBytesPatrón
U+0000 – U+007F (ASCII)10xxxxxxx
U+0080 – U+07FF2110xxxxx 10xxxxxx
U+0800 – U+FFFF31110xxxx 10xxxxxx 10xxxxxx
U+10000 – U+10FFFF (los emoji viven aquí)411110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Lo que el decodificador rechaza y por qué

Decodificar acepta formato deliberadamente desordenado: espacios, comas y saltos de línea se eliminan antes de analizar. Quedan dos rechazos: un conteo de bits que no sea múltiplo de 8 no puede dividirse en bytes —el error informa el conteo exacto— y los bytes que rompan los patrones anteriores son rechazados por un decodificador UTF-8 fatal en lugar de reemplazarse con U+FFFD.

Ese segundo rechazo ahorra tardes: un decodificador permisivo convierte una secuencia rota en una cadena de marcas � que parecen plausibles y están erradas en silencio. Rechazar significa que se investiga la causa en lugar de enviarse.

Dónde aparecen los grupos de 8 bits en otros lugares

La red llama a un byte octeto: una dirección IPv4 es cuatro de estos grupos en decimal, y una máscara de subred es una secuencia de 1s seguidos de 0s en los mismos 32 bits. La vista binaria también explica mojibake —é en UTF-8 es 11000011 10101001, y si se lee como Latin-1 esos bytes son à y ©, el patrón é que ves cuando UTF-8 se decodifica con la codificación incorrecta. Ver los bytes es el diagnóstico más rápido.

Preguntas frecuentes

¿Al convertir texto a binario se sube algo?

No. Los bytes vienen del TextEncoder integrado del navegador, decodificado por su TextDecoder —ambos en esta pestaña; no se realiza ninguna solicitud durante una conversión, lo que confirma el panel Network de DevTools. La página se sirve con connect-src 'self', por lo que el navegador rechazaría cualquier llamada saliente que un script intentara.

¿La forma binaria de un carácter es siempre la misma?

No —depende de la codificación. é es dos bytes (11000011 10101001) en UTF-8, un byte (11101001) en Latin-1. Esta herramienta siempre usa UTF-8, el estándar de la web según RFC 3629, coincidiendo con lo que transmiten los navegadores y lo que asumen la mayoría de formatos de archivo.

¿Cuántos bits ocupa un emoji en UTF-8?

La mayoría ocupa cuatro bytes —32 bits— porque están por encima de U+10000, el rango que UTF-8 codifica con un byte inicial 11110xxx y tres de continuación. Algunos símbolos antiguos como ☺ están por debajo de U+10000 y ocupan tres. ASCII es el otro extremo: un byte por carácter.

¿Por qué mi decodificación fue rechazada por no ser múltiplo de 8?

Los solo se convierten en bytes en grupos completos de ocho; un resto significa que falta o sobra algo —un pegado truncado, una línea eliminada, un dígito suelto. El error indica el conteo exacto de bits. El formato nunca es la causa: espacios y saltos de línea se eliminantes antes del conteo.

¿Qué significa el error de UTF-8 inválido en decodificación?

Los bytes rompieron el contrato de UTF-8: un byte de continuación sin inicial, una secuencia multibyte cortada al final, o un patrón imposible. La herramienta decodifica de forma fatal —rechazando en lugar de sustituir con marcas U+FFFD— porque una salida mojibake en silencio es peor que un error. Datos que nunca fueron UTF-8, como texto Latin-1, activan esto por diseño.

¿Puedo pegar binario con espacios o saltos de línea?

Sí. Se elimina cada carácter que no sea 0 o 1 antes de analizar, por lo que grupos espaciados, volcados de un byte por línea y listas separadas por comas se analizan todos. Si los propios dígitos están dañados, la decodificación estricta lo detecta —se perdonan el formato, no los datos.