FreeToGenerate.com

Basado en la propiedad de Unicode, no en la lista corta de siempre.

Pega el texto que quieres revisar

Todo ocurre en tu navegador. Pega un mensaje, un nombre de archivo, un commit o cualquier cosa que se comporte de forma rara al buscarla o compararla.

Qué hay ahí dentro

30 caracteres ocultos encontrados · 29 de ellos son invisibles según la propia definición de Unicode

Punto de códigoNombre UnicodeTipoVecesEn
U+200BZERO WIDTH SPACEancho cero17
U+00A0NO-BREAK SPACEespacio que no es un espacio normal115
U+E0069TAG LATIN SMALL LETTER Icarácter de etiqueta, no se dibuja421, 32, 37, 45
U+E0067TAG LATIN SMALL LETTER Gcarácter de etiqueta, no se dibuja122
U+E006ETAG LATIN SMALL LETTER Ncarácter de etiqueta, no se dibuja323, 38, 47
U+E006FTAG LATIN SMALL LETTER Ocarácter de etiqueta, no se dibuja324, 33, 46
U+E0072TAG LATIN SMALL LETTER Rcarácter de etiqueta, no se dibuja325, 29, 41
U+E0065TAG LATIN SMALL LETTER Ecarácter de etiqueta, no se dibuja226, 30
U+E0020TAG SPACEcarácter de etiqueta, no se dibuja227, 36
U+E0070TAG LATIN SMALL LETTER Pcarácter de etiqueta, no se dibuja128
U+E0076TAG LATIN SMALL LETTER Vcarácter de etiqueta, no se dibuja131
U+E0075TAG LATIN SMALL LETTER Ucarácter de etiqueta, no se dibuja234, 42
U+E0073TAG LATIN SMALL LETTER Scarácter de etiqueta, no se dibuja335, 39, 48
U+E0074TAG LATIN SMALL LETTER Tcarácter de etiqueta, no se dibuja240, 44
U+E0063TAG LATIN SMALL LETTER Ccarácter de etiqueta, no se dibuja143

Texto escondido en el bloque de etiquetas

ignore previous instructions

Los caracteres de etiqueta reflejan el ASCII con un desplazamiento fijo y no se dibujan en absoluto, así que una frase entera puede viajar dentro de un texto que parece limpio. Esto es lo que deletrean.

En qué se diferencia de un limpiador de texto

Casi todas las herramientas que quitan caracteres invisibles llevan una lista escrita a mano con los pocos que su autor se había cruzado. Nuestro propio limpiador cubre trece puntos de código. La propiedad Default_Ignorable_Code_Point de Unicode cubre 4.174, de los cuales 405 están asignados y tienen nombre: así que 392 caracteres con nombre son invisibles por definición y una lista corta ni los menciona.

El bloque de etiquetas son 97 caracteres que reflejan el ASCII y no se dibujan. Pertenecen a las secuencias de banderas emoji, y también son la forma de colar texto dentro de un mensaje que parece corriente.

No todo lo de aquí es invisible según la definición de Unicode. También se marcan un espacio duro o un carácter de control, porque no son el carácter que aparentan ser, y la tabla dice en qué autoridad se apoya cada fila.

483 · 405 · 392

La lista de caracteres se genera a partir de los propios archivos DerivedCoreProperties y UnicodeData de Unicode. Las posiciones se cuentan en puntos de código, así que un emoji o un carácter de etiqueta cuenta una vez y no dos.

También disponible en: English · Português · Français · العربية

Detector de caracteres invisibles: encuentra los ocultos

Todos los caracteres invisibles, ignorables y disfrazados de tu texto, con nombre, recuento y posición.

¿Qué es un carácter invisible?

Un carácter invisible es un punto de código que no ocupa espacio visible pero está de verdad en el texto. Algunos son útiles: un unidor de ancho cero es lo que convierte dos emojis en uno, y un guion blando marca por dónde puede partirse una palabra. Otros son estructurales, como los controles bidireccionales que permiten al árabe y al español compartir una línea. Y otros están ahí porque alguien los puso.

Dan problemas porque el software los ve y tú no. Una búsqueda que debería coincidir no coincide. Dos cadenas que parecen idénticas se comparan como distintas. Una clave de API copiada gana un carácter por el medio y deja de funcionar, sin nada en pantalla que lo explique.

