Ir al contenido
Ghostchars

Saca la basura invisible de tu texto.

Pega lo que quieras. Encontramos espacios de ancho cero, caracteres tag de contrabando, letras parecidas, la marca de agua invisible de la IA y otros caracteres que no puedes ver, sin destrozar tus emojis ni tu texto en otros idiomas.

  • Funciona en tu navegador
  • Sin registro
  • Gratis y sin límites
  • Código abierto

No se sube nada. La limpieza ocurre en esta misma página.

Tu texto se analiza en el navegador. Presiona Limpiar texto para ver los resultados aquí abajo.

Nivel de limpieza

El nivel estándar solo elimina caracteres que no puedes ver. El máximo también reescribe texto que sí ves: letras parecidas, comillas, guiones y espaciado. Por eso es una decisión y no el valor por defecto.

Los ajustes por defecto ya eliminan todos los caracteres que son invisibles y no hacen ningún trabajo: caracteres de ancho cero, marcas de orden de bytes, guiones opcionales, operadores matemáticos invisibles, anulaciones bidi, caracteres tag y selectores de variación sueltos, no caracteres y otros controles de formato. Todo lo que viene a continuación va más allá: o cambia texto que puedes ver, o elimina caracteres que están cumpliendo una función. Por eso lo decides tú.

Espacios y composición

Los espacios de no separación (NBSP), finos e ideográficos pasan a ser un espacio normal. Desactivado porque el NBSP suele estar puesto a propósito.
CRLF, CR, NEL y los separadores Unicode de línea y de párrafo pasan a ser un salto de línea normal.
Quita la barra que una terminal copia delante de cada línea citada. Desactivado porque los árboles de carpetas usan la misma barra.
Los espacios aparcados al final de una línea pueden codificar un mensaje oculto (la técnica SNOW).
Los espacios dobles entre palabras pueden transportar datos binarios. Desactivado porque altera las composiciones de ancho fijo.

Letras y puntuación

La а cirílica en «аmigo» pasa a ser la a latina. Solo actúa dentro de palabras que mezclan alfabetos, así que un texto ruso o griego normal queda intacto. Desactivado por defecto porque reescribe letras.
La raya, las comillas tipográficas, los puntos suspensivos y el signo menos pasan a ASCII. Se usa a menudo como «señal de IA», pero también es simplemente buena tipografía.
Los acentos compuestos o descompuestos (la é como un carácter o como dos) pueden codificar bits. NFC elige una sola forma.
Además unifica las formas de ancho completo, los superíndices y las ligaduras. Cambia más de lo que esperarías y sustituye a NFC.

Controles

Ya eliminamos las anulaciones bidi y las marcas que aparecen en prosa de izquierda a derecha. Esta opción elimina también las que acompañan al hebreo o al árabe, donde sí hacen un trabajo real de composición.
Controles C0 y C1 distintos del tabulador y el salto de línea.
Rompe las fuentes de iconos y algunos glifos de marca, que es justo donde suelen vivir estos caracteres.

Agresivo

Elimina todas las uniones de ancho cero y los selectores de variación, incluidos los que mantienen unido a 👨‍👩‍👧 y los que necesitan el persa, el hindi y las secuencias de banderas. Úsalo solo cuando quieras letras y nada más.

ZWSPTAG U+E0053

Presiona Limpiar texto y te enseñamos exactamente qué había escondido ahí dentro: primero en lenguaje claro y, debajo, los puntos de código si los quieres.

  • Tu texto nunca sale de esta páginaNo hay subida, ni llamada a ningún servidor, ni analítica sobre lo que pegas. Apaga el wifi y sigue funcionando.
  • Gratis, sin límites y sin cuentaSin tope de caracteres, sin cuota diaria y sin pedirte el correo antes de enseñarte los resultados.
  • 11 métodos reales de ocultación, vencidosBinario de ancho cero, contrabando con caracteres tag, bytes en selectores de variación, espacios SNOW, homóglifos, binario NFC/NFD y cinco más.
  • El mismo motor que la línea de comandosLa herramienta de Python y esta página comparten un único reglamento, así que una comprobación en pre-commit y un pegado en el navegador coinciden.
Tres pasos

Pega, limpia, copia.

Eso es todo. El resto de esta página es lectura opcional.

  1. Pégalo aquí

    Directo desde una ventana de chat, un PDF, una herramienta de traducción, un asistente de IA o el correo de un compañero. Los caracteres ocultos vienen de viaje con el texto: de eso se trata.

  2. Presiona Limpiar texto

    Recorremos tu texto carácter a carácter y decidimos, para cada uno sospechoso, si se está escondiendo o está trabajando. Las palabras visibles no se tocan nunca.

  3. Copia la versión limpia

    Un botón. Y si quieres las pruebas, abre la tabla de hallazgos y verás cada carácter con su posición, su punto de código y su nombre oficial en Unicode.

