Diff Checker

Diff Checker

Porównuj dwa teksty lub fragmenty kodu z podświetlaniem na poziomie linii i słów. Obok siebie lub zunifikowany, ignorowanie białych znaków i wielkości liter — w całości w Twojej przeglądarce.

Nie. Całe narzędzie to JavaScript działający wewnątrz tej strony. Algorytm diff (longest-common-subsequence) działa na Twoim CPU, a wynik jest renderowany bezpośrednio w DOM. Otwórz DevTools → Network i obserwuj — podczas porównywania nie wykonują się żadne żądania. Bezpiecznie możesz wklejać kod wewnętrzny, dane klientów, projekty umów lub cokolwiek innego, czego nie chciałbyś logować na serwerze.

Najpierw dzielimy oba wejścia na linie i uruchamiamy algorytm LCS (longest common subsequence). Linie pasujące po obu stronach są oznaczane jako równe. Linie, które nie pasują, są łączone w wiersze 'change', gdy dodanie pojawia się obok usunięcia. Dla każdej takiej pary uruchamiamy drugi LCS na słowach linii (dzielonych po białych znakach), aby świeciły na czerwono/zielono tylko faktycznie edytowane słowa — nie cała linia.

Dlaczego iKit Diff Checker

Czyste, szybkie środowisko do porównywania tekstu — bez reklam, wyskakujących okienek i zewnętrznych trackerów. Stworzone dla programistów, autorów i każdego, kto musi szybko zauważyć, co się zmieniło.

Widok obok siebie i zunifikowany

Przełączaj jednym kliknięciem między widokiem dzielonym (dwie kolumny, jak w klasycznym IDE) a zunifikowanym (jedna kolumna ze znacznikami +/−). Oba widoki pokazują numery linii i podświetlają każdą zmianę bezpośrednio w treści.

Podświetlanie na poziomie słów

Gdy dwie linie się zmieniają, uruchamiamy drugi diff na poziomie słów, więc świecą tylko faktyczne różnice — nie cała linia. Łatwiej zauważyć pojedynczą literówkę w 200-znakowej linii.

Ignorowanie białych znaków i wielkości liter

Przełączaj wrażliwość na białe znaki i wielkość liter, aby odfiltrować zmiany kosmetyczne (przeformatowane wcięcia, drobne zmiany kapitalizacji) i skupić się na rzeczywistych edycjach.

Prywatność wbudowana w projekt

Oba teksty pozostają w karcie Twojej przeglądarki. Algorytm diff działa lokalnie w JavaScript. Możesz to zweryfikować w DevTools → Network: podczas pisania nie wykonują się żadne żądania.

Statystyki i kopiowanie

Zobacz na pierwszy rzut oka, ile linii dodano, usunięto i zmodyfikowano. Jedno kliknięcie kopiuje diff do schowka, gotowy do wklejenia w code review lub wiadomości commit.

Działa offline

Po załadowaniu strony każdy bajt jest obliczany lokalnie. Działa w samolocie, za firmowym firewallem lub całkowicie bez sieci — przydatne przy poufnych przeglądach kodu.

Jak naprawdę działa diff checker

Matematyka pod maską jest starsza niż sieć — algorytm LCS z 1965 roku oraz jego udoskonalenie z 1986 roku autorstwa Eugene'a Myersa.

  1. 1

    Podział na linie

    Oba wejścia są dzielone po \n (lub \r\n). Każda linia staje się tokenem. Porównujemy tokeny — nie znaki — ponieważ większość edycji w rzeczywistym kodzie lub dokumentach dodaje, usuwa lub modyfikuje całe linie.

  2. 2

    Obliczenie LCS

    Longest Common Subsequence to największy zbiór linii, które występują w tej samej kolejności w obu wejściach. Wypełniamy tablicę DP idąc od prawego dolnego rogu; każda komórka przechowuje długość LCS od tej pozycji do końca. Zajmuje to O(m × n) czasu i pamięci.

  3. 3

    Powrót w celu wyprowadzenia operacji

    Zaczynając od lewego górnego rogu tablicy, idziemy do przodu: jeśli dwie bieżące linie pasują, generujemy equal; w przeciwnym razie wybieramy ten kierunek (w prawo lub w dół), który zachowuje długość LCS, generując delete lub insert. Wynikiem jest sekwencja operacji, która zamienia Oryginał w Zmodyfikowany.

  4. 4

    Diff na poziomie słów wewnątrz zmienionych par

    Gdy po usunięciu następuje dodanie, łączymy je jako wiersz change. Aby podświetlić tylko te części, które się różnią wewnątrz linii, uruchamiamy ten sam algorytm LCS po raz drugi na słowach każdej strony, dzieląc po granicach białych znaków.

Typowe zadania diff

Realne sytuacje, w których sięgniesz po diff checker.

Przegląd PR przed komentarzem

