Водяні знаки ШІ в тексті: приховані символи проти міток вибору токенів
Текстові водяні знаки ШІ бувають двох видів, і лише один із них складається із символів, які можна видалити.
| Тип водяного знака | Де міститься | Видимий для цього інструмента | Видаляється цим інструментом |
|---|---|---|---|
| Мітки у вигляді прихованих символів | У байтах тексту, як невидимі або незвичні кодові точки | Так | Так |
| Мітки вибору токенів | У самому виборі слів | Ні | Ні |
Мітки прихованих символів — це кодові точки, які зберігає ваш текстовий редактор і які ніколи не відображаються на екрані.
Мітки вибору токенів визначаються тим, яке саме слово модель обрала на кожному кроці, тому вони не залишають символів, які можна знайти чи вилучити. Кожен інструмент ШІ, який сьогодні маркує виведений текст, використовує саме цей тип.
Що робить символ Unicode невидимим?
Символ є невидимим, коли він не займає ширини на екрані. Unicode фіксує таку поведінку за допомогою властивості Default_Ignorable_Code_Point та загальної категорії Cf, що означає формат.
Default_Ignorable_Code_Point — це похідна властивість, яка публікується у вигляді текстового списку у файлі DerivedCoreProperties.txt для кожної версії стандарту. Цей інструмент очищення закріплює версію Unicode 17.0, випущену 9 вересня 2025 року, яка додала 4 803 нові символи та довела загальну кількість закодованих символів до 159 801.
Я витягнув дані про властивості Unicode 17.0 і підрахував їх особисто. 4 174 кодові точки мають властивість Default_Ignorable_Code_Point, але лише 405 із них є призначеними символами. Інші 3 769 — це зарезервовані слоти, які ще нічим не використовуються. Із цих 405 символів 256 є селекторами варіантів накреслення, а 97 розташовані в блоці тегів, що залишає 52 символи, які можуть з'являтися у звичайному тексті.
Категорія Cf містить 170 символів у цій самій версії. Ось чому округлене маркетингове число на зразок «104 приховані символи» саме по собі ні про що не говорить. Без зазначення версії Unicode поруч це число неможливо ні з чим зіставити.
Чому водяні знаки вибору токенів залишаються після очищення символів?
Вибір токенів, також відомий як статистичний водяний знак, закладений у тому, які саме слова обрала модель, тому видалення невидимих символів не очищає статистичні мітки.
Жоден інструмент для очищення текстових водяних знаків в інтернеті не може видалити водяний знак вибору токенів або статистичний водяний знак, оскільки алгоритм, який використовують інструменти ШІ, є пропрієтарним.
Чи додає ChatGPT водяний знак до свого тексту?
OpenAI стверджує, що ні. 20 квітня 2025 року Rumidocs повідомив, що відповіді GPT o3 та o4 mini містили U+202F — NARROW NO-BREAK SPACE. OpenAI відповіла через два дні: ці символи були «особливістю великомасштабного навчання з підкріпленням» і не були водяним знаком. 23 квітня 2025 року Rumidocs оновив публікацію, зазначивши, що спеціальні символи перестали з'являтися.
OpenAI дійсно створила метод нанесення водяних знаків на текст у 2024 році, але так і не випустила його. Її актуальна довідкова стаття про походження контенту перелічує те, що містить сигнал сьогодні: зображення отримують C2PA Content Credentials та SynthID, аудіо — SynthID, а текст не отримує нічого. На тій самій сторінці зазначено: «наша мета — розширити сигнали походження на всі модальності, включно з текстом», що є радше планом, ніж готовим продуктом.
Чесна відповідь коротка. ChatGPT не додає водяних знаків до свого тексту, а символи, виявлені користувачами у 2025 році, були помилкою, яку виправили.
Типи невидимих символів, виявлені у виведеному тексті ChatGPT та Claude
Символи, які виявляє цей інструмент очищення, поділяються на п'ять груп: символи нульової ширини, незвичні пробіли, керуючі символи, схожі знаки пунктуації та символи тегів або приватного використання.
| Група | Приклади | Що робить | Стандартний пресет |
|---|---|---|---|
| Символи нульової ширини | U+200B, U+200C, U+200D, U+2060, U+FEFF | Не займає ширини, але зберігається у файлі | Видаляє U+200B, U+2060, U+FEFF та зберігає два з'єднувачі |
| Незвичні пробіли | U+00A0, U+2009, U+202F, U+3000 | Виглядає як пробіл, але сортується та шукається як інший символ | Перетворює на звичайний пробіл |
| Керуючі символи | Діапазони C0 та C1, двонаправлені керуючі символи | Керує рендерингом або порушує роботу парсерів, ніколи не друкується | Видаляє все, крім табуляції та нового рядка |
| Схожі знаки пунктуації | Фігурні лапки, коротке та довге тире, U+00AD | Друкується, але не як символ, який ви ввели | Залишає без змін |
| Символи тегів та приватного використання | Від U+E0000 до U+E007F, область приватного використання | Містить читабельний текст, якого не бачить жодна людина | Видаляє |
Ось практичний приклад, який я використовував для кожного вимірювання на цій сторінці. Речення «The meeting starts at 9:30 am on 12 May.» налічує 40 символів і 40 байтів, якщо ввести його безпосередньо у звичайному текстовому редакторі. Після одноразового проходження через текстовий процесор і повернення назад воно перетворилося на 42 символи та 49 байтів. Усередині опинилися мітка порядку байтів на початку, пробіл нульової ширини після «am» і два звичайні пробіли, непомітно замінені на U+202F та U+00A0. Дев'ять додаткових байтів. Візуально нічого не змінилося.
The meeting starts at 9:30 am on 12 May.Символи нульової ширини: U+200B, U+200C, U+200D, U+2060 та U+FEFF
Символи нульової ширини не займають місця на екрані, але все одно існують у файлі, саме тому вставлений текст може містити мітки, яких ніхто не бачить.
| Кодова точка | Офіційна назва в Unicode | Справжнє призначення |
|---|---|---|
| U+200B | ZERO WIDTH SPACE | Позначає можливість розриву рядка, здебільшого вставляється веб-редакторами |
| U+200C | ZERO WIDTH NON-JOINER | Розділяє літери у словах перською та арабською мовами |
| U+200D | ZERO WIDTH JOINER | Об'єднує емодзі в одне зображення та формує лігатури в індійських писемностях |
| U+2060 | WORD JOINER | Запобігає розриву рядка в цій позиції |
| U+FEFF | ZERO WIDTH NO-BREAK SPACE | Мітка порядку байтів, зазвичай залишена текстовим редактором, а не ШІ |
Два з цих п'яти є робочими символами, а не сміттям. U+200C та U+200D мають змістовне значення в реальних мовах, саме тому стандартний пресет залишає їх на місці.
Незвичні пробіли: U+00A0, U+2009, U+202F та U+3000
Незвичні пробіли виглядають як звичайний пробіл, але мають іншу кодову точку, що порушує пошук, сортування та роботу коду.
Unicode 17.0 визначає 17 символів у категорії Zs, роздільник-пробіл, і лише один із них є пробілом на вашій клавіатурі. Я виписав усі 17 із бази даних символів разом із їхньою шириною в байтах у форматі UTF-8, тому що саме ширина в байтах робить їх витратними.
| Кодова точка | Офіційна назва в Unicode | Байти UTF-8 |
|---|---|---|
| U+0020 | SPACE | 1 |
| U+00A0 | NO-BREAK SPACE | 2 |
| U+1680 | OGHAM SPACE MARK | 3 |
| U+2000 to U+200A | Від EN QUAD до HAIR SPACE, 11 символів | По 3 |
| U+202F | NARROW NO-BREAK SPACE | 3 |
| U+205F | MEDIUM MATHEMATICAL SPACE | 3 |
| U+3000 | IDEOGRAPHIC SPACE | 3 |
Один символ U+202F займає три байти там, де звичайний пробіл займає один, а пошук «9:30 am» не знайде «9:30 am», якщо проміжком є U+202F. Ця невідповідність є причиною того, чому пробіли нормалізуються навіть у стандартному пресеті.
9:30 am
9:30 amВи можете скопіювати та вставити зразок тексту у поле введення інструмента вище, щоб побачити результат.
Тире, фігурні лапки та м'які переноси, які вставляють редактори
Фігурні лапки, довгі тире та м'який перенос U+00AD зазвичай з'являються через налаштування автовиправлення в текстовому процесорі, а не від мовної моделі.
Unicode 17.0 надає властивість Dash 31 символу: від звичайного U+002D на вашій клавіатурі до U+2014 EM DASH та U+2E3A TWO-EM DASH. Лише один із них можна ввести одним натисканням клавіші. Решта з'являється тоді, коли програмне забезпечення вирішує, що саме ви мали на увазі. U+00AD є винятком, оскільки друкується як дефіс лише тоді, коли в цьому місці розривається рядок, і залишається невидимим скрізь в інших місцях.
Тире — це саме те питання, яке приводить більшість користувачів на подібну сторінку, і коротка відповідь полягає в тому, що вони нічого не доводять. Повна аргументація наведена нижче в розділі про довгі тире (em dash).
Символи тегів та приватного використання, які приховують інструкції всередині тексту
Символи в блоці тегів Unicode, від U+E0000 до U+E007F, можуть містити ціле речення, якого жоден читач-людина ніколи не побачить. Саме так зловмисники впроваджують приховані інструкції в текст, який згодом читатиме асистент ШІ.
Блог з безпеки AWS висвітлив проблему прихованого впровадження символів Unicode 30 вересня 2025 року. У ньому описано символи тегів, які «спочатку розроблялися як невидимі маркери для позначення мови в тексті» та «перетворилися на потенційний вектор для ін'єкцій промптів». Дослідницька записка Cloud Security Alliance від 10 березня 2026 року зафіксувала той самий прийом у навичках агентів ШІ, описах інструментів та серверах MCP. У цій роботі блок тегів (Tags) згадується поряд із U+200B, U+200C, U+200D та U+FEFF.
Я створив такий приклад, щоб побачити його розмір. Видиме речення «Great work on the report.» містить 25 символів і 25 байтів. Я додав інструкцію з 42 символів, закодовану символами тегів. Розмір файлу збільшився до 67 символів і 193 байтів. На екрані це все ще виглядає як п'ять слів і крапка, а скрипт повністю витягнув інструкцію з тексту неушкодженою. Кожен символ тегу коштує чотири байти та нуль пікселів.
Great work on the report.Це найвагоміша причина очищати текст, яка не має нічого спільного з виявленням ШІ. Вставте фрагмент тексту з веб-сторінки в чат-асистент, і ви можете передати йому інструкції, яких ніколи не вводили.
Видалення невидимих символів у браузері: робочий процес сканування й очищення
Цей інструмент очищення сканує ваш текст у момент вставлення, показує список кожного виявленого елемента з його офіційною назвою в Unicode та позицією, і нічого не змінює, доки ви не натиснете «Очистити текст».
Послідовність складається з чотирьох кроків:
- Вставте текст або перетягніть файл .txt чи .md.
- Перегляньте список знайдених елементів із назвою кожного символу та його розташуванням.
- Виберіть пресет або збережіть окремі знайдені елементи, які ви хочете захистити.
- Очистіть, а потім скопіюйте результат або завантажте його.
Цей інструмент очищення не переписує, не перефразовує та не «гуманізує» жодного слова вашого тексту.
Порівняння пресетів: стандартний, розширений і суворий
Пресет «Стандартний» видаляє символи, що спричиняють проблеми у звичайному тексті, «Розширений» охоплює більше, а «Суворий» видаляє найбільше.
| Група символів | Стандартний | Розширений | Суворий |
|---|---|---|---|
| Пробіл нульової ширини, з'єднувач слів, маркер послідовності байтів (BOM) | Видалено | Видалено | Видалено |
| Символи керування двонапрямленим текстом і керуючі символи C0/C1 | Видалено | Видалено | Видалено |
| Блок тегів і символи приватного використання | Видалено | Видалено | Видалено |
| М'який дефіс U+00AD | Видалено | Видалено | Видалено |
| Незвичайні пробіли в категорії Zs | Перетворено на U+0020 | Перетворено на U+0020 | Перетворено на U+0020 |
| З'єднувальні символи U+200C та U+200D | Збережено | Видалено за межами послідовностей емодзі | Видалено всюди |
| Селектори варіантів | Збережено | Видалено за межами послідовностей емодзі | Видалено всюди |
| Фігурні лапки та довгі тире | Збережено | Збережено | Перетворено на прямі лапки та звичайний дефіс |
Поряд із пресетами розташовані три фільтри в один дотик: видалення невидимих символів, видалення тире та дефісів і видалення емодзі. Публікація цих правил є свідомою. Кожен інструмент-конкурент приховує свій набір правил за однією кнопкою, тож ви не можете знати, що саме було вилучено з вашого тексту, доки щось не зламається.
Як захист коду Markdown зберігає блоки коду неушкодженими?
Коли увімкнено режим Markdown і захист коду, інструмент очищення пропускає блоки коду та вбудований у текст код, тож фрагмент, якому потрібен точний символ, зберігає його.
Код — це єдине місце, де символ, який у звичайному тексті вважався б сміттям, виконує опорну функцію. Регулярний вираз або тестовий рядок може залежати від того, щоб маркер послідовності байтів знаходився саме на своєму місці.
Чи залишає ваш текст ваш пристрій?
Ні. Сканування та очищення виконуються у вашому браузері, і сторінка ніколи не завантажує та не зберігає ваш текст.
Слід відверто додати й іншу сторону. Ця сторінка є безкоштовною, тому вона може показувати рекламу та використовувати аналітику сайту. Необов'язковий звіт у форматі JSON фіксує лише те, що змінилося. Він не містить жодного фрагмента вашого тексту.
Обмеження для тексту та файлів: 20 000 слів і 1 МБ
Інструмент очищення приймає до 20 000 слів вставленого тексту або один файл UTF-8 розміром до 1 МБ у форматі .txt чи .md.
Усе інше виходить за межі можливостей: без підтримки HTML, DOCX, PDF, JSON чи CSV, а вставка обробляється лише як звичайний текст. Потрібен JavaScript. Тут немає облікових записів і жодної плати. Інтерфейс доступний 25 мовами. Офіційні назви Unicode в усіх версіях залишаються англійською, оскільки перекладену назву символу більше не можна однозначно процитувати.
Для фотографій замість тексту ви можете видалити інформацію про ШІ із зображення або редагувати метадані зображення.
Маркування тексту ШІ за постачальниками: порівняння ChatGPT, Claude, Gemini та Grok
Лише деякі постачальники ШІ маркують згенерований текст, і кожен постачальник, який це робить, використовує підбір слів, а не приховані символи.
| Постачальник | Маркує текст | Метод | Виявляється цим інструментом | Джерело та дата |
|---|---|---|---|---|
| Anthropic, Claude | Так | Водяний знак на основі вибору токенів, версія SynthID Text | Ні | Anthropic, анонс від 11 серпня 2026 року, технічна примітка від 14 серпня 2026 року, оновлено 1 вересня 2026 року |
| Google, Gemini | Так | SynthID Text, модуляція ймовірності токенів | Ні | Google DeepMind, 14 травня 2024 року, вихід у відкритий доступ пізніше того ж року |
| OpenAI, ChatGPT | Немає підтвердженого водяного знака в тексті | Немає в загальному доступі для тексту. Зображення містять C2PA та SynthID, аудіо містить SynthID | Не застосовується | Довідкова стаття OpenAI про походження даних, актуально станом на 2 вересня 2026 року |
| xAI, Grok | Опублікованих зобов'язань немає | Не зазначено | Не застосовується | Компанія xAI не підписала Кодекс практики Комісії щодо прозорості, повідомлено 12 серпня 2026 року |
Anthropic заявляє, що моделі, випущені 2 серпня 2026 року або пізніше, містять маркування вже під час запуску. Компанія працює над додаванням маркування до моделей, випущених до цієї дати. Виявлення водяних знаків у тексті не є загальнодоступним інструментом перевірки. Anthropic зазначає, що виявлення «наразі перебуває на стадії закритого попереднього перегляду та доступне відповідним організаціям, як того вимагає законодавство ЄС». Список відповідних організацій включає регуляторні органи, правоохоронні органи, ЗМІ, фактчекерів, дослідників, освітні заклади та групи громадянського суспільства ЄС. Безкоштовний інструмент Claude Content Checker, який також пропонує Anthropic, зчитує метадані C2PA Content Credentials у створених файлах, що є зовсім іншою річчю, ніж водяний знак у тексті.
Те, що компанія xAI не підписала Кодекс практики, не звільняє Grok від дії самого Закону про ШІ (AI Act). Добровільний кодекс є шляхом до дотримання вимог, а не заміною закону.
Як працює маркування тексту водяними знаками в Claude?
Claude обирає між однаково відповідними словами, а секретний ключ визначає, яке саме слово буде використано. Маркуванням є сама послідовність вибору, а не будь-який конкретний символ у тексті.
Anthropic просто описує цей механізм: «Замість використання довільного генератора випадкових чисел для вибору наступного слова, нанесення водяного знака використовує ключ і кілька попередніх слів, щоб визначити, яке слово має обрати модель». Компанія також стверджує, що водяний знак у тексті Claude «є версією підходу SynthID-Text, опублікованого Google DeepMind у статті журналу Nature у 2024 році».
Щодо стійкості Anthropic дає конкретне пояснення: «Незначне редагування, ймовірно, не видалить водяний знак повністю», тоді як повне переписування, де замінено кожне слово, призведе до його видалення.
Що саме маркує SynthID Text у відповідях Gemini?
SynthID Text вбудовує свій патерн у ймовірності токенів під час генерації тексту в Gemini. Google DeepMind оголосила про технологію нанесення водяних знаків на текст SynthID для додатка та вебверсії Gemini 14 травня 2024 року. Цей метод працює «шляхом внесення додаткової інформації в розподіл токенів під час генерації завдяки модуляції ймовірності появи певних токенів». DeepMind відкрила вихідний код цього методу пізніше того ж року в рамках набору інструментів Responsible Generative AI Toolkit.
Опубліковані обмеження мають не менше значення, ніж сам метод. SynthID Text працює найкраще на довгих і різноманітних відповідях. Він демонструє слабкі результати на коротких фактологічних відповідях, де модель майже не має свободи вибору формулювань. Рівень достовірності виявлення знову падає, якщо текст було ретельно переписано або перекладено.
Виявлення прихованих символів та авторство ШІ: чому одне ніколи не доводить інше?
Прихований символ свідчить про те, що ваш текст пройшов обробку, а не про те, що його написав ШІ.
Кожен невидимий символ має звичайне пояснення, що існувало задовго до появи генерації тексту штучним інтелектом. Текстові процесори, системи керування контентом (CMS) та інструменти експорту в PDF додавали їх десятиліттями. Виявлення такого символу вказує лише на те, що текст пройшов через програмне забезпечення, що є правдою для майже кожного речення, яке будь-хто публікує.
Звідки беруться невидимі символи, окрім ШІ?
Текстові процесори, вебредактори, експорт у PDF, інструменти перекладу, програми обміну повідомленнями та звичайне копіювання і вставка додають невидимі символи самі по собі.
| Джерело | Символи, які зазвичай додаються | Причина |
|---|---|---|
| Текстові процесори | U+00A0, U+2019, U+2014, U+00AD | Автовиправлення та автоматичне перенесення слів |
| Редактори вебсайтів та CMS | U+200B, U+FEFF | Підказки розриву рядків і маркери кодування файлів |
| Експорт у PDF | U+2009, U+202F, U+00A0 | Збереження типографічних інтервалів під час зворотного копіювання тексту |
| Інструменти перекладу та локалізації | U+200C, U+200D, U+061C | Коректне відображення арабського, перського та індійського письма |
| Чати та програми обміну повідомленнями | U+200D, U+FE0F | Послідовності емодзі та вибір текстового або графічного відображення |
| Копіювання та вставка між програмами | U+FEFF, змішані пробіли Zs | Конвертація кодування в буфері обміну |
Моє власне 40-байтове тестове речення отримало чотири виявлення, навіть жодного разу не стикаючись із мовною моделлю. Це вичерпний аргумент в одному вимірюванні.
Чому довгі тире не є водяним знаком
Довге тире (em dash) — це звичайний розділовий знак, яким письменники, редактори й автовиправлення користуються століттями, тому воно не несе жодного сигналу про те, хто саме написав речення.
Виправлення 2025 року остаточно ставить крапку. 14 листопада 2025 року компанія OpenAI оголосила, що ChatGPT нарешті дотримуватиметься користувацьких інструкцій, які забороняють йому використовувати довгі тире. Сем Альтман того дня прямо сказав: «Якщо ви вкажете ChatGPT не використовувати довгі тире у своїх користувацьких інструкціях, він нарешті робить те, що повинен». Звичка, яку користувач може вимкнути в налаштуваннях персоналізації, ніколи не була водяним знаком. Це був лише стилістичний патерн, засвоєний під час навчання, а виправленням стала звичайна настройка вподобань.
Цей інструмент очищення все ще пропонує видалення тире, і причина цього цілком прозора: це стилістичний фільтр для тих, хто хоче бачити прямі лапки та звичайні дефіси у своєму тексті. Це не фільтр водяних знаків, і він жодним чином не змінить вердикт будь-якого детектора щодо вашого тексту.
Коли очищення псує текст: перська, арабська, індійські писемності та емодзі
Видалення символів нульової ширини може порушити правильний текст, оскільки деяким системам письма вони необхідні для коректного написання слів.
Я протестував чотири випадки, які порушуються найчастіше, і зафіксував, що саме сталося. Перське слово میخواهم складається з восьми символів, а U+200C посередині не дає двом частинам з'єднатися. Видаліть його — і отримаєте میخواهم, сім символів та іншу письмову форму. У деванагарі क्ष містить U+200D, що формує правильну лігатуру, і його видалення змінює форму символу на екрані. Сімейне емодзі 👨👩👧👦 — це сім кодових точок: чотири картинки, об'єднані трьома з'єднувачами U+200D. Вилучіть з'єднувачі — і воно розпадеться на 👨👩👧👦, чотири окремі людини. Червоне серце ❤️ містить U+FE0F для відображення як емодзі, а без нього та сама кодова точка повертається до звичайного текстового символу ❤.
Ось чому цей інструмент показує результати виявлення перед очищенням будь-чого, чому окремі знайдені символи можна зберегти, і чому режим «Суворий» не є типовим. Редактор, який працює з однією мовою, бачить чистий результат. Редактор, який працює із шістьма мовами, бачить звіт про помилки.
Остаточний висновок щодо очищення водяних знаків ШІ в тексті
Очищення невидимих символів варто робити для отримання чистого, сумісного та безпечного тексту.
Використання цього інструмента виправдовують дві причини. Перша полягає в тому, що приховані символи непомітно ламають структуру: у результатах пошуку, формулах електронних таблиць, коді та URL-адресах. Друга — у тому, що символи тегів можуть передавати інструкції асистенту ШІ, яких ніхто не вводив і яких ніхто не бачить. Це перетворює очищення на звичку кібербезпеки, а не просто косметичну дію.
Усі, хто сподівається обійти водяний знак постачальника, чистять не той рівень. Claude та Gemini маркують текст підбором слів, OpenAI маркує зображення та аудіо, але не текст, і жодне видалення символів до них не дістанеться. Один зі способів обійти таке статистичне маркування — перекласти текст кількома різними мовами, а потім перекласти назад мовою оригіналу.
Вставте одну сторінку власного тексту в поле введення вище та перегляньте виявлені елементи, щоб краще зрозуміти структуру тексту, або просто скопіюйте результат.
Наразі це все. Дякуємо, що дочитали до цього місця.