En todo lo demás

La misma limpieza, sin esta pestaña.

El limpiador de arriba es gratis y sin límite, y lo seguirá siendo. Estos tres llevan el mismo motor a donde ya está tu texto: una pulsación de teclas, un clic derecho o un comando.

Ghostchars para Mac

Una app en la barra de menús: selecciona texto en cualquier parte de tu Mac, pulsa el atajo y la versión limpia ocupa su lugar. O deja que limpie al copiar, y lo que pegues ya estará limpio.

El atajo de teclado y la limpieza al copiar son gratis 20 veces por semana; la ventana de la propia app y sus informes no se cuentan nunca.

Consíguela para Mac

Ghostchars para Chrome

Una ventana que limpia lo que pegas en cualquier sitio y un menú contextual que sustituye ahí mismo el texto que seleccionaste. Activa la limpieza al pegar en los sitios donde pegas a menudo y aterrizará la versión limpia en lugar de la que copiaste.

La ventana y el menú contextual son ilimitados, en todos los sitios; limpiar al pegar es gratis 20 veces por semana. Se instala desde la Chrome Web Store, en Chrome, Edge, Brave, Arc, Opera.

Ver la extensión

Ghostchars en tu terminal

Un paquete npm con el mismo motor: limpia archivos y documentos desde la línea de comandos, somete un repositorio a un nivel en CI y dale a tu agente de programación las herramientas por MCP. Dentro vienen los archivos del skill, un hook para Claude Code y un bloque de pre-commit.

Gratis y con licencia MIT, Node 22 o más reciente, y nada sale de tu equipo: no hay código de red en el paquete.

Ver la CLI

Una licencia para todo: $24 una sola vez levanta el límite semanal en ambas, en hasta 3 equipos tuyos, y todo lo de este sitio sigue siendo gratis en cualquier caso.

Qué cuesta dinero y qué no lo costará nunca

Qué detecta

Seis familias de caracteres que no puedes ver.

Unos 26 tipos distintos de carácter, agrupados en las familias que de verdad se comportan de forma diferente.

Caracteres de ancho cero

No ocupan espacio, sobreviven al copiar y pegar y pueden codificar un mensaje entero en binario. La forma clásica de marcar un documento distinto para cada destinatario.

U+200B ZWSP · U+200C ZWNJ · U+200D ZWJ · U+2060 WORD JOINER · U+FEFF BOM

Controles bidi

Reordenan cómo se muestra el texto. Son inofensivos junto al hebreo o al árabe; cuando no hay nada de eso alrededor, son la manera de hacer que un código fuente se lea de una forma y compile de otra.

U+202A-202E · U+2066-2069 · U+200E LRM · U+200F RLM · U+061C ALM

Caracteres tag

Un alfabeto ASCII en la sombra. Una frase entera cabe dentro del plano 14 y se representa como absolutamente nada: es el truco del ASCII smuggling hacia los asistentes de IA.

U+E0001 · U+E0020-E007E · U+E007F CANCEL TAG

Selectores de variación

Sirven para elegir el estilo de un emoji o de un glifo. Los que van sueltos llevan un byte cada uno, así que colgar una carga invisible y larga de cualquier carácter resulta trivial.

U+FE00-FE0F · U+E0100-E01EF

Espacios y separadores

No todos los espacios salen de la barra espaciadora. Cambiar un NBSP por un espacio normal, o dejar un espacio de más al final de una línea, codifica bits que nadie ve.

U+00A0 · U+2000-200A · U+202F · U+205F · U+3000 · U+2028 · U+2029

Letras parecidas

La а cirílica no es la a latina, pero nada en la pantalla te lo dice. Nuestro mapa tiene 1513 entradas generadas a partir del propio confusables.txt de Unicode.

U+0430 а · U+043E о · U+0435 е · U+03BF ο · U+0456 і · U+FF41 a


La parte que otras herramientas hacen mal

Por qué tus emojis sobreviven.

El mismo carácter puede ser un escondite o una pieza estructural. Las herramientas que borran solo por punto de código rompen cosas; las que van sobre seguro se dejan cosas. Nosotros miramos a los vecinos.

👨ZWJ👩ZWJ👧

Conservado: es lo que mantiene unida a la familia

U+200D está entre dos emojis. Quítalo y el emoji de familia se deshace en tres personas separadas. Mismo carácter, mismo punto de código, trabajo completamente distinto.

heZWJllo

Eliminado: está escondido entre dos letras

