[{"data":1,"prerenderedAt":635},["ShallowReactive",2],{"blog-uk-compare-two-texts-online":3},{"id":4,"title":5,"alt":6,"author":7,"body":8,"category":596,"description":597,"extension":598,"faq":599,"image":621,"meta":622,"navigation":623,"path":624,"publishedAt":625,"seo":626,"stem":627,"tags":628,"__hash__":634},"blog\u002Fuk\u002Fcompare-two-texts-online.md","Як порівняти два тексти онлайн безкоштовно (diff слів)","Дві колонки тексту поруч: додані слова підсвічені зеленим, видалені — закреслені червоним на темно-сланцевому тлі","Vibe Apps Pro Team",{"type":9,"value":10,"toc":585},"minimark",[11,20,32,35,40,43,63,70,73,75,79,82,160,167,170,172,176,179,185,236,245,260,262,266,269,350,353,355,359,370,381,410,424,427,517,520,522,526,533,555,565,567,571,574,577],[12,13,14,15,19],"p",{},"У тебе є дві версії того самого тексту, і треба точно знати, що змінилося. Може, редактор повернув твоє есе, може, колега переписав твій лист, а може, ти втупився у два пункти договору, які ",[16,17,18],"em",{},"виглядають"," однаково. Читати їх поряд і ловити різницю на око — повільно й ненадійно: мозок ковзає по тексту, і єдине слово, що має значення, — саме те, яке ти пропустиш.",[12,21,22,23,31],{},"Виправити це — три секунди. Встав обидві версії в наш ",[24,25,26],"strong",{},[27,28,30],"a",{"href":29},"\u002Fcompare-text","Порівняння текстів"," — він працює на 100% у браузері, нуль даних на жоден сервер — і кожне додане, видалене та незмінне слово вмить розфарбується. Зелений для нового, червоний для зниклого, сірий для того, що лишилося. Читати нічого не треба.",[33,34],"hr",{},[36,37,39],"h2",{"id":38},"найшвидший-спосіб-порівняти-два-тексти","Найшвидший спосіб порівняти два тексти",[12,41,42],{},"Ось увесь процес:",[44,45,46,54,57,60],"ol",{},[47,48,49,50],"li",{},"Відкрий ",[24,51,52],{},[27,53,30],{"href":29},[47,55,56],{},"Встав оригінальний текст у ліве поле",[47,58,59],{},"Встав виправлену версію в праве поле",[47,61,62],{},"Diff рендериться наживо — додавання зеленим, вилучення червоним",[12,64,65,66,69],{},"Підсумковий рядок показує лічбу: ",[16,67,68],{},"X слів додано, Y видалено, Z без змін",". Часто цього єдиного рядка зайнятому рецензенту й досить — він відповідає на питання «а скільки взагалі змінилося?» ще до того, як ти прочитаєш бодай слово деталей.",[12,71,72],{},"Оце і все. Жодного діалогу завантаження, жодного вибору файлу, жодного спінера «обробляємо ваш документ». Порівняння рахується тієї ж миті, коли в обох полях з'являється текст.",[33,74],{},[36,76,78],{"id":77},"на-рівні-слів-символів-чи-рядків-обери-правильну-деталізацію","На рівні слів, символів чи рядків: обери правильну деталізацію",[12,80,81],{},"Не всі diff однакові. Деталізація — розмір шматка, який порівнюється — повністю змінює те, що ти бачиш. Обереш не той — і результат марний.",[83,84,85,104],"table",{},[86,87,88],"thead",{},[89,90,91,95,98,101],"tr",{},[92,93,94],"th",{},"Деталізація",[92,96,97],{},"Що порівнює",[92,99,100],{},"Для чого найкраще",[92,102,103],{},"Компроміс",[105,106,107,124,140],"tbody",{},[89,108,109,115,118,121],{},[110,111,112],"td",{},[24,113,114],{},"На рівні символів",[110,116,117],{},"Кожен окремий символ",[110,119,120],{},"Код, точні рядки, полювання на одруківки",[110,122,123],{},"Болісно «шумна» на прозі — позначає кожну літеру",[89,125,126,131,134,137],{},[110,127,128],{},[24,129,130],{},"На рівні слів",[110,132,133],{},"Кожне слово як один токен",[110,135,136],{},"Есе, статті, листи, підписи",[110,138,139],{},"Золота середина для всього, що читає людина",[89,141,142,147,150,153],{},[110,143,144],{},[24,145,146],{},"На рівні рядків",[110,148,149],{},"Цілі рядки за раз",[110,151,152],{},"Код, рядки CSV, списки",[110,154,155,156,159],{},"Пропускає правки ",[16,157,158],{},"всередині"," рядка",[12,161,162,163,166],{},"Для порівняння двох текстів — справжніх речень і абзаців — ",[24,164,165],{},"майже завжди потрібен рівень слів",". Зміни «кіт сів» на «пес сів», і символьний diff заволає про три змінені літери посеред слова; а diff на рівні слів спокійно скаже тобі: «кіт» став «псом». Це і є різниця між читабельною рецензією та візуальним шумом.",[12,168,169],{},"Порівняння текстів за задумом працює на рівні слів. Воно заточене під прозу, а не під вихідний код.",[33,171],{},[36,173,175],{"id":174},"пастка-невидимих-символів-чому-однакові-тексти-різні","Пастка невидимих символів (чому «однакові» тексти різні)",[12,177,178],{},"Це той баг, що з'їдає всім по півдня. Ти вставляєш два абзаци, які явно однакові, тиснеш «порівняти» — а інструмент підсвічує пів тексту червоним і зеленим. Що сталося?",[12,180,181,184],{},[24,182,183],{},"Невидимі символи."," Текст не однаковий — він лише виглядає однаковим. Звичні підозрювані:",[186,187,188,202,216,222],"ul",{},[47,189,190,193,194,198,199,201],{},[24,191,192],{},"Типографські лапки"," — Word і Google Docs автоматично перетворюють ",[195,196,197],"code",{},"'"," на ",[195,200,197],{}," (U+2018\u002FU+2019). Встав з одного джерела й набери в іншому — і твої апострофи не збігаються.",[47,203,204,207,208,211,212,215],{},[24,205,206],{},"Нерозривні пробіли"," — вебвміст напханий ",[195,209,210],{},"&nbsp;"," (U+00A0), а це ",[16,213,214],{},"інший символ",", ніж звичайний пробіл.",[47,217,218,221],{},[24,219,220],{},"Зайві пробіли в кінці"," — випадковий пробіл у кінці рядка невидимий, але враховується.",[47,223,224,227,228,231,232,235],{},[24,225,226],{},"Закінчення рядків"," — Windows використовує ",[195,229,230],{},"\\r\\n",", Unix — ",[195,233,234],{},"\\n",". На вигляд однаковий перенос, інші байти.",[12,237,238],{},[239,240],"img",{"alt":241,"height":242,"src":243,"width":244},"Рядок тексту, збільшений так, що проступають приховані символи — типографська лапка, нерозривний пробіл і кінцевий пробіл — виринають як світні маркери над словами",672,"\u002Farticles\u002Fcompare-two-texts-online\u002Fsection-1.webp",900,[12,246,247,248,254,255,259],{},"Виправлення — 10-секундне попереднє чищення. Спершу прожени обидва тексти через інструмент ",[24,249,250],{},[27,251,253],{"href":252},"\u002Fremove-spaces","Виправити пробіли"," — він випрямляє типографські лапки, прибирає нерозривні пробіли й підрізає закінчення рядків за один прохід. Усю механіку цього ми розклали в матеріалі ",[27,256,258],{"href":257},"\u002Fblog\u002Fhow-to-remove-extra-spaces-from-text-online","як прибрати зайві пробіли з тексту онлайн",", бо вставлений текст приходить забрудненим частіше, ніж ні. Спершу почисти, потім порівнюй. Твій diff із хаосу перетвориться на сигнал.",[33,261],{},[36,263,265],{"id":264},"для-чого-це-реально-використовують","Для чого це реально використовують",[12,267,268],{},"«Порівняти два тексти» звучить абстрактно, поки не прив'яжеш до справжньої роботи. Ось хто тягнеться до diff-інструмента й навіщо:",[83,270,271,283],{},[86,272,273],{},[89,274,275,278,280],{},[92,276,277],{},"Хто",[92,279,97],{},[92,281,282],{},"Що шукає",[105,284,285,298,311,324,337],{},[89,286,287,292,295],{},[110,288,289],{},[24,290,291],{},"Студенти",[110,293,294],{},"Свою чернетку проти виправленої викладачем",[110,296,297],{},"Які саме речення змінили й чому",[89,299,300,305,308],{},[110,301,302],{},[24,303,304],{},"Автори",[110,306,307],{},"Розділ v3 проти розділу v4",[110,309,310],{},"Чи пізня правка випадково не вирізала ключовий рядок",[89,312,313,318,321],{},[110,314,315],{},[24,316,317],{},"SMM-менеджери",[110,319,320],{},"Два варіанти підпису для A\u002FB-тесту",[110,322,323],{},"Точну різницю у формулюваннях версій A і B",[89,325,326,331,334],{},[110,327,328],{},[24,329,330],{},"Юристи \u002F ops",[110,332,333],{},"Договір надісланий проти повернутого",[110,335,336],{},"Правки — кожен пункт, який контрагент тихцем змінив",[89,338,339,344,347],{},[110,340,341],{},[24,342,343],{},"Редактори",[110,345,346],{},"Чернетку від ШІ проти фінальної людської",[110,348,349],{},"Скільки машинного виводу пережило редактуру",[12,351,352],{},"Останнє трапляється дедалі частіше. Кинь сирий вивід моделі ліворуч, свою відшліфовану версію праворуч — і зелено-червоний розподіл з першого погляду покаже твій реальний редакторський слід. Корисно і щоб довести, що текст торкалася людина, і щоб побачити, де ти постійно переписуєш.",[33,354],{},[36,356,358],{"id":357},"як-порівняння-працює-насправді-для-допитливих","Як порівняння працює насправді (для допитливих)",[12,360,361,362,365,366,369],{},"Під капотом diff використовує алгоритм ",[24,363,364],{},"найдовшої спільної підпослідовності (LCS)"," — той самий підхід динамічного програмування, що живить ",[195,367,368],{},"git diff"," і більшість систем контролю версій. Він не вгадує. Він обчислює математично найдовший пробіг слів, спільний для обох текстів у тому ж порядку, а тоді позначає все поза цим пробігом як додане чи видалене.",[12,371,372,373,376,377,380],{},"Вартість — $O(m \\times n)$, де ",[16,374,375],{},"m"," і ",[16,378,379],{},"n"," — кількість слів двох текстів. На практиці це означає, що два документи по 5000 слів — 25 мільйонів комірок матриці порівняння — все одно звіряються значно менш ніж за секунду на звичайному ноутбуці. Просто працює.",[12,382,383,384,387,388,393,394,398,399,402,403,198,406,409],{},"Крок токенізації важить не менше за сам алгоритм. Джуніорська реалізація ріже по пробілах через ",[195,385,386],{},"text.split(' ')"," і вважає роботу зробленою. Це ламається тієї ж миті, коли згодуєш їй китайську, японську чи тайську — писемності, де слова не розділяються пробілами, — повертаючи один велетенський токен замість речення, тож будь-яка правка підсвічує цілий рядок. Порівняння текстів натомість токенізує через ",[24,389,390],{},[195,391,392],{},"Intl.Segmenter",": стандартний за W3C сегментатор слів із урахуванням локалі, вбудований у кожен сучасний браузер — той самий API, який ми ганяли в матеріалі ",[27,395,397],{"href":396},"\u002Fblog\u002Fhow-to-count-words-javascript","як рахувати слова в JavaScript",". Він ділить ",[195,400,401],{},"私は学生です"," на справжні слова, тож заміна ",[195,404,405],{},"学生",[195,407,408],{},"先生"," підсвічує рівно ці два ієрогліфи, а не все речення.",[12,411,412,413,198,416,419,420,423],{},"Є й друга вигода. Кожен словесний токен зберігає причеплену кінцеву пунктуацію й цифри, тож числова правка ловиться як чиста заміна токена. Зміни в договорі ",[195,414,415],{},"$100,000",[195,417,418],{},"$200,000"," — і diff позначить цей один токен; він не пропустить тихцем цифри так, як це зробив би патерн на самих літерах ",[195,421,422],{},"\u002F\\p{L}+\u002F",". Слова, числа й символи — усе порівнюється.",[12,425,426],{},"Ось увесь конвеєр — два рядки на вході, кольорова розмітка на виході:",[83,428,429,445],{},[86,430,431],{},[89,432,433,436,439,442],{},[92,434,435],{},"Токен у A",[92,437,438],{},"Токен у B",[92,440,441],{},"Вердикт LCS",[92,443,444],{},"Як відрендериться",[105,446,447,464,484,502],{},[89,448,449,454,458,461],{},[110,450,451],{},[195,452,453],{},"the",[110,455,456],{},[195,457,453],{},[110,459,460],{},"у спільній підпослідовності",[110,462,463],{},"сірий — без змін",[89,465,466,471,474,477],{},[110,467,468],{},[195,469,470],{},"cat",[110,472,473],{},"—",[110,475,476],{},"відсутній у B",[110,478,479,483],{},[480,481,482],"del",{},"червоне закреслення"," — видалено",[89,485,486,488,493,496],{},[110,487,473],{},[110,489,490],{},[195,491,492],{},"dog",[110,494,495],{},"відсутній у A",[110,497,498,501],{},[24,499,500],{},"зелений"," — додано",[89,503,504,509,513,515],{},[110,505,506],{},[195,507,508],{},"sat",[110,510,511],{},[195,512,508],{},[110,514,460],{},[110,516,463],{},[12,518,519],{},"Токенізувати → вирівняти через LCS → загорнути кожен токен у кольоровий span. Три стадії, без сервера, без вгадування.",[33,521],{},[36,523,525],{"id":524},"бонус-масове-редагування-перед-порівнянням","Бонус: масове редагування перед порівнянням",[12,527,528,529,532],{},"Іноді різниця між двома текстами — це не ",[16,530,531],{},"випадкова"," зміна, а системна, яку ти хочеш внести сам. Перейменувати продукт по всьому документу, замінити кожне «колір» на «барва», уніфікувати термінологію перед diff.",[12,534,535,536,542,543,546,547,550,551,554],{},"Для цього бери ",[24,537,538],{},[27,539,541],{"href":540},"\u002Ffind-replace","Пошук і заміну",". Внеси масову зміну в одну версію, а тоді звір її з оригіналом — переконатися, що заміна влучила в кожне входження й ні в що зайве. Інструмент підтримує повноцінні регулярки з прапором ",[195,544,545],{},"u"," для Unicode, тож можна матчити патерни, а не літеральні рядки — зручно, коли те, що замінюєш, має варіації. Просто пам'ятай, для чого кожен інструмент: Пошук і заміна ",[16,548,549],{},"вносить"," зміни, Порівняння текстів їх ",[16,552,553],{},"показує",". Разом вони утворюють щільний цикл «відредагуй і перевір».",[12,556,557,558,564],{},"А якщо тобі просто треба знати, яка з версій довша — кількість слів, час читання, оцінка читабельності — встав її в ",[24,559,560],{},[27,561,563],{"href":562},"\u002F","Лічильник слів"," і отримай повний розклад.",[33,566],{},[36,568,570],{"id":569},"той-бік-приватності-про-який-ніхто-не-згадує","Той бік приватності, про який ніхто не згадує",[12,572,573],{},"Більшість сервісів «порівняти текст онлайн» тихцем POST-ять твої два блоки тексту на бекенд, рахують diff на сервері й шлють результат назад. Для списку покупок — кого це обходить. А для непідписаного договору, прес-релізу під ембарго чи рукопису, на який ти ще не зареєстрував авторське право, — це твій конфіденційний текст, що лежить у чужих серверних логах.",[12,575,576],{},"Порівняння текстів цього запиту не робить ніколи. Обчислення LCS відбувається в тому ж рушії V8, що рендерить цю сторінку; твої два тексти не залишають вкладки. Немає завантаження — отже, немає чого перехопити, закешувати чи витребувати через суд. Це та гарантія, яка мала б бути типовою для текстових інструментів і чомусь досі нею не стала.",[12,578,579,580,584],{},"Дві версії, одне порівняння, нуль даних, що залишають твою машину. Відкрий ",[24,581,582],{},[27,583,30],{"href":29}," і дізнайся точно, що змінилося.",{"title":586,"searchDepth":587,"depth":587,"links":588},"",2,[589,590,591,592,593,594,595],{"id":38,"depth":587,"text":39},{"id":77,"depth":587,"text":78},{"id":174,"depth":587,"text":175},{"id":264,"depth":587,"text":265},{"id":357,"depth":587,"text":358},{"id":524,"depth":587,"text":525},{"id":569,"depth":587,"text":570},"Writing Tips","Знайди кожне додане, видалене й змінене слово між двома чернетками миттєво — diff на рівні слів, Unicode-safe, на 100% у браузері. Порівняй тексти зараз.","md",[600,603,606,609,612,615,618],{"question":601,"answer":602},"Порівняння двох текстів онлайн справді безкоштовне?","Так — інструмент Порівняння текстів за адресою \u002Fcompare-text повністю безкоштовний: без акаунта, без реєстрації й без жодного кроку із завантаженням файлів. Встав два блоки тексту, натисни «порівняти» — і миттєво бачиш diff на рівні слів. Немає ліміту символів, який підштовхує до платного тарифу, і немає водяного знака на результаті. Усе працює у твоєму браузері, тож єдина «ціна» — це півсекунди роботи процесора твоєї ж машини.",{"question":604,"answer":605},"Чим порівняння двох текстів відрізняється від порівняння двох файлів?","Порівняти тексти означає вставити два блоки прози просто в інструмент — ідеально для чернеток есе, підписів до постів, версій листа чи пунктів договору, які ти звідкись скопіював. Порівняти файли означає завантажити два документи (.txt, .docx, файли коду) і звірити їхній повний вміст. Для щоденної роботи з текстом тобі майже завжди потрібен підхід «встав два блоки»: він швидший, відкидає форматне сміття документа й фокусує diff саме на словах, які реально змінилися.",{"question":607,"answer":608},"Чому два тексти, що виглядають однаково, показуються як різні?","Невидимі символи. Звичні винуватці — це типографські лапки («розумні» лапки U+2018\u002FU+2019 проти прямих ASCII-апострофів), нерозривні пробіли (U+00A0) зі скопійованого вебвмісту, зайві пробіли в кінці рядків і переноси Windows CRLF проти Unix LF. Око їх не бачить, а рушій порівняння трактує як окремі символи. Спершу почисти обидва тексти інструментом Виправити пробіли за адресою \u002Fremove-spaces — і хибні спрацювання зникнуть ще до diff.",{"question":610,"answer":611},"Чи працює порівняння з неанглійськими мовами?","Працює. Інструмент токенізує текст через Intl.Segmenter — вбудований у браузер сегментатор слів, що враховує локаль (стандарт W3C), — замість того щоб різати по пробілах. Тому він коректно опрацьовує кирилицю, арабську, німецькі умляути та CJK-писемності, де слова не розділяються пробілами. Наївний diff на text.split(' ') повертає один велетенський токен для китайського речення й ламається повністю. А оскільки Intl.Segmenter знає, де слова реально починаються й закінчуються, зміну всередині японського чи українського абзацу він локалізує так само точно, як і в англійському.",{"question":613,"answer":614},"Чи можна порівняти більш ніж два тексти одночасно?","Інструмент порівнює два тексти за раз — оригінал і ревізію. Це стандарт для diff, бо осмислене порівняння потребує рівно однієї базової версії та однієї кандидатної. Щоб звірити три версії, зроби два проходи: оригінал проти чернетки 2, потім чернетка 2 проти чернетки 3. А якщо ти полюєш на повторювані фрази всередині одного документа, а не порівнюєш два, то для цього завдання краще пасує Частота слів.",{"question":616,"answer":617},"Який алгоритм використовується для порівняння двох текстів?","Алгоритм найдовшої спільної підпослідовності (LCS) — той самий фундамент динамічного програмування, що живить git diff і більшість систем контролю версій. LCS знаходить найдовшу послідовність слів, яка є в обох текстах у тому ж порядку, а тоді позначає все поза цією послідовністю як додане (зелене) чи видалене (червоне). Працює за час O(m × n), де m і n — кількість слів, тому навіть два есе по 5000 слів звіряються значно менш ніж за секунду.",{"question":619,"answer":620},"Чи завантажується мій текст на сервер, коли я його порівнюю?","Ні. Кожен байт порівняння відбувається в JavaScript-рушії твого браузера — нічого не передається, не зберігається й не логується. Це критично, коли звіряєш конфіденційне: правки договору, неопублікований рукопис, внутрішні службові записки, NDA. Закрий вкладку — і обидва тексти зникають з пам'яті. Немає серверної копії, яку можна злити, бо сервер тексту просто не отримував.","\u002Farticles\u002Fcompare-two-texts-online\u002Fhero.webp",{},true,"\u002Fuk\u002Fcompare-two-texts-online","2026-05-23",{"title":5,"description":597},"uk\u002Fcompare-two-texts-online",[629,630,631,632,633],"порівняти два тексти","порівняння текстів","diff тексту","знайти зміни в тексті","інструменти для письма","jIj5K2DsNPhLX8NhMbOCR_zOM--kLC2fTPQSQMMPmuY",1782712870325]