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