Перейти к содержимому
Ghostchars

Уберите невидимый мусор из своего текста.

Вставьте что угодно. Мы найдём пробелы нулевой ширины, протащенные теговые символы, буквы-двойники и другие символы, которых вы не видите: то, что обычно называют водяным знаком ИИ. Ваши эмодзи и текст не на английском при этом не пострадают.

  • Работает в браузере
  • Без регистрации
  • Бесплатно, без лимитов
  • Открытый код

Ничего никуда не отправляется. Очистка происходит на этой странице.

Текст разбирается прямо в браузере. Нажмите «Очистить текст», чтобы увидеть результат ниже.

Уровень очистки

Базовый уровень удаляет только символы, которых вы не видите. Максимум ещё и переписывает видимый текст: буквы-двойники, кавычки, тире и пробелы. Поэтому это выбор, а не значение по умолчанию.

По умолчанию уже удаляется всё, что невидимо и ничего не делает: символы нулевой ширины, метки порядка байтов, мягкие переносы, невидимые математические операторы, bidi-переопределения, одиночные теговые символы и селекторы вариантов, несимволы и прочие форматирующие символы. Всё, что ниже, идёт дальше: оно либо меняет видимый текст, либо удаляет символы, которые делают свою работу. Решать вам.

Пробелы и вёрстка

Неразрывный, тонкий и идеографический пробелы станут обычными. Выключено, потому что неразрывный пробел часто поставлен намеренно.
CRLF, CR, NEL и разделители строк и абзацев Unicode станут обычным переводом строки.
Убирает полосу, которую терминал копирует перед каждой строкой цитаты. Выключено, потому что такую же полосу используют деревья папок.
Пробелы, оставленные в конце строки, могут кодировать скрытое сообщение (техника SNOW).
Двойные пробелы между словами могут нести двоичные данные. Выключено, потому что это ломает вёрстку с фиксированной шириной.

Буквы и пунктуация

Кириллическая с в слове «Miсrosoft» станет латинской c. Срабатывает только внутри слов со смешанной письменностью, так что обычный русский или греческий текст остаётся нетронутым. Выключено по умолчанию, потому что меняет буквы, которые вы видите.
Длинное тире, типографские кавычки, многоточие и знак минуса станут ASCII. Их часто считают «приметой ИИ», но это ещё и просто хорошая типографика.
Составленные и разложенные диакритики (é одним символом или двумя) могут кодировать биты. NFC оставляет одну форму.
Дополнительно сводит полноширинные, надстрочные и лигатурные формы. Меняет больше, чем можно ожидать, и заменяет собой NFC.

Управляющие символы

Bidi-переопределения и метки внутри текста слева направо удаляются и так. Этот параметр удалит ещё и метки рядом с ивритом или арабским, где они действительно управляют вёрсткой.
Управляющие символы C0 и C1, кроме табуляции и перевода строки.
Ломает иконочные шрифты и некоторые фирменные глифы, а именно там такие символы обычно и живут.

Агрессивно

Удаляет все соединители нулевой ширины и селекторы вариантов, в том числе те, что держат вместе 👨‍👩‍👧, и те, без которых не обойтись персидскому, хинди и флаговым последовательностям. Включайте, только если нужны голые буквы и ничего больше.

ZWSPTAG U+E0053

Нажмите Очистить текст, и мы покажем, что именно там пряталось: сначала обычными словами, а под ними кодовые позиции, если они вам нужны.

  • Ваш текст не покидает страницуНикакой отправки на сервер, никаких запросов, никакой аналитики по тому, что вы вставили. Отключите Wi-Fi, и всё продолжит работать.
  • Бесплатно, без лимитов и аккаунтаНи ограничения на число символов, ни дневных квот, ни формы с почтой перед результатом.
  • Побеждает 11 реальных схем сокрытияДвоичный код на символах нулевой ширины, контрабанда теговых символов, байты в селекторах вариантов, пробелы SNOW, омоглифы, двоичный код на NFC/NFD и ещё пять.
  • Тот же движок, что в CLIУ инструмента на Python и у этой страницы один свод правил, поэтому проверка в pre-commit и вставка в браузере дают один и тот же ответ.
Три шага

Вставьте, очистите, скопируйте.