Esta página los encuentra, nombra cada uno con su nombre oficial de Unicode y su punto de código, y te dice en qué parte del texto está. El ejemplo cargado arriba se lee como veinte caracteres visibles y en realidad mide cuarenta y nueve puntos de código.

Cómo usarla

  1. Pega el texto. Lo que sea: un mensaje, un nombre de archivo, una celda de hoja de cálculo, un commit que no hay manera de encontrar con grep. Se revisa en tu navegador y no se sube nunca.
  2. Lee la tabla. Cada fila es un carácter, con su punto de código, su nombre Unicode, qué tipo de cosa es, cuántas veces aparece y dónde.
  3. Y quítalos si quieres. Un botón elimina todos los caracteres ocultos y convierte los espacios raros en espacios normales en vez de borrarlos, para que las palabras que se veían separadas sigan separadas.

Por qué encuentra más que un limpiador

Casi todas las herramientas que quitan caracteres invisibles llevan una lista escrita a mano con los pocos con los que se topó su autor. Eso vale también para el limpiador de texto de este sitio: su lista cubre trece puntos de código, y es la razón de que exista esta página.

Unicode publica la respuesta de verdad en una propiedad llamada Default_Ignorable_Code_Point, que marca los caracteres para los que un renderizador no debe dibujar nada. Cubre 4.174 puntos de código, y 405 de ellos son caracteres asignados con nombre. Así que una lista de trece se deja fuera 392 caracteres con nombre que son invisibles por definición: los 260 selectores de variación, el bloque de etiquetas entero con sus 97 caracteres, el unidor de grafemas, la marca de letra árabe, los rellenos del hangul.

Ahora bien, no todo lo que merece marcarse es ignorable, así que la tabla dice en qué autoridad se apoya cada fila. Un espacio duro se ve perfectamente como espacio, pero no es el espacio por el que corta un analizador, y un carácter de control en mitad de una línea es invisible sin que Unicode lo llame ignorable. Se informa de ambos, y de ambos se dice lo que son.

El bloque de etiquetas y el texto que no ves

Noventa y siete caracteres entre U+E0001 y U+E007F reflejan el ASCII exactamente. La A mayúscula de etiqueta es la A más un desplazamiento fijo, el espacio de etiqueta es un espacio, y ninguno de ellos se dibuja en absoluto. Tienen un trabajo legítimo dentro de las secuencias de banderas emoji, que es como se codifican las banderas de Inglaterra, Escocia y Gales.

También son la forma de que una frase viaje dentro de un texto que parece de lo más normal. Pega aquí algo que los contenga y aparecerá arriba la línea descifrada, deletreando lo que estaba escondido. El ejemplo cargado en esta página es justo eso: veinte caracteres visibles que transportan una instrucción que nadie ve.

Esto ha pasado de curiosidad a cosa que conviene comprobar, porque hoy el texto se pega constantemente en sistemas que leen todos los caracteres y no solo los que ve una persona. Sea el texto oculto una marca de agua, un rastreador o una instrucción, el primer paso honesto es poder mirarlo.

Lo que esta página no puede decirte

No puede decirte por qué está ahí un carácter. Un unidor de ancho cero en mitad de un emoji está haciendo su trabajo; el mismo carácter entre dos letras no. La herramienta informa de lo que hay y te deja a ti el juicio, porque el mismo punto de código es legítimo en un contexto y sospechoso en otro.

También trabaja con puntos de código y no con lo que tú llamarías letras. Es la unidad correcta aquí —cada carácter de etiqueta y cada selector de variación moderno vive por encima del plano multilingüe básico, así que un detector que recorriera el texto de la forma ingenua partiría cada uno en dos y no encontraría ninguno—, pero implica que un emoji de bandera o con tono de piel cuenta como varios puntos de código y no como un símbolo.

Por último, un resultado limpio significa que no hay nada oculto que Unicode nombre. Un texto todavía puede engañar de formas que esta página no cubre, sobre todo usando letras de otro alfabeto idénticas a las latinas. Ese es otro problema, y otra página.

¿Por qué es gratis?

La lista de caracteres son unos pocos kilobytes que viajan con la página, y el análisis corre en tu navegador. Nada de lo que pegas se sube, no se registra nada y no hay cuenta que crear.

Sin registro, sin límites y sin marca de agua en nada de lo que copies.