Aller au contenu
Ghostchars

Débarrassez votre texte de ses parasites invisibles.

Collez n'importe quoi. Nous trouvons les espaces de largeur nulle, les caractères de balise clandestins, les lettres sosies et les autres caractères que vous ne voyez pas, sans abîmer vos emojis ni vos textes multilingues au passage. C'est ça, un « filigrane IA » : celui qui tient dans les caractères, pas dans le choix des mots.

  • Tourne dans votre navigateur
  • Sans inscription
  • Gratuit, sans limite
  • Open source

Rien n'est envoyé. Le nettoyage a lieu sur cette page.

Votre texte est analysé dans le navigateur. Appuyez sur Nettoyer pour voir les résultats ci-dessous.

Niveau de nettoyage

Le niveau standard ne supprime que des caractères que vous ne voyez pas. Le niveau maximum réécrit aussi du texte visible : lettres sosies, guillemets, tirets et espacement. C'est donc un choix, pas un réglage par défaut.

Les réglages par défaut suppriment déjà tous les caractères invisibles qui ne servent à rien : caractères de largeur nulle, indicateurs d'ordre des octets, traits d'union conditionnels, opérateurs mathématiques invisibles, forçages bidi, caractères de balise et sélecteurs de variante isolés, non-caractères et autres contrôles de formatage. Tout ce qui suit va plus loin : soit cela modifie du texte que vous voyez, soit cela supprime des caractères qui font un vrai travail. C'est donc à vous de décider.

Espaces et mise en page

Les espaces insécables, fines et idéographiques deviennent un espace ordinaire. Désactivé parce qu'un espace insécable est souvent voulu.
CRLF, CR, NEL et les séparateurs Unicode de ligne et de paragraphe deviennent un simple saut de ligne.
Retire la barre qu'un terminal copie devant chaque ligne citée. Désactivé parce que les arborescences de dossiers utilisent la même barre.
Des espaces garés en fin de ligne peuvent coder un message caché (la technique SNOW).
Les doubles espaces entre les mots peuvent transporter des données binaires. Désactivé parce que cela casse les mises en page à chasse fixe.

Lettres et ponctuation

Le а cyrillique de « аpple » redevient un a latin. N'agit qu'à l'intérieur des mots qui mélangent les écritures : un texte russe ou grec ordinaire n'est donc pas touché. Désactivé par défaut parce que cela réécrit des lettres.
Tiret cadratin, guillemets courbes, points de suspension et signe moins deviennent de l'ASCII. Souvent présenté comme un « indice d'IA », alors que c'est aussi simplement de la bonne typographie.
Accents composés ou décomposés (é en un caractère ou en deux) : le choix peut coder des bits. NFC n'en retient qu'une forme.
Replie aussi les formes pleine chasse, les exposants et les ligatures. Change plus de choses qu'on ne l'imagine, et remplace NFC.

Contrôles

Nous supprimons déjà les forçages bidi, et les marques au milieu d'un texte de gauche à droite. Cette option supprime en plus celles qui accompagnent l'hébreu ou l'arabe, où elles font un vrai travail de mise en page.
Les contrôles C0 et C1 autres que la tabulation et le saut de ligne.
Casse les polices d'icônes et certains glyphes de marque, c'est-à-dire exactement là où ces caractères vivent.

Agressif

Supprime tous les liants de largeur nulle et tous les sélecteurs de variante, y compris ceux qui tiennent 👨‍👩‍👧 ensemble et ceux dont le persan, le hindi et les séquences de drapeau ont besoin. À n'utiliser que si vous voulez des lettres nues et rien d'autre.

ZWSPTAG U+E0053

