Detector de Caracteres Ocultos
Pega texto y el detector resalta cada carácter Unicode invisible que encuentra: espacios de ancho cero, joiners, marcas direccionales y guiones suaves, cada uno etiquetado con su punto de código.
Caracteres que detecta esta herramienta
Los caracteres Unicode invisibles más comunes que el detector busca, con lo que realmente hace cada uno
Marca una oportunidad de salto de línea. Se puede plantar dentro de un identificador para que coincida de forma distinta a como se lee.
Evita la unión de caracteres en escrituras cursivas como el árabe y el persa. Invisible, pero cambia cómo se conectan los glifos adyacentes.
El pegamento de las secuencias ZWJ de emoji: un emoji de familia son cuatro emoji unidos por tres caracteres U+200D, renderizados como un solo glifo.
Fuerza la dirección del texto de izquierda a derecha sin un glifo visible. Legítimo en texto de dirección mixta; abusado en suplantación bidi.
Fuerza la dirección de derecha a izquierda. Mismo doble uso que U+200E: necesario para hebreo y árabe, utilizado como arma en phishing.
Invisible hasta que una línea corta en esa posición, cuando se renderiza como un guion. Suele importarse por accidente al copiar de PDFs.
Por qué los caracteres invisibles son un problema real
Los caracteres Unicode invisibles existen por razones legítimas: control de salto de línea, unión de escrituras cursivas, texto bidireccional, silabación opcional. Pero como se renderizan como nada, también son una herramienta de abuso. El paper Trojan Source (CVE-2021-42574, divulgado en octubre de 2021) demostró que los caracteres de override bidireccional podían hacer que el código fuente compilase de forma distinta a como se lee en pantalla. La divulgación complementaria (CVE-2021-42694) cubrió los ataques de homoglifos, donde una а cirílica (U+0430) reemplaza una a latina (U+0061) en un nombre de función. Más cerca del uso cotidiano, los caracteres de ancho cero se pegan en nombres de usuario e identificadores para que dos cadenas que se ven idénticas comparen como diferentes. Un detector que saque a la luz estos caracteres por punto de código es la forma más rápida de encontrarlos, porque no se pueden ver a simple vista.
Para qué es útil esto
Qué debería buscar un barrido serio
Los seis caracteres listados arriba son los más comunes, pero no son el cuadro completo. Un barrido a fondo cubre varios rangos. Los caracteres de formato de ancho cero de U+200B a U+200F cubren oportunidades de salto de línea, joiners y marcas direccionales. U+2060 (word joiner) y U+FEFF (marca de orden de bytes, cuando aparece en medio del flujo) también son de ancho cero. El bloque de override bidireccional —U+202A a U+202E, más U+2066 a U+2069— es lo que explota Trojan Source. U+00AD (guión suave) es invisible hasta que hay un corte de línea. Los rellenos Hangul U+115F y U+3164 y el blanco braille U+2800 no renderizan nada pero ocupan una celda, lo que los hace útiles para esconder contenido a plena vista. La detección de confundibles es un problema relacionado pero distinto: una а cirílica y una a latina son visibles ambas, así que un detector de caracteres no las marca. Para eso necesitas una verificación contra los datos de confusables de Unicode, que mapea los caracteres que se parecen a un esqueleto normalizado.
Cómo usar bien el detector
Pega solo el texto que quieres revisar. Todo corre en tu navegador; nada se sube a ningún lado.
Usa el código de colores para distinguir los tipos de carácter de un vistazo: rojo para ZWSP, verde para ZWJ, naranja para RLM, y demás.
Tras detectar, haz clic en Eliminar para quitar todos los caracteres invisibles, y luego en Copiar Texto Limpio para llevar la versión saneada.
Revisa cualquier nombre de usuario, slug o identificador que venga de entrada de usuario antes de almacenarlo o compararlo.
Si una comparación de cadenas falla y las cadenas se ven idénticas, pega ambas aquí: un U+200B oculto suele ser la causa.
Para código fuente de terceros, rastrea U+202A a U+202E antes de leerlo. Son los overrides bidi detrás de Trojan Source.
Cómo funciona el detector
El detector corre por completo en tu navegador como JavaScript. Ningún texto sale de tu dispositivo, lo cual importa cuando pegas identificadores sensibles o código fuente. Funciona en Chrome, Firefox, Safari, Edge y cualquier navegador moderno en escritorio o móvil. Rastrea los caracteres de ancho cero del rango U+200B a U+200F, los overrides bidireccionales de U+202A a U+202E y de U+2066 a U+2069, el word joiner U+2060, el guión suave U+00AD y la marca de orden de bytes U+FEFF cuando aparece fuera de la primera posición de un archivo. Ojo: marca los caracteres invisibles por punto de código; no detecta homoglifos, que son caracteres visibles que simplemente se parecen a otros.