Вот и всё. Остальное на этой странице можно не читать.

  1. Вставьте текст

    Прямо из чата, PDF, переводчика, ИИ-ассистента или письма коллеги. Скрытые символы приезжают вместе с текстом, в этом всё и дело.

  2. Нажмите «Очистить текст»

    Мы проходим текст символ за символом и по каждому подозрительному решаем: он прячется или работает. Видимые слова остаются нетронутыми.

  3. Скопируйте чистый текст

    Одна кнопка. Нужны доказательства? Откройте таблицу находок: там каждый символ с местом в тексте, кодовой позицией и официальным именем Unicode.

За пределами вкладки

Та же очистка без этой вкладки.

Очистка выше бесплатна и без ограничений, такой она и останется. Приложение для Mac, расширение для браузера и CLI ставят тот же движок туда, где ваш текст уже есть: одно сочетание клавиш, один правый клик или одна команда.

Ghostchars для Mac

Приложение в строке меню: выделите текст в любом месте на Mac, нажмите сочетание клавиш, и на его месте окажется очищенная версия. Или пусть чистит при копировании: тогда вставляется уже чистое.

Сочетание клавиш и очистка при копировании бесплатны 20 раз в неделю; собственное окно приложения и его отчёты не считаются никогда.

Взять для Mac

Ghostchars для Chrome

Окно, которое чистит вставку на любом сайте, и пункт контекстного меню, который заменяет выделенный текст прямо на месте. Включите очистку при вставке для сайтов, куда вы вставляете часто, и вместо скопированного туда попадёт очищенное.

Окно и контекстное меню работают без ограничений на любом сайте; очистка при вставке бесплатна 20 раз в неделю. Оно устанавливается из Chrome Web Store, в Chrome, Edge, Brave, Arc, Opera.

Посмотреть расширение

Ghostchars в терминале

Пакет npm с тем же движком: чистите файлы и документы из командной строки, держите репозиторий на заданной планке в CI и дайте агенту для кода эти инструменты через MCP. Внутри лежат файлы скилла, хук для Claude Code и блок для pre-commit.

Бесплатно и под лицензией MIT, Node 22 или новее, и ничто не покидает вашу машину: в пакете нет сетевого кода.

Посмотреть CLI

Одна лицензия на всё: $24 один раз снимает недельный лимит у обоих, на 3 ваших устройствах, а всё на этом сайте в любом случае остаётся бесплатным.

За что берут деньги, а за что не возьмут никогда

Что он находит

Шесть семейств символов, которых вы не видите.

Около 26 разных типов символов, сгруппированных по семействам, которые и правда ведут себя по-разному.

Символы нулевой ширины

Не занимают места, переживают копирование и способны закодировать целое сообщение в двоичном виде. Классический способ пометить документ под каждого получателя.

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

Управление направлением (bidi)

Меняют порядок отображения текста. Рядом с ивритом или арабским они безобидны; в остальных случаях это способ заставить исходный код читаться одним, а компилироваться другим.

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

Теговые символы

Теневой алфавит ASCII. Целое предложение помещается в 14-ю плоскость и отрисовывается ровно ничем: на этом и построен ASCII smuggling, контрабанда команд в ИИ-ассистенты.

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

Селекторы вариантов

Нужны, чтобы выбрать вид эмодзи или начертание глифа. Одиночные несут по байту каждый, так что к любому символу элементарно прицепить длинную невидимую нагрузку.

U+FE00-FE0F · U+E0100-E01EF

Пробелы и разделители

Не всякий пробел набран пробелом. Подмена обычного пробела неразрывным или лишний пробел в конце строки кодируют биты, которых никто не видит.

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

Буквы-двойники

Кириллическая а не равна латинской a, но на экране их не отличить. В нашей таблице 1513 записей, собранных из confusables.txt самого Unicode.

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


То, в чём ошибаются другие инструменты

Почему ваши эмодзи выживают.

Один и тот же символ может быть тайником, а может быть несущей конструкцией. Инструменты, которые удаляют по одной лишь кодовой позиции, всё ломают; осторожные пропускают многое. Мы смотрим на соседей.

👨ZWJ👩ZWJ👧

Оставлен: он держит семью вместе

U+200D стоит между двумя эмодзи. Уберите его, и семья рассыплется на трёх отдельных людей. Тот же символ, та же кодовая позиция, совершенно другая работа.

heZWJllo

Удалён: он прячется между двумя буквами

Точно такой же U+200D между двумя латинскими буквами не соединяет ничего. Он здесь, чтобы пережить копирование и унести с собой бит чьего-то водяного знака.