Appuyez sur Nettoyer et nous vous montrerons exactement ce qui se cachait là-dedans : en langage clair d'abord, avec les points de code en dessous si vous les voulez.

  • Votre texte ne quitte jamais cette pageAucun envoi, aucun appel serveur, aucune mesure d'audience sur ce que vous collez. Coupez le wifi : la page fonctionne toujours.
  • Gratuit, illimité, sans comptePas de plafond de caractères, pas de quota quotidien, pas de mur à adresse e-mail devant les résultats.
  • 11 vraies techniques de dissimulation mises en échecBinaire en largeur nulle, contrebande par caractères de balise, octets cachés dans les sélecteurs de variante, espaces SNOW, binaire par lettres sosies et par NFC/NFD, et cinq autres.
  • Le même moteur que la CLIL'outil Python et cette page partagent un seul jeu de règles : une vérification pre-commit et un collage dans le navigateur disent la même chose.
Trois étapes

Collez, nettoyez, copiez.

C'est tout. Le reste de cette page est une lecture facultative.

  1. Collez votre texte

    Directement depuis une messagerie, un PDF, un outil de traduction, un assistant IA ou l'e-mail d'un collègue. Les caractères invisibles font le voyage avec lui, et c'est bien tout le problème.

  2. Appuyez sur Nettoyer

    Nous parcourons votre texte caractère par caractère et décidons, pour chacun des caractères suspects, s'il se cache ou s'il travaille. Les mots visibles ne sont jamais touchés.

  3. Copiez la version propre

    Un seul bouton. Si vous voulez les preuves, ouvrez le relevé : chaque caractère y figure avec sa position, son point de code et son nom Unicode officiel.

Partout ailleurs

Le même nettoyage, sans cet onglet.

Le nettoyeur ci-dessus est gratuit et illimité, et le restera. Ces trois-là portent le même moteur là où votre texte se trouve déjà : une frappe, un clic droit, ou une commande.

Ghostchars pour Mac

Une application de barre de menus : sélectionnez du texte n'importe où sur votre Mac, appuyez sur le raccourci, et la version propre prend sa place. Ou laissez-la nettoyer à la copie, et ce que vous collez est déjà propre.

Le raccourci clavier et le nettoyage à la copie sont gratuits 20 fois par semaine ; la fenêtre de l'application et ses relevés ne sont jamais comptés.

L'installer sur Mac

Ghostchars pour Chrome

Une fenêtre qui nettoie un collage sur n'importe quel site, et un menu contextuel qui remplace sur place le texte sélectionné. Activez le nettoyage au collage sur les sites où vous collez souvent : c'est la version propre qui arrive, à la place de celle que vous aviez copiée.

La fenêtre et le menu contextuel sont illimités, sur tous les sites ; le nettoyage au collage est gratuit 20 fois par semaine. Elle s'installe depuis le Chrome Web Store, dans Chrome, Edge, Brave, Arc, Opera.

Voir l'extension

Ghostchars dans votre terminal

Un paquet npm avec le même moteur : nettoyez fichiers et documents depuis la ligne de commande, tenez un dépôt à un niveau en CI, et donnez les outils à votre agent de codage via MCP. Des fichiers de skill, un hook Claude Code et un bloc pre-commit sont livrés dedans.

Gratuit et sous licence MIT, Node 22 ou plus récent, et rien ne quitte votre machine : il n'y a aucun code réseau dans le paquet.

Voir la CLI

Une licence pour tout : $24 une fois lève la limite hebdomadaire des deux côtés, sur 3 de vos appareils au maximum. Et tout ce site reste gratuit dans tous les cas.

Ce qui coûte de l'argent, et ce qui n'en coûtera jamais

Ce qu'il détecte

Six familles de caractères que vous ne voyez pas.

Environ 26 types de caractères distincts, regroupés dans les familles qui se comportent vraiment différemment.

Caractères de largeur nulle

Ils ne prennent aucune place, survivent au copier-coller et peuvent coder un message entier en binaire. La façon classique de marquer un document destinataire par destinataire.

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

Contrôles bidi