Ese mismo U+200D entre dos letras latinas no une nada. Está ahí para sobrevivir a un copiar y pegar y llevar un bit de la marca de agua de alguien.

🏴󠁧󠁢󠁳󠁣󠁴󠁿 sigue siendo una bandera

Los caracteres tag deletrean «gbsct» dentro de la bandera de Escocia. Los caracteres tag sueltos se eliminan; los que están dentro de una secuencia de bandera válida, no.

El persa y el hindi conservan sus uniones

Una no unión de ancho cero dentro de una palabra persa cambia cómo se enlazan las letras. Si la borras, has escrito mal la palabra. Nosotros la conservamos y te avisamos de que está ahí.

El hebreo conserva sus marcas de dirección

Una RLM junto a texto en hebreo hace un trabajo real de composición. Una RLM en medio de un párrafo en inglés, no. Las dos son U+200F.


Respuesta directa

Lo que esta herramienta no puede hacer.

Hay muchos sitios que prometen «eliminar marcas de agua de IA». Aquí está el punto donde la limpieza de caracteres se detiene de verdad, para que no cuentes con ella para algo que nunca ha podido hacer.

  • Las marcas de agua estadísticas se quedan donde están. Sistemas como SynthID-Text, de Google, van incrustados en qué palabras eligió el modelo, no en ningún carácter. Nada de lo que eliminamos las toca. Reescribir el texto, sí.
  • La estilometría queda intacta. El ritmo de las oraciones, el vocabulario y la estructura son lo que leen de verdad los clasificadores de detección de IA. Enderezar tus comillas no cambia nada de eso.
  • Lo que se esconde a nivel de formato queda fuera de esta página. Los metadatos de un DOCX, el texto blanco sobre blanco de un PDF, los comentarios de un HTML: eso vive en el archivo, no en el texto. Pega el texto y limpiamos el texto; lleva el archivo entero a la página de Documentos.
  • Una raya no es una prueba. Podemos convertir la puntuación tipográfica si lo pides, pero quien escribe bien también usa rayas. Trátalo como formato, no como evidencia.

Lo que sí afirmamos: once técnicas publicadas de esteganografía a nivel de carácter, todas vencidas en pruebas y con el texto visible idéntico byte a byte después.

Kris Vinters crea y mantiene Ghostchars. La página Acerca de explica las normas que sustentan estos límites.

¿Qué es de verdad una «marca de agua de IA» y qué se puede quitar?

Quién lo usa

Sobre todo, gente que acaba de pegar algo.

Escritores y estudiantes

El texto pasó por tres aplicaciones antes de llegar a tu documento. Límpialo una vez para que un portal de entregas o un detector de plagio no se atragante con caracteres que tú nunca escribiste.

Traductores

Las herramientas TAO y los motores de traducción automática dejan atrás NBSP, guiones opcionales y marcas bidi sueltas. Limpia la capa invisible sin tocar las uniones de las que depende tu idioma de destino.

Editoriales y equipos de CMS

Los originales llegan desde Word, Docs y el correo. Normalízalos antes de que entren en la base de datos y guarda un informe de lo que cambió.

Desarrolladores

Ejecuta --check en un hook de pre-commit y haz que falle el commit cuando un carácter invisible o una anulación bidi acabe en el código, en la configuración o en un archivo de idioma.

Equipos de seguridad informática y de IA

Inspecciona cargas sospechosas de inyección de prompts: mira la frase escrita con caracteres tag, los puntos de código y las posiciones exactas antes de decidir qué hacer con esa entrada.

Cualquiera que reciba un archivo raro

Si un documento se ve bien pero se comporta de forma extraña (la búsqueda falla, la ordenación se rompe, un nombre no coincide), pégalo aquí primero. Casi siempre es un carácter que no puedes ver.


Vídeo

Míralo funcionar

La misma limpieza en tres lugares: este sitio, la extensión del navegador que limpia lo que pegas dentro del propio campo en el que ya estás escribiendo, y un atajo de teclado en Mac que limpia el portapapeles desde cualquier aplicación. Los tres funcionan en tu propia máquina.

Ver

Ghostchars en la web, en Chrome y en un Mac

30 segundos · Subtítulos incluidos


Código abierto

El mismo motor, en tu terminal.

strip_invisible.py es un único archivo de Python sin dependencias. Sin instalación y sin paquetes en los que confiar: descárgalo, léelo y ejecútalo.

# Ver qué se esconde, sin cambiar nada
python3 strip_invisible.py --show file.md

# Limpiar sobre el archivo y, de paso, normalizar espacios y puntuación
python3 strip_invisible.py -i -s --punct draft.md

