Textvergleichstool
Was ist Text-Vergleich?
Text Diff vergleicht zwei Textfassungen und markiert, welche Zeilen oder Abschnitte hinzugefügt, entfernt oder unverändert geblieben sind. Damit lassen sich Codeänderungen, Konfigurationsdateien, Übersetzungen, Vertragsentwürfe, Markdown-Dokumente, Prompt-Versionen und Logauszüge schneller prüfen, ohne beide Texte manuell nebeneinander zu lesen. Das Werkzeug ist besonders hilfreich, wenn kleine Änderungen in langen Inhalten versteckt sind oder wenn eine Änderung versehentlich Formatierung, Leerzeichen oder Reihenfolge beeinflusst hat. Ein Diff erklärt allerdings nicht, ob eine Änderung fachlich richtig ist; es zeigt nur präzise, wo sich die Texte unterscheiden, damit die eigentliche Bewertung leichter fällt. Bei veröffentlichten oder mehrsprachigen Inhalten sollte das Ergebnis wegen Sprache, Zeichensatz, Kontext und Sonderfällen kurz gegengelesen werden.
Anleitung
Anleitung
- Originaltext in das linke Eingabefeld einfügen.
- Geänderten Text in das rechte Eingabefeld einfügen.
- Das System berechnet und markiert Unterschiede automatisch; die Statusleiste zeigt die Anzahl hinzugefügter und entfernter Zeilen.
Prüftipps
- Zeilenenden und Leerzeichen vor dem Vergleich normalisieren, wenn die tatsächliche Änderung im Inhalt liegt und nicht in der Formatierung.
- Bei Code oder Rechtstexten markierte Änderungen manuell prüfen; automatische Diff-Vergleiche zeigen Unterschiede, bewerten aber nicht Absicht oder Korrektheit.
Anwendungsfälle
Technisches Prinzip
Der zeilenweise Vergleich basiert auf dem Problem der längsten gemeinsamen Teilsequenz (LCS): Gegeben zwei Zeilenfolgen A und B, finde die längste Folge, die in beiden in derselben relativen Reihenfolge vorkommt. Alles, was nicht zur LCS gehört, ist entweder eine Einführung (in B vorhanden, aber nicht in A) oder eine Löschung (in A vorhanden, aber nicht in B) – genau die Menge der roten und grünen Zeilen in der nebeneinander stehenden Ansicht. Die naive LCS-Dynamic-Programming-Tabelle läuft in O(M * N) Zeit und Speicher, wobei M und N die Zeilenanzahlen der beiden Eingaben sind. In der Praxis verwendet die Diff-Engine den Myers-Diff-Algorithmus (Eugene Myers, 1986), der dasselbe Problem in O((M + N) * D) Zeit löst, wobei D der Editierabstand zwischen den beiden Dateien ist. Für zwei Dateien, die weitgehend identisch sind, ist D klein und Myers dramatisch schneller als die vollständige DP-Tabelle; Gits Standard-Diff-Backend, GitHub's Web-Diff-Ansicht und die meisten IDE-Diff-Panels verwenden Myers oder einen seiner Nachfolger (Patience Diff, Histogramm Diff) aus genau diesem Grund. Patience Diff richtet sich zusätzlich zuerst an einzigartig vorkommenden Zeilen aus, was lesbarere Blöcke ergibt, wenn Code-Blöcke verschoben wurden. Die Ausgabe ist eine Folge von Gleich-/Einfüge-/Lösch-Operationen, die als Unified Diff in CLI-Tools dargestellt werden (mit @@ -m,n +p,q @@ Block-Header und einem einzelnen +/- Präfix pro Zeile) oder als nebeneinander stehende farbige Zeilen in einer Web-Oberfläche. Zeichen- oder wortweise Vergleiche verwenden denselben Algorithmus auf einer feineren Segmentierung, oft gepaart mit der Levenshtein-Distanz (Einfüge- + Lösch- + Ersetzungskosten), wenn Ersetzungen als einzelne Operation gezählt werden sollen. Die diff-match-patch-Bibliothek von Neil Fraser ist die gebräuchliche Referenzimplementierung für browserseitige zeichenweise Vergleiche.
- LCS-Basis: Die längste gemeinsame Teilsequenz der beiden Zeilenarrays definiert die unveränderten Zeilen; alles andere ist eine Einfügung oder Löschung
- Myers Diff (1986): O((M + N) * D) Zeit, wobei D der Editierabstand ist; Standard-Backend in Git, GitHub und den meisten IDE-Diff-Ansichten
- Naiver DP: O(M * N) Zeit und Speicher – geeignet für kleine Eingaben, aber quadratischer Speicherbedarf macht ihn für große Dateien unpraktikabel
- Patience Diff: Richtet sich zuerst an einzigartig vorkommenden Zeilen aus; erzeugt sauberere Blöcke für verschobene oder umsortierte Abschnitte
- Ausgabeformate: Unified Diff mit @@ -m,n +p,q @@ Block-Headern für CLI; nebeneinander stehende farbige Zeilen für Web-Oberflächen
- Granularität: Zeilen-/Wort-/Zeichenvergleiche wenden denselben Algorithmus auf eine unterschiedliche Segmentierung der Eingabe an
- Levenshtein-Distanz: Zählt Einfügungen + Löschungen + Ersetzungen; diff-match-patch ist die Referenz-Bibliothek für den Web-Einsatz
Beispiele
Eine Wortänderung in einem Absatz erkennen
Original:
The server starts on port 3000 by default.
Geändert:
The server starts on port 8080 by default.
Ergebnis: 1 Zeile geändert (3000 -> 8080)Zwei Versionen eines Konfigurationsblocks vergleichen
Original: Geändert:
timeout: 30 timeout: 60
retries: 3 retries: 3
debug: false debug: true
log_level: info
Ergebnis: 2 Zeilen hinzugefügt, 2 Zeilen entferntRelease Notes vor und nach einem Release vergleichen
Entfernt (rot):
- Fixed login redirect on Safari 16
Hinzugefügt (grün):
- Fixed login redirect on Safari 16 and 17
- Added dark mode preference sync
Ergebnis: 2 Zeilen hinzugefügt, 1 Zeile entferntUmsortierte JSON-Schlüssel erkennen
Original: Geändert:
{ "name": "alice", { "id": 1,
"id": 1, "name": "alice",
"role": "admin" } "role": "admin" }
Ergebnis: 2 Zeilen geändert (Schlüsselreihenfolge unterschiedlich, Werte identisch)FAQ
Welche Art von Diff wird angezeigt?
Ein zeilenweises Diff. Die Seite zeigt zwei nebeneinanderliegende Bereiche: links rot hervorgehobene entfernte Zeilen, rechts grün hervorgehobene hinzugefügte Zeilen. Zeilennummern helfen beim Lokalisieren der Änderungen. Die Statusleiste zeigt die Anzahl der hinzugefügten und entfernten Zeilen.
Welcher Diff-Algorithmus wird verwendet?
Die Seite berechnet das Edit-Skript auf Zeilenebene mit einem Longest-Common-Subsequence-Algorithmus (LCS). Bei üblichen Dokumentgrößen läuft das in Echtzeit, während du tippst. Der Algorithmus findet die kürzeste Folge aus Einfügungen und Löschungen, um den linken Text in den rechten zu überführen.
Warum sieht das Diff anders aus als 'git diff'?
Git nutzt eine eigene Diff-Implementierung mit konfigurierbaren Algorithmen. Diese Seite verwendet ein JavaScript-LCS-basiertes Diff, das vollständig im Browser läuft. Ausgabeformat und Hunk-Grenzen können sich von 'git diff' geringfügig unterscheiden, die zugrunde liegende Änderungserkennung ist beim zeilenweisen Vergleich aber korrekt.
Kann ich nur innerhalb eines Absatzes oder Satzes diffen?
Ja – füge jede Version in eine Seite ein. Die Seite bietet zusätzlich eine zeichenweise Hervorhebung innerhalb geänderter Zeilen, weshalb 'rename foo to bar' als Inline-Ersetzung erscheint statt als zwei unabhängige Änderungen.
Werden Whitespaces ignoriert?
Nein. Das Diff berücksichtigt Whitespaces standardmäßig. Whitespace-Unterschiede (nachgestellte Leerzeichen, zusätzliche Leerzeilen, unterschiedliche Zeilenenden) werden als Änderungen angezeigt.
Kann ich JSON oder XML strukturell diffen?
Reines Textdiff arbeitet zeilenbasiert. Um JSON nach Schlüssel zu diffen (Schlüssel 'a' wandert von Position 1 auf 3 mit gleichem Wert = keine Änderung), nutze ein JSON-fähiges Diff-Tool (jsondiffpatch, json-diff). Diese Seite ist für textuelle Vergleiche gedacht.
Wird mein Text hochgeladen?
Nein. Das Diff läuft in deinem Browser. Beide Eingaben werden lokal verarbeitet und nicht übertragen.