Ils réorganisent l'affichage du texte. Inoffensifs à côté de l'hébreu ou de l'arabe ; ailleurs, c'est un moyen de faire lire un code source dans un sens et de le faire compiler dans un autre.

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

Caractères de balise

Un alphabet ASCII fantôme. Une phrase entière peut tenir dans le plan 14 et n'afficher absolument rien : c'est le principe de la contrebande ASCII (ASCII smuggling) vers les assistants IA.

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

Sélecteurs de variante

Ils servent normalement à choisir un style d'emoji ou de glyphe. Isolés, ils transportent un octet chacun, ce qui rend l'accrochage d'une longue charge invisible trivial sur n'importe quel caractère.

U+FE00-FE0F · U+E0100-E01EF

Espaces et séparateurs

Tous les espaces ne viennent pas de la barre d'espace. Remplacer un espace insécable par un espace ordinaire, ou laisser un espace de trop en fin de ligne, code des bits que personne ne voit.

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

Lettres sosies

Le а cyrillique n'est pas un a latin, et rien à l'écran ne vous le dit. Notre table compte 1 513 entrées générées à partir du fichier confusables.txt d'Unicode.

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


Ce que les autres outils ratent

Pourquoi vos emojis survivent.

Un même caractère peut être une cachette ou un élément porteur. Les outils qui suppriment au seul vu du point de code cassent des choses ; ceux qui jouent la prudence en laissent passer. Nous regardons les voisins.

👨ZWJ👩ZWJ👧

Conservé : il tient la famille ensemble

Ce U+200D se trouve entre deux emojis. Supprimez-le et l'emoji famille se disloque en trois personnes séparées. Même caractère, même point de code, travail complètement différent.

heZWJllo

Supprimé : il se cache entre deux lettres

Le même U+200D entre deux lettres latines ne joint rien. Il est là pour survivre à un copier-coller et transporter un bit du filigrane de quelqu'un.

🏴󠁧󠁢󠁳󠁣󠁴󠁿 reste un drapeau

Des caractères de balise épellent « gbsct » à l'intérieur du drapeau écossais. Les caractères de balise isolés sont supprimés ; ceux qui font partie d'une séquence de drapeau valide, non.

Le persan et le hindi gardent leurs liants

Un non-liant de largeur nulle à l'intérieur d'un mot persan change la façon dont les lettres s'attachent. Supprimez-le et vous avez écrit le mot de travers. Nous le gardons et nous vous signalons sa présence.

L'hébreu garde ses marques de direction

Une RLM à côté d'un texte hébreu fait un vrai travail de mise en page. Une RLM au milieu d'un texte anglais, non. Les deux sont U+200F.


Réponse franche

Ce que cet outil ne peut pas faire.

Beaucoup de sites promettent de « supprimer les filigranes des IA ». Voici où le nettoyage de caractères s'arrête vraiment, pour que vous ne comptiez pas dessus pour quelque chose dont il n'a jamais été capable.

  • Les filigranes statistiques restent en place. Des dispositifs comme SynthID-Text, de Google, sont inscrits dans le choix des mots par le modèle, pas dans un caractère. Rien de ce que nous retirons ne les atteint. Réécrire le texte, si.
  • La stylométrie n'est pas concernée. Le rythme des phrases, le vocabulaire et la structure sont ce que lisent réellement les classificateurs de détection d'IA. Redresser vos guillemets n'y change rien.
  • Ce qui se cache dans le format sort du cadre de cette page. Les métadonnées d'un DOCX, du blanc sur blanc dans un PDF, des commentaires HTML : tout cela vit dans le fichier, pas dans le texte. Collez le texte et nous nettoyons le texte ; pour le fichier entier, passez par la page Documents.
  • Un tiret cadratin n'est pas une preuve. Nous pouvons convertir la ponctuation typographique à la demande, mais quelqu'un qui écrit bien utilise lui aussi des tirets cadratins. Voyez-y de la mise en forme, pas une preuve.