🏴󠁧󠁢󠁳󠁣󠁴󠁿 остаётся флагом

Внутри флага Шотландии теговые символы складываются в «gbsct». Одиночные теговые символы удаляются, а те, что входят в корректную последовательность флага, остаются.

Персидский и хинди сохраняют свои соединители

Разъединитель нулевой ширины внутри персидского слова меняет то, как соединяются буквы. Удалите его, и слово написано с ошибкой. Мы его сохраняем и говорим вам, что он там есть.

Иврит сохраняет свои метки направления

RLM рядом с текстом на иврите действительно управляет вёрсткой. RLM посреди английского не управляет ничем. И тот и другой записаны как U+200F.


Прямой ответ

Чего этот инструмент не умеет.

Множество сайтов обещают «убрать водяные знаки ИИ». Вот где очистка символов действительно заканчивается, чтобы вы не рассчитывали на неё там, где она никогда и не работала.

  • Статистические водяные знаки остаются на месте. Такие схемы, как SynthID-Text от Google, зашиты в то, какие слова выбрала модель, а не в символы. Ничто из удаляемого их не задевает. Их убирает переписывание текста.
  • Стилометрию это не трогает. Классификаторы ИИ-детекторов читают ритм предложений, словарь и структуру. Выпрямление кавычек не меняет из этого ничего.
  • Сокрытие на уровне формата к этой странице не относится. Метаданные в DOCX, белый текст по белому в PDF, комментарии в HTML живут в файле, а не в тексте. Вставьте текст, и мы очистим текст; целый файл несите на страницу «Документы».
  • Длинное тире уликой не является. По запросу мы переведём типографскую пунктуацию в ASCII, но человек, который пишет хорошо, тоже ставит длинные тире. Считайте это оформлением, а не доказательством.

На что мы претендуем: одиннадцать опубликованных техник стеганографии на уровне символов, каждая побеждена в тестах, и видимый текст после этого остался побайтово тем же.

Kris Vinters создаёт и поддерживает Ghostchars. На странице «О проекте» описаны правила, из которых следуют эти ограничения.

Что такое «водяной знак ИИ» на самом деле и что из него можно убрать?

Кто им пользуется

В основном те, кто что-то куда-то вставил.

Авторы и студенты

Текст прошёл через три приложения, прежде чем попал в ваш документ. Очистите его один раз, чтобы система сдачи работ или антиплагиат не споткнулись о символы, которых вы не набирали.

Переводчики

CAT-программы и машинный перевод оставляют за собой неразрывные пробелы, мягкие переносы и случайные bidi-метки. Очистите невидимый слой, не тронув соединители, без которых не обойтись языку перевода.

Издатели и команды CMS

Тексты авторов приходят из Word, Google Документов и почты. Приведите их к общему виду до попадания в базу и сохраните отчёт о том, что изменилось.

Разработчики

Запускайте --check в pre-commit-хуке и роняйте коммит, если невидимый символ или bidi-переопределение попали в исходники, конфиг или файл локализации.

Безопасность и AI safety

Разбирайте подозрительные нагрузки для prompt injection: смотрите предложение из теговых символов, кодовые позиции и точные смещения, а уже потом решайте, что делать с этим вводом.

Все, кому прислали странный файл

Если документ выглядит нормально, но ведёт себя странно (поиск не находит, сортировка ломается, имя не совпадает), сначала вставьте его сюда. Обычно виноват символ, которого вы не видите.


Видео

Посмотрите, как это работает

Одна и та же очистка в трёх местах: этот сайт, расширение браузера, которое очищает вставку прямо в поле, где вы уже печатаете, и горячая клавиша на Mac, очищающая буфер обмена из любой программы. Все три работают на вашей собственной машине.

Смотреть

Ghostchars в вебе, в Chrome и на Mac

30 секунд · Субтитры включены


Открытый код

Тот же движок в вашем терминале.

strip_invisible.py помещается в один файл на Python без зависимостей. Ничего не нужно устанавливать, никакому пакету не нужно доверять: скачайте, прочитайте, запустите.

# Посмотреть, что прячется, ничего не меняя
python3 strip_invisible.py --show file.md

# Очистить на месте и заодно нормализовать пробелы и пунктуацию
python3 strip_invisible.py -i -s --punct draft.md

