Wejście
Wyjście

Czym jest Porównaj tekst?

Porównaj tekst to narzędzie online, które bierze dwa teksty i pokazuje dokładnie, co się między nimi zmieniło. Wklej starą wersję po jednej stronie, a nową po drugiej — różnice rozjaśniają się kolorem. Zielony to dodane, czerwony to usunięte.

Działa na dowolnym tekście: akapitach, fragmentach kodu, plikach konfiguracyjnych, klauzulach umów, tłumaczeniach. Linie, które się zgadzają, pozostają neutralne, więc wzrok idzie prosto do tego, co inne.

Użyj, gdy nie chcesz otwierać narzędzia desktopowego, ale chcesz dokładny wynik w jednym kliknięciu. Bez rejestracji, bez przesyłania, bez śladu po porównaniu.

Co robi

Compare Text bierze dwa teksty i zaznacza dodane fragmenty na zielono, a usunięte na czerwono. Działa znak po znaku, więc brakujący przecinek lub zmieniona nazwa zmiennej widać od razu. Silnikiem jest biblioteka diff-match-patch firmy Google (Apache 2.0). Ogólna technika nazywa się diff, a problem leżący u jej podstaw (znalezienie najmniejszego zestawu zmian między dwoma ciągami) sprowadza się do klasycznego problemu najdłuższego wspólnego podciągu.

Silnik równie dobrze radzi sobie z językiem naturalnym i kodem — to to samo podejście, które stoi za historią zmian w edytorach dokumentów. Jeśli porównujesz dane strukturalne zamiast prozy, nasze narzędzie do diffowania JSON najpierw parsuje obie strony i ignoruje kolejność kluczy: inny problem, inne narzędzie.

Bez serwera. Tekst czyta JavaScript za pomocą API FileReader, porównuje i wynik rysuje na stronie. Zamykasz kartę, znika.

Jak porównać dwa teksty

Trzy kroki. Diff aktualizuje się przy pisaniu, nie ma przycisku porównania.

  1. 1

    Wstaw oryginał

    Wklej w lewy panel albo kliknij Wczytaj, by otworzyć plik .txt lub .md. Przykład wstawia krótki tekst pokazowy.

  2. 2

    Wstaw nową wersję

    Wklej lub wczytaj po prawej. Gdy oba panele mają zawartość, usunięcia pojawiają się na czerwono po lewej, a dodania na zielono po prawej.

  3. 3

    Sprawdź zmiany

    Przewijasz jedną stronę, druga przewija się razem. Nagłówek pokazuje, ile zmian wykryto. Skopiuj lub pobierz dowolny tekst.

Kiedy się przyda

Wyłapywanie poprawek redline w umowie

Wklej V1 umowy z dostawcą po lewej, a oznaczoną V2 po prawej. Klauzule o odszkodowaniu, płatnościach i wypowiedzeniu, które po cichu się zmieniły, wychodzą natychmiast. Przydatne, gdy druga strona przesyła czystą kopię bez włączonego śledzenia zmian.

Korekta brudnopisów i poprawek redakcyjnych

Porównaj swój brudnopis z wersją po redakcji albo wpis na blogu przed i po korekcie. Każde zmienione słowo widać; nie musisz czytać całości jeszcze raz, by znaleźć skreślone zdanie.

Sprawdzanie rundy tłumaczenia

Oryginał z jednej strony, poprawki tłumacza z drugiej. Zauważ, które idiomy zostały przepisane i gdzie redaktor odrzucił wersję dosłowną. Oszczędza drugą lekturę całego dokumentu, gdy ufasz osobie sprawdzającej.

Diff plików konfiguracyjnych

nginx.conf, pliki unit systemd, szablony .env. Dwie wersje, obok siebie, w sekundach. Szybciej niż uruchamiać diff w terminalu, gdy oba pliki masz już w schowku z czatu.

Porównywanie migawek plików log

Wczorajszy log wdrożenia względem dzisiejszego, albo wynik tego samego joba z dwóch przebiegów CI. Stabilne linie usuwają się w tło, a nowy wzorzec błędu wybija na pierwszy plan. Przy logach na kilka MB najpierw zawęź zakres przez grep.

Szybka referencja diffu tekstu

Przypadki brzegowe, które to narzędzie wyciąga najczęściej, wraz z uzasadnieniem.