Ce que nous affirmons, en revanche : onze techniques publiées de stéganographie au niveau des caractères, chacune mise en échec en test, le texte visible ressortant octet pour octet identique.

Kris Vinters développe et maintient Ghostchars. La page À propos explique les règles qui encadrent ces limites.

Qu'est-ce qu'un « filigrane IA » au juste, et que peut-on vraiment retirer ?

Qui s'en sert

Surtout des gens qui viennent de coller quelque chose.

Rédacteurs et étudiants

Votre texte est passé par trois applications avant d'arriver dans votre document. Nettoyez-le une bonne fois pour qu'un portail de dépôt ou un logiciel anti-plagiat ne s'étrangle pas sur des caractères que vous n'avez jamais tapés.

Traducteurs

Les outils de TAO et les moteurs de traduction automatique laissent derrière eux des insécables, des traits d'union conditionnels et des marques bidi égarées. Nettoyez la couche invisible sans toucher aux liants dont votre langue cible dépend.

Éditeurs et équipes CMS

Les textes des auteurs arrivent de Word, de Docs et de la messagerie. Normalisez-les avant qu'ils n'entrent en base, et gardez un rapport de ce qui a changé.

Développeurs

Lancez --check dans un hook pre-commit et faites échouer le commit dès qu'un caractère invisible ou un forçage bidi atterrit dans le code, la configuration ou un fichier de traduction.

Équipes sécurité et sûreté des IA

Inspectez les charges suspectées d'injection de prompt : voyez la phrase écrite en caractères de balise, les points de code et les décalages exacts avant de décider quoi faire de l'entrée.

Toute personne avec un fichier bizarre

Si un document a l'air normal mais se comporte bizarrement (la recherche échoue, le tri déraille, un nom refuse de correspondre), collez-le ici d'abord. C'est en général un caractère que vous ne voyez pas.


Vidéo

Voyez-le fonctionner

Le même nettoyage à trois endroits : ce site, l'extension de navigateur qui nettoie un collage directement dans le champ où vous écrivez déjà, et un raccourci clavier sur Mac qui nettoie le presse-papiers depuis n'importe quelle application. Les trois tournent sur votre propre machine.

Regarder

Ghostchars sur le web, dans Chrome et sur un Mac

30 secondes · Sous-titres inclus


Open source

Le même moteur, dans votre terminal.

strip_invisible.py est un unique fichier Python sans dépendances. Aucune installation, aucun paquet à qui faire confiance : téléchargez-le, lisez-le, lancez-le.

# Voir ce qui se cache, sans rien changer
python3 strip_invisible.py --show file.md

# Nettoyer sur place, et normaliser espaces et ponctuation au passage
python3 strip_invisible.py -i -s --punct draft.md

# Faire échouer le build si des caractères invisibles sont entrés dans le dépôt
python3 strip_invisible.py --check src/**/*.ts

# Les documents aussi : passages masqués, modifications suivies, métadonnées, rsids
python3 clean_file.py --show essay.docx

Code de sortie 1 dès que quelque chose est trouvé : il se glisse tel quel dans un hook pre-commit ou une étape de CI. Chaque interrupteur du panneau Avancé ci-dessus correspond à une option.

Questions

Des questions légitimes.

Mon texte est-il envoyé quelque part ?

Non. Tout tourne en JavaScript sur cette page. Il n'y a aucune requête vers un serveur quand vous appuyez sur Nettoyer, et rien de ce que vous collez n'est journalisé ni conservé. Pour le vérifier, ouvrez l'onglet réseau de votre navigateur, ou coupez simplement Internet et utilisez la page hors ligne.

Est-ce que ça va casser mes emojis ?

