El texto se divide en puntos de código Unicode en lugar de unidades UTF-16, de modo que los emoji y los caracteres de planos suplementarios no se parten por la mitad. Cada punto de código se compara con un conjunto seleccionado de caracteres problemáticos: caracteres de formato de ancho cero y bidireccionales, la marca de orden de bytes, espacios no ASCII, caracteres de control C0 y C1, y letras cirílicas o griegas que imitan a las latinas. Además, se comprueba en toda la cadena si hay finales de línea mezclados y normalización Unicode distinta de NFC.
Una importación CSV falla en la primera columna. Una API key pegada en un archivo de configuración nunca autentica. Dos contraseñas parecen idénticas pero una es rechazada. Un git diff marca todas las líneas como modificadas. Una expresión regular no encuentra una palabra que claramente está ahí. En todos estos casos el texto no es lo que aparenta, y ninguna herramienta que dependa de mirarlo puede ayudar.
Todo se ejecuta en tu navegador. El texto que pegas nunca se envía a un servidor, nunca se guarda en almacenamiento y nunca se incluye en analíticas. Aquí importa especialmente, porque las cadenas que la gente trae a esta herramienta suelen ser API keys, tokens y contraseñas.
Preguntas y respuestas frecuentes sobre este tema.
Pega el texto en el panel izquierdo. Las banderas de resumen en la parte superior del panel de resultados indican cuántos tipos de problema se han encontrado; al pulsar una, saltas a la primera aparición. La vista carácter por carácter de abajo muestra cada punto de código sospechoso como un marcador pulsable, y al seleccionarlo se explica qué es y qué hacer.
Es un carácter de formato que se representa sin ancho alguno, pensado originalmente como punto de corte de línea. Para una persona no está ahí; para un programa es un punto de código más en la cadena. Por eso una dirección de correo o una API key con un espacio de ancho cero en medio se ve perfectamente correcta en pantalla pero nunca coincide con el valor almacenado.
En la práctica hay cinco que se repiten: el espacio de ancho cero U+200B y sus parientes, el espacio duro U+00A0 procedente de copiar páginas web, la marca de orden de bytes U+FEFF al inicio de un archivo, el espacio de ancho completo U+3000 de los métodos de entrada de Asia Oriental, y las letras cirílicas o griegas que imitan a las latinas. Esta herramienta señala todos ellos, junto con los caracteres de control C0 y C1 y espacios tipográficos como el espacio fino.
Un espacio normal es U+0020, el que produce la barra espaciadora. Un espacio duro es U+00A0: se ve igual, pero indica al motor de composición que no corte la línea ahí, y suele llegar al copiar de una página web. Un espacio de ancho completo es U+3000, visiblemente más ancho, producido por métodos de entrada de Asia Oriental. Los tres se dibujan en blanco, pero solo U+0020 coincide con un patrón de espacio ASCII, así que los otros dos rompen en silencio el recorte, la división y el análisis de columnas.
Hay dos causas independientes. La primera es un carácter invisible perdido en una de ellas: un espacio de ancho cero, un espacio duro o un BOM. La segunda es la normalización Unicode: la letra é puede ser un único punto de código (NFC) o la letra e seguida de un acento combinante (NFD). Ambas se dibujan igual, pero son secuencias distintas y la comparación byte a byte falla. Los nombres de archivo de macOS y algunos métodos de entrada producen NFD, así que el texto que pasa entre sistemas puede cambiar de forma en silencio. Esta herramienta señala ambas causas.
Comprueba un conjunto seleccionado de caracteres que se sabe que rompen cosas: caracteres de formato de ancho cero y bidireccionales, el BOM, espacios no ASCII, caracteres de control C0 y C1, y homoglifos cirílicos o griegos, además de finales de línea mezclados y normalización distinta de NFC en toda la cadena. No modifica tu entrada, no sube nada y no es un linter Unicode completo: los problemas raros o específicos de una escritura fuera de ese conjunto no se señalan. Copiar el texto limpio es una comodidad, no el resultado principal; el resultado principal es el diagnóstico.