Опубліковано: 2026-05-23
Як порівняти два тексти онлайн безкоштовно (diff слів)
Знайди кожне додане, видалене й змінене слово між двома чернетками миттєво — diff на рівні слів, Unicode-safe, на 100% у браузері. Порівняй тексти зараз.

У тебе є дві версії того самого тексту, і треба точно знати, що змінилося. Може, редактор повернув твоє есе, може, колега переписав твій лист, а може, ти втупився у два пункти договору, які виглядають однаково. Читати їх поряд і ловити різницю на око — повільно й ненадійно: мозок ковзає по тексту, і єдине слово, що має значення, — саме те, яке ти пропустиш.
Виправити це — три секунди. Встав обидві версії в наш Порівняння текстів — він працює на 100% у браузері, нуль даних на жоден сервер — і кожне додане, видалене та незмінне слово вмить розфарбується. Зелений для нового, червоний для зниклого, сірий для того, що лишилося. Читати нічого не треба.
Найшвидший спосіб порівняти два тексти
Ось увесь процес:
- Відкрий Порівняння текстів
- Встав оригінальний текст у ліве поле
- Встав виправлену версію в праве поле
- Diff рендериться наживо — додавання зеленим, вилучення червоним
Підсумковий рядок показує лічбу: X слів додано, Y видалено, Z без змін. Часто цього єдиного рядка зайнятому рецензенту й досить — він відповідає на питання «а скільки взагалі змінилося?» ще до того, як ти прочитаєш бодай слово деталей.
Оце і все. Жодного діалогу завантаження, жодного вибору файлу, жодного спінера «обробляємо ваш документ». Порівняння рахується тієї ж миті, коли в обох полях з'являється текст.
На рівні слів, символів чи рядків: обери правильну деталізацію
Не всі diff однакові. Деталізація — розмір шматка, який порівнюється — повністю змінює те, що ти бачиш. Обереш не той — і результат марний.
| Деталізація | Що порівнює | Для чого найкраще | Компроміс |
|---|---|---|---|
| На рівні символів | Кожен окремий символ | Код, точні рядки, полювання на одруківки | Болісно «шумна» на прозі — позначає кожну літеру |
| На рівні слів | Кожне слово як один токен | Есе, статті, листи, підписи | Золота середина для всього, що читає людина |
| На рівні рядків | Цілі рядки за раз | Код, рядки CSV, списки | Пропускає правки всередині рядка |
Для порівняння двох текстів — справжніх речень і абзаців — майже завжди потрібен рівень слів. Зміни «кіт сів» на «пес сів», і символьний diff заволає про три змінені літери посеред слова; а diff на рівні слів спокійно скаже тобі: «кіт» став «псом». Це і є різниця між читабельною рецензією та візуальним шумом.
Порівняння текстів за задумом працює на рівні слів. Воно заточене під прозу, а не під вихідний код.
Пастка невидимих символів (чому «однакові» тексти різні)
Це той баг, що з'їдає всім по півдня. Ти вставляєш два абзаци, які явно однакові, тиснеш «порівняти» — а інструмент підсвічує пів тексту червоним і зеленим. Що сталося?
Невидимі символи. Текст не однаковий — він лише виглядає однаковим. Звичні підозрювані:
- Типографські лапки — Word і Google Docs автоматично перетворюють
'на'(U+2018/U+2019). Встав з одного джерела й набери в іншому — і твої апострофи не збігаються. - Нерозривні пробіли — вебвміст напханий
(U+00A0), а це інший символ, ніж звичайний пробіл. - Зайві пробіли в кінці — випадковий пробіл у кінці рядка невидимий, але враховується.
- Закінчення рядків — Windows використовує
\r\n, Unix —\n. На вигляд однаковий перенос, інші байти.