Pas avec les réglages par défaut. Les liants de largeur nulle entre emojis, les sélecteurs de variante qui choisissent une présentation emoji et les caractères de balise à l'intérieur des séquences de drapeau sont tous reconnus comme porteurs et conservés, puis signalés pour que vous les voyiez. Le seul moyen de les supprimer est d'activer délibérément « Supprimer les liants même quand ils comptent » dans Avancé.

Est-ce que ça marche avec l'arabe, l'hébreu, le hindi ou le persan ?

Oui, et c'est la raison principale de l'existence de cet outil. Les non-liants de largeur nulle à l'intérieur des mots persans, les liants des écritures indiennes et les marques de direction à côté d'un texte de droite à gauche changent tous la façon dont le texte se lit : ils sont donc conservés par défaut. Les mêmes caractères flottant au milieu d'un texte anglais, eux, sont supprimés.

Peut-il supprimer un filigrane d'IA ?

Il supprime les filigranes au niveau des caractères : ceux qui cachent des données dans des points de code invisibles, des motifs d'espaces ou des lettres sosies. Il ne supprime pas les filigranes statistiques comme SynthID-Text, qui vivent dans le choix des mots, et il ne change pas la note qu'un classificateur de détection d'IA attribue à votre écriture. Tout outil qui prétend le contraire en promet trop.

Pourquoi un caractère est-il listé mais pas supprimé ?

Deux raisons. Soit il est porteur, et le supprimer changerait le rendu de votre texte ; soit il dépend d'un réglage désactivé par défaut parce qu'il modifierait du texte visible, comme les lettres sosies ou les guillemets courbes. Dans les deux cas, le relevé nomme le réglage exact qui le supprimerait, donc rien n'est ignoré en silence.

Qu'est-ce qu'une attaque par contrebande ASCII ?

Unicode contient un bloc de caractères dits « tag » (de U+E0000 à U+E007F) qui reproduisent l'ASCII mais ne s'affichent pas du tout. Une instruction complète peut y être écrite, collée dans un document, puis lue par un modèle de langue tout en restant parfaitement invisible pour la personne qui relit. Nous supprimons par défaut les caractères de balise isolés et nous vous montrons ce qu'ils épelaient.

Quelle est la différence entre NFC et NFKC ?

NFC retient une seule orthographe pour les caractères accentués : é comme un point de code unique plutôt que e suivi d'un accent combinant. Choisir au hasard entre les deux formes est en soi une façon de coder des bits. NFKC va plus loin et replie aussi les lettres pleine chasse, les ligatures et les exposants en équivalents simples, ce qui est plus agressif que ce que la plupart des textes demandent.

Y a-t-il une limite à la quantité de texte que je peux nettoyer ?

Aucun quota et aucun compte. La limite pratique, c'est votre navigateur. Quelques centaines de milliers de caractères passent sans problème, et au-delà la version en ligne de commande convient mieux : elle traite les fichiers en flux et gère des dossiers entiers.

Le nettoyage change-t-il l'apparence de mon texte ?

Avec les réglages par défaut, non : chaque caractère supprimé est un caractère qui n'affiche rien. C'est l'exigence à laquelle nous tenons l'outil : passez-le sur un dispositif de stéganographie et le texte visible doit ressortir octet pour octet identique. Les options d'Avancé enfreignent délibérément cette règle, et c'est pourquoi chacune annonce ce qu'elle change.

En quoi est-ce différent d'un rechercher-remplacer ?

Un rechercher-remplacer supprime toutes les occurrences d'un point de code. C'est comme ça que des outils finissent par déchiqueter les emojis famille et l'orthographe persane. Celui-ci décide occurrence par occurrence, d'après les caractères de part et d'autre, et vous montre le raisonnement de chaque décision avec un numéro de ligne et de colonne.

Statistiques anonymes ?

Ghostchars traite votre texte dans le navigateur et ne l'envoie jamais nulle part. Nous aimerions comptabiliser les pages vues avec un service de mesure auto-hébergé et sobre en cookies. Jamais le moindre contenu.