# Hacer fallar la compilación si entraron caracteres invisibles en el repositorio
python3 strip_invisible.py --check src/**/*.ts

# También documentos: fragmentos ocultos, control de cambios, metadatos, rsids
python3 clean_file.py --show essay.docx

Código de salida 1 cuando encuentra algo, así que encaja tal cual en un hook de pre-commit o en un paso de CI. Cada interruptor del panel Avanzado de arriba corresponde a una opción.

Preguntas

Preguntas razonables.

¿Se sube mi texto a algún sitio?

No. Todo se ejecuta en JavaScript, en esta página. No hay ninguna petición a ningún servidor cuando presionas Limpiar texto, y nada de lo que pegas se registra ni se guarda. Si quieres comprobarlo, abre la pestaña de red de tu navegador o, sencillamente, desconéctate de internet y usa la página sin conexión.

¿Va a romper mis emojis?

No con los ajustes por defecto. Las uniones de ancho cero entre emojis, los selectores de variación que eligen la presentación de emoji y los caracteres tag dentro de una secuencia de bandera se reconocen como caracteres que cumplen una función y se conservan, y además se informan para que puedas verlos. La única forma de eliminarlos es activar a propósito «Eliminar uniones aunque hagan falta» en Avanzado.

¿Funciona con árabe, hebreo, hindi o persa?

Sí, y esa es la razón principal por la que existe esta herramienta. Las no uniones de ancho cero dentro de las palabras persas, las uniones en las escrituras índicas y las marcas direccionales junto a texto de derecha a izquierda cambian cómo se lee el texto, así que se conservan por defecto. Esos mismos caracteres flotando en medio de un texto en inglés sí se eliminan.

¿Puede eliminar una marca de agua de IA?

Elimina marcas de agua a nivel de carácter: las que esconden datos en puntos de código invisibles, en patrones de espacios o en letras parecidas. No elimina marcas de agua estadísticas como SynthID-Text, que viven en la elección de palabras, y no cambia la puntuación que un clasificador de detección de IA le da a tu escritura. Cualquier herramienta que afirme lo contrario está prometiendo de más.

¿Por qué hay un carácter en la lista que no se ha eliminado?

Por dos motivos. O cumple una función, y eliminarlo cambiaría cómo se representa tu texto, o necesita una opción que está desactivada por defecto porque alteraría texto visible, como las letras parecidas o las comillas tipográficas. En ambos casos la tabla de hallazgos indica la opción exacta que lo eliminaría, así que nada se ignora en silencio.

¿Qué es un ataque de ASCII smuggling?

Unicode tiene un bloque de caracteres «tag» (U+E0000-E007F) que reproducen el ASCII pero no dibujan absolutamente nada. Con ellos se puede escribir una instrucción completa, pegarla en un documento y hacer que un modelo de lenguaje la lea siendo del todo invisible para la persona que lo revisa. Eliminamos por defecto los caracteres tag sueltos y te enseñamos lo que decían.

¿Qué diferencia hay entre NFC y NFKC?

NFC elige una única forma de escribir cada carácter acentuado: la é como un solo punto de código en lugar de una e más un acento combinante. Elegir entre las dos formas al azar es, en sí mismo, una manera de codificar bits. NFKC va más allá y además convierte letras de ancho completo, ligaduras y superíndices en sus equivalentes simples, algo más agresivo de lo que la mayoría de los textos quiere.

¿Hay un límite de texto que pueda limpiar?

No hay cuota ni cuenta. El límite práctico es tu navegador: unos cientos de miles de caracteres van bien y, a partir de ahí, la versión de terminal encaja mejor, porque procesa archivos por partes y directorios enteros.

¿La limpieza cambia el aspecto de mi texto?

Con los ajustes por defecto, no: todos los caracteres que se eliminan son caracteres que no dibujan nada. Esa es la prueba a la que sometemos la herramienta: al pasarla sobre un método de esteganografía, el texto visible debe salir idéntico byte a byte. Las opciones de Avanzado rompen esa regla a propósito, y por eso cada una dice qué cambia.

¿En qué se diferencia de un buscar y reemplazar?

Un buscar y reemplazar borra todas las apariciones de un punto de código. Así es como algunas herramientas acaban destrozando los emojis de familia y la ortografía del persa. Esta decide caso por caso, según los caracteres que hay a cada lado, y te muestra el razonamiento de cada decisión con su número de línea y de columna.

¿Estadísticas de uso anónimas?

Ghostchars procesa tu texto en el navegador y nunca lo envía a ninguna parte. Nos gustaría contar las visitas con un servicio de analítica alojado por nosotros y con un uso mínimo de cookies. El contenido, nunca.