Виправлення — 10-секундне попереднє чищення. Спершу прожени обидва тексти через інструмент Виправити пробіли — він випрямляє типографські лапки, прибирає нерозривні пробіли й підрізає закінчення рядків за один прохід. Усю механіку цього ми розклали в матеріалі як прибрати зайві пробіли з тексту онлайн, бо вставлений текст приходить забрудненим частіше, ніж ні. Спершу почисти, потім порівнюй. Твій diff із хаосу перетвориться на сигнал.
Для чого це реально використовують
«Порівняти два тексти» звучить абстрактно, поки не прив'яжеш до справжньої роботи. Ось хто тягнеться до diff-інструмента й навіщо:
| Хто | Що порівнює | Що шукає |
|---|---|---|
| Студенти | Свою чернетку проти виправленої викладачем | Які саме речення змінили й чому |
| Автори | Розділ v3 проти розділу v4 | Чи пізня правка випадково не вирізала ключовий рядок |
| SMM-менеджери | Два варіанти підпису для A/B-тесту | Точну різницю у формулюваннях версій A і B |
| Юристи / ops | Договір надісланий проти повернутого | Правки — кожен пункт, який контрагент тихцем змінив |
| Редактори | Чернетку від ШІ проти фінальної людської | Скільки машинного виводу пережило редактуру |
Останнє трапляється дедалі частіше. Кинь сирий вивід моделі ліворуч, свою відшліфовану версію праворуч — і зелено-червоний розподіл з першого погляду покаже твій реальний редакторський слід. Корисно і щоб довести, що текст торкалася людина, і щоб побачити, де ти постійно переписуєш.
Як порівняння працює насправді (для допитливих)
Під капотом diff використовує алгоритм найдовшої спільної підпослідовності (LCS) — той самий підхід динамічного програмування, що живить git diff і більшість систем контролю версій. Він не вгадує. Він обчислює математично найдовший пробіг слів, спільний для обох текстів у тому ж порядку, а тоді позначає все поза цим пробігом як додане чи видалене.
Вартість — $O(m \times n)$, де m і n — кількість слів двох текстів. На практиці це означає, що два документи по 5000 слів — 25 мільйонів комірок матриці порівняння — все одно звіряються значно менш ніж за секунду на звичайному ноутбуці. Просто працює.
Крок токенізації важить не менше за сам алгоритм. Джуніорська реалізація ріже по пробілах через text.split(' ') і вважає роботу зробленою. Це ламається тієї ж миті, коли згодуєш їй китайську, японську чи тайську — писемності, де слова не розділяються пробілами, — повертаючи один велетенський токен замість речення, тож будь-яка правка підсвічує цілий рядок. Порівняння текстів натомість токенізує через Intl.Segmenter: стандартний за W3C сегментатор слів із урахуванням локалі, вбудований у кожен сучасний браузер — той самий API, який ми ганяли в матеріалі як рахувати слова в JavaScript. Він ділить 私は学生です на справжні слова, тож заміна 学生 на 先生 підсвічує рівно ці два ієрогліфи, а не все речення.
Є й друга вигода. Кожен словесний токен зберігає причеплену кінцеву пунктуацію й цифри, тож числова правка ловиться як чиста заміна токена. Зміни в договорі $100,000 на $200,000 — і diff позначить цей один токен; він не пропустить тихцем цифри так, як це зробив би патерн на самих літерах /\p{L}+/. Слова, числа й символи — усе порівнюється.
Ось увесь конвеєр — два рядки на вході, кольорова розмітка на виході:
| Токен у A | Токен у B | Вердикт LCS | Як відрендериться |
|---|---|---|---|
the | the | у спільній підпослідовності | сірий — без змін |
cat | — | відсутній у B | |
| — | dog | відсутній у A | зелений — додано |
sat | sat | у спільній підпослідовності | сірий — без змін |
Токенізувати → вирівняти через LCS → загорнути кожен токен у кольоровий span. Три стадії, без сервера, без вгадування.
Бонус: масове редагування перед порівнянням
Іноді різниця між двома текстами — це не випадкова зміна, а системна, яку ти хочеш внести сам. Перейменувати продукт по всьому документу, замінити кожне «колір» на «барва», уніфікувати термінологію перед diff.
Для цього бери Пошук і заміну. Внеси масову зміну в одну версію, а тоді звір її з оригіналом — переконатися, що заміна влучила в кожне входження й ні в що зайве. Інструмент підтримує повноцінні регулярки з прапором u для Unicode, тож можна матчити патерни, а не літеральні рядки — зручно, коли те, що замінюєш, має варіації. Просто пам'ятай, для чого кожен інструмент: Пошук і заміна вносить зміни, Порівняння текстів їх показує. Разом вони утворюють щільний цикл «відредагуй і перевір».
А якщо тобі просто треба знати, яка з версій довша — кількість слів, час читання, оцінка читабельності — встав її в Лічильник слів і отримай повний розклад.
Той бік приватності, про який ніхто не згадує
Більшість сервісів «порівняти текст онлайн» тихцем POST-ять твої два блоки тексту на бекенд, рахують diff на сервері й шлють результат назад. Для списку покупок — кого це обходить. А для непідписаного договору, прес-релізу під ембарго чи рукопису, на який ти ще не зареєстрував авторське право, — це твій конфіденційний текст, що лежить у чужих серверних логах.
Порівняння текстів цього запиту не робить ніколи. Обчислення LCS відбувається в тому ж рушії V8, що рендерить цю сторінку; твої два тексти не залишають вкладки. Немає завантаження — отже, немає чого перехопити, закешувати чи витребувати через суд. Це та гарантія, яка мала б бути типовою для текстових інструментів і чомусь досі нею не стала.
Дві версії, одне порівняння, нуль даних, що залишають твою машину. Відкрий Порівняння текстів і дізнайся точно, що змінилося.