Widok diff w GitHub jest świetny, ale czasem chcesz zobaczyć tylko merytoryczne zmiany bez szumu od formattera. Wklej obie wersje, włącz Ignoruj białe znaki, a kosmetyczne przeformatowania znikną — zostaną tylko edycje logiki.

Porównywanie dwóch projektów umowy

Prawnicy i zespoły operacyjne często muszą wiedzieć, co zmieniło się między wersjami v1 i v2 umowy. Wklej obie, otrzymaj kolorowy diff z podświetlaniem na poziomie słów — bez Worda, bez Śledzenia zmian, bez wysyłania poufnych zapisów na zewnętrzny serwer.

Sprawdzanie, co naprawdę zrobił skrypt

Uruchomiłeś sed/awk/Python regex na pliku konfiguracyjnym? Wklej tutaj oryginał i wynik, aby potwierdzić, że skrypt zedytował tylko to, czego się spodziewałeś. Podświetlanie na poziomie znaków wyłapuje przypadkowe edycje, które umykają szybkiemu spojrzeniu.

Wykrywanie literówki w przetłumaczonym tekście

Para tłumaczeniowa (źródło vs tłumaczenie lub dwa tłumaczenia tego samego źródła) — diff na poziomie słów sprawia, że trywialnie znajdziesz brakujące słowo, zduplikowaną frazę lub przekręconą interpunkcję, którą przeoczyli korektorzy.

Dlaczego lokalne porównywanie ma znaczenie

Teksty, które porównujesz, są zazwyczaj prywatne: kod z wewnętrznych repozytoriów, projekty umów, eksporty danych klientów lub niewydane treści produktowe. Wklejanie ich na cudzy serwer tworzy ślad, którego nie kontrolujesz. Diff checker iKit to JavaScript już załadowany w karcie Twojej przeglądarki — porównanie działa na Twoim CPU i nigdy nie dotyka gniazda sieciowego.

  • Zero żądań sieciowych podczas porównywania — możliwe do zweryfikowania w DevTools → Network.
  • Wejścia pozostają w pamięci przeglądarki; czyszczone po naciśnięciu Wyczyść lub odświeżeniu strony.
  • Bezpieczne dla kodu wewnętrznego, dokumentów objętych NDA, transkryptów obsługi klienta i wszystkiego, co podlega zasadom rezydencji danych.

Related guides

Deep-dive tutorials and tool comparisons from the iKit blog.

Najczęściej zadawane pytania

Czy to bezpieczne? Czy moje teksty są wysyłane na serwer?

Nie. Całe narzędzie to JavaScript działający wewnątrz tej strony. Algorytm diff (longest-common-subsequence) działa na Twoim CPU, a wynik jest renderowany bezpośrednio w DOM. Otwórz DevTools → Network i obserwuj — podczas porównywania nie wykonują się żadne żądania. Bezpiecznie możesz wklejać kod wewnętrzny, dane klientów, projekty umów lub cokolwiek innego, czego nie chciałbyś logować na serwerze.

Jak działa podświetlanie na poziomie linii i słów?

Najpierw dzielimy oba wejścia na linie i uruchamiamy algorytm LCS (longest common subsequence). Linie pasujące po obu stronach są oznaczane jako równe. Linie, które nie pasują, są łączone w wiersze 'change', gdy dodanie pojawia się obok usunięcia. Dla każdej takiej pary uruchamiamy drugi LCS na słowach linii (dzielonych po białych znakach), aby świeciły na czerwono/zielono tylko faktycznie edytowane słowa — nie cała linia.

Jaka jest różnica między widokiem dzielonym a zunifikowanym?

Widok dzielony pokazuje oba teksty obok siebie ze sparowanymi numerami linii — bliżej tego, jak diff wygląda w IDE (VS Code, JetBrains). Widok zunifikowany pokazuje jedną kolumnę z liniami poprzedzonymi +/− — bliżej tego, co drukuje `git diff`. Wybierz to, co pasuje do Twojego workflow; oba renderują te same dane.

Dlaczego 'ignoruj białe znaki' jest pomocne?

Przeformatowanie kodu (uruchomienie Prettier, zmiana tabulator/spacja, normalizacja zakończeń linii) dodaje wizualnego szumu, który zakopuje rzeczywiste zmiany. Włączenie 'Ignoruj białe znaki' zwija ciągi spacji/tabulatorów do pojedynczej spacji i przycina krawędzie linii przed porównaniem — dzięki czemu widzisz tylko istotne edycje, nie kosmetyczne.

Jakiej wielkości tekst mogę porównać w przeglądarce?

Algorytm LCS używa pamięci O(m × n), gdzie m i n to liczby linii po każdej stronie. iKit ogranicza porównanie do około 4 milionów komórek (≈16 MB), co komfortowo obsługuje kilka tysięcy linii kontra kilka tysięcy linii. W przypadku większych diffów (całe zrzuty bazy danych, pełne logi plików) użyj narzędzia CLI takiego jak `diff` lub `git diff --no-index` — używają one inteligentniejszego algorytmu (Myers diff), który skaluje się do milionów linii.