TematCo robi to narzędzie
Końce liniiLF, CRLF i CR to osobne znaki. Plik z Windowsa (CRLF) porównany z plikiem z Uniksa (LF) wygląda, jakby każda linia była inna. Znormalizuj do LF w obu źródłach albo usuń znaki powrotu karetki przed porównaniem.
Białe znaki na końcu liniiPokazane jako prawdziwa różnica: wyróżnienie wykracza poza widoczny znak. Przydatne do wyłapywania spacji na końcu w YAML lub CSV, które po cichu psują parsery.
Normalizacja Unicodecafé z prekomponowanym é (U+00E9) to jeden znak; forma rozłożona e + łączący akcent (U+0301) to dwa. Wyglądają identycznie, ale różnią się w diffie. Zastosuj Unicode Normalization Form C przez String.prototype.normalize(), aby je dopasować.
Granularność dopasowańPod spodem na poziomie znaków, z czyszczeniem semantycznym, które grupuje zmiany na granicach słów, gdy może. Dlatego krótkie powszechne słowa czasem wyglądają na dopasowane w zupełnie niezwiązanych tekstach.
Kodowanie plikuWczytywane pliki są odczytywane jako UTF-8 przez FileReader API. Inne kodowania będą zniekształcone. Przekonwertuj z wyprzedzeniem albo wklejaj z narzędzia, które już rozszyfrowało plik.
Duże daneDo kilkuset KB jest poniżej sekundy. 1–2 MB zauważalnie zwalnia. Powyżej 5 MB wąskim gardłem jest renderowanie, nie sam algorytm diffu. Zawęź zakres przed wklejeniem.
Pusta stronaJeśli jeden panel jest pusty, druga strona pokazuje się w całości jako dodanie (lub usunięcie). To poprawne zachowanie diffu, nie błąd.
Identyczne wejścieGdy obie strony zgadzają się dokładnie (włącznie z białymi znakami, końcami linii i formą Unicode), zmian jest zero, a nagłówki nie pokazują liczników.

Najczęstsze pytania

Czy mój tekst jest zapisywany?

Nie. Całe porównanie odbywa się w przeglądarce. Nic nie trafia na serwer, nie jest logowane ani zapisywane. Otwórz DevTools i sprawdź zakładkę Network: podczas porównywania nie ma żadnych żądań wychodzących. Zamykasz kartę i tekst znika.

Czym to się różni od diffu JSON?

Diff tekstu porównuje znaki po kolei, więc zmiana kolejności kluczy w JSON-ie albo formatowanie białych znaków pojawi się jako różnica, nawet jeśli dane są identyczne. Jeśli porównujesz konkretnie JSON, użyj narzędzia Compare JSON: parsuje obie strony i jest świadome kolejności. Dla prozy, configów, zwykłego kodu i wszystkiego, co nie jest danymi strukturalnymi, diff tekstu jest tym, czego potrzebujesz.

Czy radzi sobie z końcami linii Windows i Unix (CRLF vs LF)?

Porównuje je tak jak są, więc plik z Windowsa (CRLF) wklejony obok pliku z Uniksa (LF) wygląda, jakby każda linia się różniła, nawet gdy treść się zgadza. To diff działający poprawnie: wejścia naprawdę są różne. Aby to naprawić, znormalizuj końce linii w obu źródłach albo usuń znaki powrotu karetki przed wklejeniem.

Czy jest ograniczenie rozmiaru?

Praktycznym ograniczeniem jest pamięć urządzenia. Teksty do kilkuset KB diffują się znacznie poniżej sekundy. Powyżej 1 MB przeglądarka zaczyna to czuć, głównie dlatego, że renderowanie wyróżnień robi się kosztowne. Dla ogromnych logów albo całych książek najpierw zawęź do interesującego cię fragmentu.

Dlaczego diff czasem wygląda fragmentarycznie?

Diff na poziomie znaków stara się dopasować krótkie wspólne podciągi (the, a, pojedyncze litery, znaki interpunkcyjne) wszędzie, gdzie się da. Czyszczenie semantyczne grupuje je w bloki na poziomie słów, gdy to możliwe, ale dwa niezwiązane akapity i tak dadzą fragmentaryczny wynik. Algorytm nie ma jak rozpoznać, że dwa teksty nie były pisane do porównania.

Czy mogę porównywać pliki w różnych kodowaniach?

Pliki wczytywane przyciskiem są odczytywane jako UTF-8 (domyślne ustawienie FileReadera). Pliki w innych kodowaniach (Latin-1, Shift-JIS, Windows-1252) wyglądają na zniekształcone; przekonwertuj je najpierw do UTF-8. Tekst, który masz już w schowku, system operacyjny rozszyfrował przed wklejeniem, więc zwykle po prostu działa.