La herramienta que necesitas, lista para usar

Convertidor Unicode

La ñ es U+00F1 (241 en decimal), la A es U+0041 y 😀 es U+1F600. Escribe un carácter en la casilla de texto para ver sus puntos de código, o pega U+00F1, \u00F1 o ñ en la casilla de código para obtener el carácter. La ficha de abajo muestra el nombre, el bloque y la versión de Unicode 18.0, además de nueve notaciones que puedes copiar una a una.

Última modificación 2026-10-22Todo el cálculo ocurre en tu navegador
Ejemplos

Caracteres visibles
0
Puntos de código
0
Longitud UTF-16
0
Bytes UTF-8
0

Tira de puntos de códigoLos puntos de código que forman un carácter visible van agrupados. Pulsa uno para ver su ficha abajo.

Ficha del carácter

    Mapa del espacio de códigoRecorre plano → 256 celdas → caracteres vecinos

    • Hangul
    • Latino, griego, cirílico
    • Símbolos y emoji
    • Otras escrituras
    • Han y kana
    • Sustitutos y uso privado
    Caracteres vecinos

    Última modificación 2026-10-22No guardamos lo que escribes

    Criterio ROBERINLa herramienta que necesitas,
    lista para usar.
    • Claro a primera vistaEntradas y resultados donde los esperas.
    • Primero el resultadoLa cifra clave va primero; el proceso solo cuando lo necesitas.
    • Pedir menosSin registro ni datos innecesarios.

    El punto de código es el número que Unicode da a cada carácter

    Unicode es una tabla que asigna un número a cada carácter, y ese número se llama punto de código. La letra ñ es U+00F1 (241 en decimal), la A es U+0041 (65) y 😀 es U+1F600 (128512). El valor que sigue a U+ está en hexadecimal y se completa con ceros hasta tener al menos cuatro cifras. Los números van de U+0000 a U+10FFFF, en total 1.114.112, y Unicode 18.0, publicado en 2026, tiene asignados 172.808 caracteres.

    Esta herramienta pone una casilla de texto y una de código una junto a la otra, y reescribe la contraria cada vez que editas una. El código puede escribirse en notación U+, como \u00F1 para JavaScript y JSON, \u{F1} para ES2015, \U0001F600 para Python, ñ y ñ para HTML, \F1 para CSS, o como número decimal o con 0x: nueve notaciones, y un valor pegado en cualquiera de ellas se reconoce y se descifra. La ficha de abajo muestra el nombre oficial, el bloque, la categoría general y la versión del carácter elegido, y el mapa del espacio de código enseña dónde está entre los 1.114.112 puntos de código.

    Cuándo hay que mirar los puntos de código

    Casi siempre no hace falta saber el número de un carácter. Hace falta cuando el texto se ve roto, cuando no puedes teclear un carácter en el código o cuando lo que ves no coincide con lo que se ha guardado.

    • Una búsqueda que no encuentra «canción»: la ó puede ser un solo punto de código (U+00F3) o una o (U+006F) con una tilde combinante (U+0301). Se ven igual, pero en una comparación exacta o en una búsqueda sencilla pueden no coincidir, y lo mismo pasa con la ñ (U+00F1 frente a n más U+0303).
    • Archivos de macOS: los nombres de archivo de un volumen HFS Plus se guardan totalmente descompuestos, de modo que «canción.pdf» puede estar formado por o más U+0301. Copiado a otro sistema, el nombre parece idéntico pero puede no coincidir al compararlo.
    • Leer registros y respuestas de una API: un texto como Espa\u00F1a en un registro del servidor o en una respuesta JSON no se lee a primera vista. Pégalo en la casilla de código y se convierte en España.
    • Símbolos en páginas web: un símbolo difícil de teclear va en HTML como → (→) o en un valor content de CSS como "\2192". Cada lugar tiene su sintaxis, así que a menudo hay que reescribir un carácter en varias notaciones.
    • Límites de longitud y tamaño de almacenamiento: 👩‍💻 es un carácter visible, pero son 3 puntos de código, una longitud de 5 en JavaScript y 11 bytes en UTF-8. Según la unidad que cuente un límite de formulario o una columna de base de datos, el mismo texto pasa o se corta.
    • Caracteres invisibles: un espacio de ancho cero (U+200B) escondido en un número de pedido o en una dirección copiados hace fallar la comparación y la búsqueda aunque se vean iguales. Una BOM (U+FEFF) al principio de un archivo puede quedar pegada al primer encabezado de un CSV y cambiarle el nombre.
    • Cuadrados en lugar de caracteres: cuando un carácter se ve como un cuadrado (□) o un signo de interrogación, hay que distinguir entre un número sin asignar y un carácter añadido en una versión reciente que la fuente de tu dispositivo aún no tiene. El nombre y la línea Añadido en de la ficha ayudan.

    Cómo se usa

    1. Escribe o pega caracteres en la casilla de texto y la de código muestra sus puntos de código. En sentido contrario, escribe U+00F1, \u00F1 o ñ en la casilla de código y los caracteres aparecen en la de texto. Separa varios valores con espacios o comas.
    2. Elige uno de los botones de notación: U+, decimal, 0x, \u, \u{…}, Python, HTML hexadecimal, HTML decimal o CSS. Si la casilla de código contiene otra notación, el botón la reescribe en la que elijas, así que sirve también para pasar de una notación a otra.
    3. Con «Dejar el ASCII tal cual» activado, las notaciones con escape no tocan letras, cifras ni símbolos y solo convierten el resto. Desactívalo para escribir todos los caracteres como número. Los botones AB y ab fijan si los dígitos hexadecimales van en mayúsculas o minúsculas.
    4. Pulsa una celda de la tira de puntos de código para ver en la ficha su nombre, bloque, categoría, versión y diez valores. El botón de copiar al final de cada línea copia solo esa notación.
    5. Pulsa un plano o una celda del mapa del espacio de código, o los botones ‹ › de la ficha, para recorrer los vecinos. Con «Añadir a la casilla de texto» incorporas el carácter que quieras.

    Nueve formas de escribir el mismo carácter

    Un punto de código es un solo número, pero cada lugar donde se usa tiene su propia sintaxis. La tabla muestra la ñ (U+00F1) y 😀 (U+1F600) en cada notación. Como 😀 supera U+FFFF, algunas notaciones lo escriben de una pieza y otras lo parten en dos.

    Notaciónñ😀Dónde se usa
    Notación U+U+00F1U+1F600Documentos de Unicode, tablas de caracteres y textos explicativos
    Decimal241128512Valores numéricos en programas (codePointAt de JavaScript, ord de Python)
    Hexadecimal 0x0x00F10x1F600Constantes numéricas y arrays en C, Java y lenguajes parecidos
    Escape \u\u00F1\uD83D\uDE00Cadenas de JavaScript, JSON y Java (unidades UTF-16)
    Escape \u{…}\u{F1}\u{1F600}JavaScript desde ES2015 y cadenas de Rust y Swift
    Python\u00F1\U0001F600Cadenas de Python (\U lleva ocho cifras)
    HTML hexadecimalñ😀Documentos HTML y XML
    HTML decimalñ😀Documentos HTML y XML
    CSS\F1\1F600Valores content y selectores de CSS
    Bytes UTF-8C3 B1F0 9F 98 80Los bytes reales en archivos y en la red
    Unidades UTF-1600F1D83D DE00La unidad con la que JavaScript, Java y Windows guardan el texto

    JSON y Java admiten exactamente cuatro cifras tras \u, así que un carácter por encima de U+FFFF se escribe como el par sustituto que se explica en la sección siguiente. Python distingue el \u de cuatro cifras del \U de ocho. CSS admite de una a seis cifras hexadecimales tras la barra invertida y cierra el escape con un único espacio si detrás viene una cifra hexadecimal o un espacio. Una referencia de carácter HTML se cierra con punto y coma. La herramienta entiende todas estas reglas al leer lo que pegas, así que un mismo texto puede mezclar escapes y referencias de caracteres. Los valores U+ y 0x solo se leen como lista separada por espacios o comas; si van mezclados con escapes se quedan como texto y la herramienta lo avisa. Las referencias numéricas HTML de € a Ÿ siguen el estándar HTML y se leen con la tabla Windows-1252 (– pasa a ser –).

    Por qué 😀 se escribe con dos escapes, \uD83D\uDE00

    UTF-16 guarda el texto en unidades de 16 bits. Con 16 bits solo se llega a U+FFFF, así que un punto de código mayor se escribe con dos valores de un rango reservado (U+D800 a U+DFFF) llamados sustitutos. Para 😀 (U+1F600) el cálculo es este.

    1. Resta 0x10000 al punto de código: 0x1F600 − 0x10000 = 0xF600.
    2. Divide los 20 bits restantes en los 10 de arriba y los 10 de abajo. En 0xF600, los 10 de arriba son 0x3D y los 10 de abajo son 0x200.
    3. Suma 0xD800 al valor de arriba y 0xDC00 al de abajo: 0xD800 + 0x3D = 0xD83D y 0xDC00 + 0x200 = 0xDE00.
    CarácterPunto de códigoUTF-16 (par sustituto)Bytes UTF-8
    😀U+1F600D83D DE00F0 9F 98 80
    👍U+1F44DD83D DC4DF0 9F 91 8D
    𝄞U+1D11ED834 DD1EF0 9D 84 9E
    𠀀U+20000D840 DC00F0 A0 80 80

    Por eso '😀'.length vale 2 en JavaScript y JSON escribe \uD83D\uDE00. Un sustituto alto (D800 a DBFF) debe ir seguido de uno bajo (DC00 a DFFF); uno suelto no es un carácter. La herramienta señala como error un valor sustituto como U+D800 o un \uD83D sin pareja.

    Cuatro formas de contar caracteres

    El número de caracteres depende de lo que se cuente. Lo que en pantalla parece un carácter es un grupo de grafemas, tal como lo define UAX #29. El recuento de puntos de código es la cantidad de números de Unicode, la longitud UTF-16 es el valor que devuelve length en JavaScript, y los bytes UTF-8 son el tamaño al guardar el texto en un archivo. Las cuatro casillas sobre la casilla de texto muestran estos valores.

    TextoCaracteres visiblesPuntos de códigoUTF-16Bytes UTF-8Qué cambia
    A1111Con ASCII los cuatro valores coinciden
    ñ1112Una letra latina con signo diacrítico ocupa 2 bytes en UTF-8
    €1113El signo del euro ocupa 3 bytes pero una sola unidad UTF-16
    ñ (n + U+0303)1223Una tilde combinante se pega a la letra anterior
    😀1124Supera U+FFFF, así que son dos unidades UTF-16
    👍🏽1248Lleva pegado un modificador de tono de piel (U+1F3FD)
    🇪🇸1248Una bandera son dos letras indicadoras regionales, E y S
    👩‍💻13511Una ZWJ (U+200D) une dos emoji

    Por eso, antes de fijar un límite como «20 caracteres como máximo», hay que decidir qué se cuenta. A las personas les importan los caracteres visibles, al almacenamiento le importan los bytes UTF-8, y las posiciones de slice y substring en JavaScript son unidades UTF-16. Si cortas un emoji por la mitad en un límite UTF-16, queda un sustituto sin pareja, que se ve como un carácter roto (�).

    Sílabas hangul: una fórmula para el punto de código

    Las 11.172 sílabas hangul precompuestas (U+AC00 a U+D7A3) están dispuestas como 19 iniciales × 21 vocales × 28 finales (incluida la ausencia de final), así que su número se puede calcular. El apartado 3.12 del estándar Unicode da la fórmula siguiente, con todos los índices contados desde 0.

    punto de código = 0xAC00 + (inicial × 21 + vocal) × 28 + final

    SílabaInicialVocalFinalCálculoPunto de código
    가ㄱ 0ㅏ 0sin final 0AC00 + (0 × 21 + 0) × 28 + 0U+AC00
    한ㅎ 18ㅏ 0ㄴ 4AC00 + (18 × 21 + 0) × 28 + 4 = AC00 + 10.588U+D55C
    힣ㅎ 18ㅣ 20ㅎ 27AC00 + (18 × 21 + 20) × 28 + 27 = AC00 + 11.171U+D7A3

    En sentido inverso, resta 0xAC00 y divide entre 588 (21 × 28): el cociente es la inicial, el resto dividido entre 28 da la vocal, y lo que queda es el final. La línea «Como jamo» de la ficha muestra la misma sílaba separada en el bloque Hangul Jamo, y el nombre oficial de una sílaba sale de la misma regla, de modo que 한 es HANGUL SYLLABLE HAN.

    El mapa del espacio de código: 17 planos

    Los 1.114.112 puntos de código se reparten en 17 planos de 65.536 (0x10000). Lo que precede a las últimas cuatro cifras es el número de plano: el 1 de U+1F600. En el mapa de la herramienta, un tablero grande es un plano dividido en 256 celdas de 256 puntos de código, y cada celda se colorea según el grupo de bloques que más la ocupa.

    PlanoRangoNombreQué contiene
    0U+0000 a U+FFFFPlano Multilingüe Básico (BMP)Latino, griego, cirílico, hangul, han de uso común, kana y la mayoría de las escrituras actuales, los sustitutos (D800 a DFFF) y el área de uso privado (E000 a F8FF)
    1U+10000 a U+1FFFFPlano Multilingüe Suplementario (SMP)La mayoría de los emoji, escrituras históricas, letras matemáticas, símbolos musicales
    2U+20000 a U+2FFFFPlano Ideográfico Suplementario (SIP)Ideogramas unificados CJK, extensiones B a F e I, suplemento de ideogramas de compatibilidad CJK
    3U+30000 a U+3FFFFPlano Ideográfico Terciario (TIP)Ideogramas unificados CJK, extensiones G, H y J, Seal (Unicode 18.0)
    4 a 13U+40000 a U+DFFFFSin asignarTodavía no tienen caracteres asignados
    14U+E0000 a U+EFFFFPlano Suplementario de Propósito Especial (SSP)Caracteres de etiqueta, suplemento de selectores de variación
    15 y 16U+F0000 a U+10FFFFÁreas de Uso Privado Suplementarias A y BÁreas que cada organización o fuente define por su cuenta

    Los dos tramos más anchos del plano 0 son los ideogramas unificados CJK (U+4E00 a U+9FFF, 20.992 puntos de código) y las sílabas hangul (U+AC00 a U+D7A3, 11.172 caracteres). Justo después, U+D800 a U+DFFF está reservado para los sustitutos y no tiene caracteres, y U+E000 a U+F8FF es un área de uso privado que se deja sin nombre. Los planos 1 a 16 se escriben todos como pares sustitutos en UTF-16.

    Caracteres que no se ven

    Los caracteres que parecen espacios, o que no se ven en absoluto, también tienen punto de código. La tira de puntos de código y la ficha los muestran como etiquetas en cajas de borde discontinuo, de modo que se ve enseguida qué se esconde en un texto pegado.

    EtiquetaPunto de códigoNombre oficialDónde aparece
    NBSPU+00A0NO-BREAK SPACE (espacio de no separación)  en páginas web, espacios pegados en procesadores de texto
    ZWSPU+200BZERO WIDTH SPACE (espacio de ancho cero)Texto copiado de la web, lugares que marcan dónde puede haber un salto de línea
    ZWJU+200DZERO WIDTH JOINER (unión de ancho cero)La unión que convierte dos emoji en uno, como en 👩‍💻
    VS16U+FE0FVARIATION SELECTOR-16 (selector de variación 16)Pide el aspecto de emoji en color, como en ❤️
    BOMU+FEFFZERO WIDTH NO-BREAK SPACE (marca de orden de bytes)El comienzo de archivos guardados por algunos editores
    IDSPU+3000IDEOGRAPHIC SPACE (espacio ideográfico)Textos en japonés y chino, espacios escritos en modo de ancho completo
    HFU+3164HANGUL FILLER (relleno de hangul)Parece vacío, por lo que a veces se usa en apodos
    SHYU+00ADSOFT HYPHEN (guion blando)Un guion que solo se ve donde se parte una palabra al final de la línea

    El salto de línea también es un carácter. El Bloc de notas de Windows termina la línea con dos caracteres, CR (U+000D) y LF (U+000A), mientras que macOS y Linux suelen usar solo LF. Sin embargo, una casilla de texto del navegador convierte un CR LF pegado en un único LF, así que, para ver los finales de línea de un archivo tal como son, hace falta una herramienta que muestre bytes, como un conversor de UTF-8 hexadecimal.

    Normalización: NFC y NFD

    A veces Unicode permite escribir el mismo texto de dos maneras. La ñ suelta (U+00F1) y el par n más tilde combinante (U+006E U+0303) se ven idénticas, y Unicode las considera el mismo texto (equivalencia canónica). Forzar la forma compuesta se llama NFC y forzar la forma descompuesta, NFD (UAX #15). Con el hangul pasa lo mismo: 한 es U+D55C en NFC y tres jamo, U+1112 U+1161 U+11AB, en NFD.

    CarácterNFC (compuesta)NFD (descompuesta)
    ñU+00F1U+006E U+0303
    éU+00E9U+0065 U+0301
    üU+00FCU+0075 U+0308
    çU+00E7U+0063 U+0327

    La comparación, la búsqueda y los nombres de archivo suelen tratar como valores distintos las formas de normalización diferentes. Si la casilla de texto contiene caracteres descompuestos, la herramienta te lo avisa, y los botones «Componer a NFC» y «Descomponer a NFD» convierten todo de una vez. La normalización de compatibilidad (NFKC y NFKD), que iguala formas como las de ancho medio y ancho completo o ① y 1, no se hace aquí.

    Errores frecuentes

    • Escribir en decimal el valor que sigue a U+: el F1 de U+00F1 es hexadecimal. Si escribes el decimal 241 como U+241, obtienes un carácter completamente distinto. La herramienta lee un número sin prefijo como hexadecimal y, si solo tiene cifras, ofrece un botón para leerlo como decimal.
    • Copiar valores sustitutos como puntos de código: pasar \uD83D\uDE00 a U+D83D U+DE00 no da un carácter. El punto de código es el único U+1F600.
    • Las cifras tras \u: \u en JavaScript y JSON lleva exactamente cuatro cifras, y \U en Python exactamente ocho. \u1F600 se lee como U+1F60 (ὠ) seguido de la cifra 0.
    • Las cifras tras un escape de CSS: en CSS, "\00F11" se lee como U+00F11. Para escribir un 1 después de la ñ hay que cerrar el escape con un espacio: "\00F1 1".
    • Omitir el punto y coma de una referencia HTML: &#241 sin punto y coma se lee de forma distinta según lo que venga detrás, o se trata como un error. Ciérrala así: ñ.
    • Juzgar por la forma: la A latina (U+0041), la Α griega (U+0391) y la А cirílica (U+0410) se ven igual pero son caracteres distintos. Mezcladas en una dirección o en un identificador, hacen fallar la búsqueda y el inicio de sesión, así que conviene comprobarlo con los puntos de código.

    Límites

    • Los nombres, bloques, categorías generales y versiones proceden de los datos de Unicode 18.0. La forma de los caracteres la dibujan las fuentes de tu dispositivo, de modo que un carácter que está en los datos aún puede verse como un cuadrado.
    • Los caracteres visibles se cuentan con las reglas de grafemas del navegador (Intl.Segmenter). Según la versión de Unicode que conozca tu navegador, las secuencias de emoji recientes pueden contarse de otra manera.
    • No se leen la notación \N{nombre} de Python ni los escapes octales. \x se lee como punto de código (U+0000 a U+00FF), no como byte; para convertir bytes UTF-8 en texto, usa un conversor de UTF-8 hexadecimal.
    • CSS lee \0, los sustitutos y los valores mayores que U+10FFFF como U+FFFD, pero esta herramienta señala como errores los sustitutos y los valores fuera de rango.
    • No incluye la normalización de compatibilidad (NFKC y NFKD), el cambio entre mayúsculas y minúsculas ni la búsqueda por nombre de carácter.
    • La casilla de texto convierte hasta 200.000 caracteres, y la tira de puntos de código dibuja los primeros 400.
    • La conversión se hace solo en tu navegador. La herramienta descarga una vez el archivo de datos con los nombres de los caracteres, y los caracteres o códigos que escribes nunca se envían a un servidor.

    Base: la notación U+, los planos, los sustitutos y la regla de las sílabas hangul siguen la especificación básica de Unicode 18.0; los nombres, bloques y versiones, la base de datos de caracteres de Unicode 18.0 (UCD); la sintaxis de los escapes, las especificaciones de ECMAScript, Python, HTML y CSS y el RFC 8259, todo comprobado el 22 de octubre de 2026. Los valores de las tablas se recalcularon con el núcleo de conversión de esta herramienta y se compararon.

    Fuentes

    Preguntas frecuentes

    ¿Cuál es el punto de código Unicode de la ñ?

    La ñ precompuesta es U+00F1, 241 en decimal. En JavaScript y JSON se escribe \u00F1, en HTML ñ o ñ, y en UTF-8 ocupa dos bytes, C3 B1. Una ñ descompuesta es otra secuencia: n (U+006E) más una tilde combinante (U+0303).

    ¿Cómo convierto un código como U+00F1 en el carácter?

    Escribe U+00F1 en la casilla de código y la casilla de texto mostrará ñ. Los valores escritos en otras notaciones, como \u00F1, ñ, ñ o 0xF1, se pueden pegar tal cual y la herramienta reconoce la notación. Separa varios valores con espacios o comas.

    ¿Por qué 😀 aparece como dos escapes, \uD83D\uDE00?

    😀 es un único punto de código, U+1F600. El escape \u de JavaScript, JSON y Java admite exactamente cuatro dígitos hexadecimales (una unidad UTF-16), así que lo que supera U+FFFF se escribe como un par sustituto, \uD83D\uDE00. Con \u{1F600} o con \U0001F600 de Python se escribe de una sola vez.

    ¿Por qué la longitud de un emoji sale 2 o 5?

    La propiedad length de JavaScript cuenta unidades UTF-16. 😀 es un punto de código, pero ocupa dos unidades UTF-16, y 👩‍💻 son tres puntos de código (U+1F469, U+200D y U+1F4BB), que suman cinco unidades. Esta herramienta muestra juntos los caracteres visibles, los puntos de código, la longitud UTF-16 y los bytes UTF-8.

    ¿Por qué dos ñ idénticas a la vista tienen distintos puntos de código?

    La ñ precompuesta es un solo punto de código, U+00F1, mientras que la descompuesta son dos: n (U+006E) y una tilde combinante (U+0303). Se ven igual y Unicode las considera equivalentes, pero una comparación exacta de cadenas puede distinguirlas. El botón Componer a NFC las iguala.

    ¿Cómo encuentro los caracteres que no se ven?

    Pega el texto en la casilla de texto. La tira de puntos de código marca con etiquetas de borde discontinuo el espacio de ancho cero (ZWSP, U+200B), la marca de orden de bytes (BOM, U+FEFF) y el espacio de no separación (NBSP, U+00A0). Sirve cuando un número o una dirección copiados se comportan de forma extraña.

    ¿Cuántos puntos de código tiene Unicode?

    De U+0000 a U+10FFFF hay 1.114.112 puntos de código, repartidos en 17 planos de 65.536. Unicode 18.0 asigna 172.808 caracteres. El rango de sustitutos U+D800 a U+DFFF nunca se usa para caracteres.

    ¿Se envía al servidor el texto que escribo?

    No. La conversión se hace solo en tu navegador. La herramienta descarga una vez el archivo de datos de Unicode 18.0 para mostrar los nombres, pero los caracteres o códigos que escribes no se envían ni se guardan.