Conversor de emoji a Unicode
Pega un emoji, o una frase entera con emojis, y obtén todos los formatos que necesita un desarrollador: puntos de código Unicode, entidades HTML, escapes de CSS y JavaScript, Python y los bytes UTF-8 en bruto. También funciona al revés. Todo se ejecuta en tu navegador, y el contador de longitud muestra por qué un solo emoji puede contar como siete caracteres en un lenguaje y veintiocho bytes en otro.
- Caracteres que ves
- 3
- Puntos de código (len de Python)
- 6
- Unidades UTF-16 (.length de JS)
- 10
- Bytes UTF-8
- 22
| Puntos de código Unicode | U+1F44D U+1F3FD U+2764 U+FE0F U+1F1EF U+1F1F5 | |
|---|---|---|
| Entidad HTML (hexadecimal) | 👍🏽❤️🇯🇵 | |
| Entidad HTML (decimal) | 👍🏽❤️🇯🇵 | |
| Content de CSS | \1F44D \1F3FD \2764 \FE0F \1F1EF \1F1F5 | |
| JavaScript (ES6) | \u{1F44D}\u{1F3FD}\u2764\uFE0F\u{1F1EF}\u{1F1F5} | |
| UTF-16 (Java, C#, JSON) | \uD83D\uDC4D\uD83C\uDFFD\u2764\uFE0F\uD83C\uDDEF\uD83C\uDDF5 | |
| Python | \U0001F44D\U0001F3FD\u2764\uFE0F\U0001F1EF\U0001F1F5 | |
| Bytes UTF-8 | F0 9F 91 8D F0 9F 8F BD E2 9D A4 EF B8 8F F0 9F 87 AF F0 9F 87 B5 | |
| Codificado para URL | %F0%9F%91%8D%F0%9F%8F%BD%E2%9D%A4%EF%B8%8F%F0%9F%87%AF%F0%9F%87%B5 |
Ocho emojis, cuatro longitudes distintas
Cada fila de abajo es un solo emoji en pantalla. Las demás columnas muestran lo que cuentan distintos lenguajes y bases de datos, calculado con el mismo conversor de la herramienta de arriba.
| Emoji | Puntos de código | Visibles | Python | JavaScript | Bytes UTF-8 |
|---|---|---|---|---|---|
| 😀Un solo punto de código | U+1F600 | 1 | 1 | 2 | 4 |
| ❤️Símbolo de texto más selector de estilo | U+2764 U+FE0F | 1 | 2 | 2 | 6 |
| 👍🏽Emoji más tono de piel | U+1F44D U+1F3FD | 1 | 2 | 4 | 8 |
| 🇯🇵Dos letras de indicador regional | U+1F1EF U+1F1F5 | 1 | 2 | 4 | 8 |
| 👩💻Unido con un conector de ancho cero | U+1F469 U+200D U+1F4BB | 1 | 3 | 5 | 11 |
| 1️⃣Dígito, selector y tecla | U+0031 U+FE0F U+20E3 | 1 | 3 | 3 | 7 |
| 🏴Secuencia de etiquetas | U+1F3F4 U+E0067 U+E0062 U+E0073 U+E0063 U+E0074 U+E007F | 1 | 7 | 14 | 28 |
| Emoji 18.0 (2026) | U+1FAFA | 1 | 1 | 2 | 4 |
Por qué un emoji puede medir siete caracteres
Los puntos de código son los números que asigna Unicode, y un emoji puede construirse con varios de ellos. La bandera de Escocia es el caso más claro: una bandera negra, cinco letras de etiqueta invisibles que forman gbsct y una etiqueta de cierre, siete puntos de código en total. JavaScript guarda el texto en UTF-16, donde todo lo que está por encima de U+FFFF ocupa dos unidades, así que esa misma bandera tiene un .length de 14. UTF-8 gasta cuatro bytes en cada uno de esos puntos de código, de modo que ocupa 28 bytes en una base de datos. Solo un número coincide con lo que ve una persona, y es justo el que casi ningún código pregunta. En JavaScript, cuenta con Intl.Segmenter y la granularidad en grapheme; en Python, el patrón \X del módulo regex de terceros hace lo mismo.
Guardar emojis en MySQL sin signos de interrogación
Si los emojis se convierten en ???? al guardar, es casi seguro que la columna usa el juego de caracteres utf8 de MySQL, que pese a su nombre guarda como máximo tres bytes por carácter. Todos los emojis por encima de U+FFFF necesitan cuatro, así que la inserción falla o pierde los datos. La solución es utf8mb4: convierte la tabla con ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci y asegúrate de que la propia conexión también use utf8mb4, porque una tabla correcta detrás de una conexión utf8 sigue estropeando el texto. MySQL 8.0 hizo de utf8mb4 el valor predeterminado, así que esto afecta sobre todo a bases de datos antiguas que se actualizaron en lugar de crearse de cero.
Entidades HTML, CSS y el espacio final
En una página servida como UTF-8, que son casi todas, puedes pegar el emoji directamente en el HTML; las entidades como 👍 solo hacen falta cuando una plantilla o un sistema de correo estropea los caracteres en bruto. CSS es más quisquilloso. En una propiedad content, un escape como \1F44D sigue hasta el primer carácter que no es hexadecimal, así que si el siguiente carácter pudiera leerse como hexadecimal, tienes que cerrar el escape con un espacio. Ese espacio se consume, no se imprime. Nuestra fila de CSS siempre lo incluye entre puntos de código, y por eso un pulgar arriba con tono de piel sale como \1F44D \1F3FD, con un hueco que está ahí a propósito.
Por qué X cuenta cada emoji como dos caracteres
Los límites de caracteres son otro lugar donde los recuentos no coinciden. La biblioteca de recuento de código abierto de X cuenta la mayoría de los emojis como dos caracteres para el límite de 280, estén hechos de lo que estén, así que 👍 y 👩💻 cuestan lo mismo aunque uno sea un solo punto de código y el otro tres. Los SMS son más duros: un solo emoji obliga a codificar todo el mensaje en UCS-2, lo que reduce un mensaje de 160 caracteres a 70. Si un formulario, una columna de base de datos o una red social rechaza un texto que parece corto, la tabla de longitudes de arriba suele explicar por qué.
Glosario de emojis: puntos de código, conectores y selectoresCódigos cortos de emojis para Slack, Discord y GitHubTodos los emojis para copiar
Preguntas sobre los puntos de código de los emojis
¿Cuál es el código Unicode del emoji sonriente?
😀 cara sonriente es U+1F600. En HTML escribe 😀, en CSS \1F600, en JavaScript \u{1F600} o el antiguo \uD83D\uDE00, y en Python \U0001F600. Pega cualquier otro emoji en el conversor para ver sus códigos.
¿Por qué un emoji tiene dos puntos de código?
Muchos emojis son secuencias. ❤️ es el símbolo del corazón U+2764 más el selector de estilo U+FE0F, 👍🏽 es un pulgar arriba más un tono de piel, y las banderas son dos letras. Tu dispositivo dibuja la secuencia como una sola imagen.
¿Qué diferencia hay entre \u{1F600} y \uD83D\uDE00?
Son el mismo emoji. \u{1F600} nombra directamente el punto de código y funciona en JavaScript moderno. \uD83D\uDE00 es el par sustituto de UTF-16, la única forma que aceptan el JavaScript antiguo, Java, C# y JSON para caracteres por encima de U+FFFF.
¿Cuántos bytes ocupa un emoji?
En UTF-8, cuatro bytes por cada punto de código por encima de U+FFFF, así que un emoji sencillo como 😀 ocupa cuatro bytes. Las secuencias se suman: 👍🏽 ocupa 8 bytes, 👩💻 ocupa 11 y la bandera de Escocia, 28.
¿Este conversor envía mi texto a algún sitio?
No. La conversión se hace por completo en tu navegador con JavaScript. Nada de lo que escribas o pegues se sube ni se guarda.