# Уронить сборку, если невидимые символы попали в репозиторий
python3 strip_invisible.py --check src/**/*.ts

# И документы тоже: скрытые фрагменты, исправления, метаданные, rsid
python3 clean_file.py --show essay.docx

Код возврата 1, если что-то найдено, поэтому инструмент прямо ложится в pre-commit-хук или шаг CI. Каждому переключателю в разделе «Дополнительно» выше соответствует один флаг.

Вопросы

То, о чём разумно спросить.

Мой текст куда-нибудь отправляется?

Нет. Всё работает на JavaScript прямо на этой странице. При нажатии «Очистить текст» на сервер не уходит ни одного запроса, и ничто из вставленного не логируется и не сохраняется. Хотите проверить? Откройте вкладку «Сеть» в браузере или просто отключитесь от интернета и работайте офлайн.

Он не сломает мои эмодзи?

С настройками по умолчанию не сломает. Соединители нулевой ширины между эмодзи, селекторы вариантов, задающие эмодзи-начертание, и теговые символы внутри флаговых последовательностей распознаются как несущие нагрузку, сохраняются и попадают в отчёт, чтобы вы их видели. Удалить их можно единственным способом: осознанно включить «Удалять склейку, даже когда она важна» в разделе «Дополнительно».

Он работает с арабским, ивритом, хинди и персидским?

Да, и ради этого он в первую очередь и существует. Разъединители нулевой ширины внутри персидских слов, соединители в индийских письменностях и метки направления рядом с текстом справа налево меняют то, как читается текст, поэтому по умолчанию они сохраняются. Те же символы, затерявшиеся посреди английского, удаляются.

Он может убрать водяной знак ИИ?

Он убирает водяные знаки на уровне символов: те, что прячут данные в невидимых кодовых позициях, узорах из пробелов или буквах-двойниках. Он не убирает статистические водяные знаки вроде SynthID-Text, которые живут в выборе слов, и не меняет оценку, которую поставит вашему тексту ИИ-детектор. Любой инструмент, утверждающий обратное, преувеличивает.

Почему символ есть в списке, но не удалён?

Две причины. Либо он несёт нагрузку и без него текст будет отображаться иначе, либо для него нужна настройка, выключенная по умолчанию, потому что она меняет видимый текст: например, буквы-двойники или типографские кавычки. В обоих случаях в таблице находок названа та самая настройка, которая его удалит, так что молча не игнорируется ничего.

Что такое атака ASCII smuggling?

В Unicode есть блок «теговых» символов (U+E0000-E007F), которые повторяют ASCII, но не отрисовываются вообще ничем. Целую инструкцию можно записать ими и вставить в документ: языковая модель её прочитает, а человек, проверяющий документ, не увидит ничего. Одиночные теговые символы мы удаляем по умолчанию и показываем, что в них было написано.

Чем NFC отличается от NFKC?

NFC выбирает одно написание для букв с диакритикой: é одной кодовой позицией, а не e плюс комбинируемый акцент. Случайный выбор между двумя формами сам по себе способ кодировать биты. NFKC идёт дальше и сводит к простым эквивалентам ещё и полноширинные буквы, лигатуры и надстрочные знаки; это агрессивнее, чем нужно большинству текстов.

Есть ли ограничение на объём текста?

Ни квот, ни аккаунта. Практический предел ставит ваш браузер. Несколько сотен тысяч символов проходят нормально, а дальше лучше подойдёт версия для терминала: она читает файлы потоком и обрабатывает целые каталоги.

Меняется ли внешний вид текста после очистки?

С настройками по умолчанию не меняется: удаляются только символы, которые не отрисовываются ничем. Это и есть проверка, которой мы держим инструмент: прогнать его по стеганографической схеме, и видимый текст должен выйти побайтово тем же. Параметры в разделе «Дополнительно» намеренно нарушают это правило, поэтому у каждого написано, что именно он меняет.

Чем это отличается от поиска с заменой?

Поиск с заменой удаляет все вхождения кодовой позиции. Именно так инструменты и кромсают семейные эмодзи и персидское написание. Здесь решение принимается по каждому вхождению отдельно, с учётом соседних символов, и по каждому показан ход рассуждений с номером строки и столбца.

Анонимная статистика?

Ghostchars обрабатывает ваш текст в браузере и никуда его не отправляет. Мы хотели бы считать просмотры страниц через собственный сервер аналитики, почти без cookie: содержимое не собирается никогда.