Text vergleichen – Diff-Viewer
Zwei Fassungen einfügen und sofort sehen, was sich geändert hat: hinzugefügte Stellen grün, entfernte rot, und innerhalb geänderter Zeilen zusätzlich genau die Wörter markiert, die anders sind. Wahlweise zeilen-, wort- oder zeichenweise. Alles lokal in deinem Browser.
Ergebnis
Füge links und rechts einen Text ein, um sie zu vergleichen.
Beide Texte bleiben in deinem Browser – es gibt keinen Server, der sie entgegennehmen könnte.
Zeilen, Wörter oder Zeichen – welche Auflösung wann?
Die Wahl der Vergleichseinheit entscheidet darüber, wie das Ergebnis aussieht, und sie ist der häufigste Grund für ein unbrauchbares Diff:
| Auflösung | Geeignet für | Schwäche |
|---|---|---|
| Zeilen | Quellcode, Konfigurationsdateien, Logs, CSV – alles mit fester Zeilenstruktur | Eine geänderte Zeile gilt komplett als geändert (dieses Werkzeug hebt darin zusätzlich die Wörter hervor) |
| Wörter | Fließtext, Dokumentation, Übersetzungen, umbruchfreie Absätze | Bei umsortierten Absätzen entsteht schnell ein unübersichtliches Flickenmuster |
| Zeichen | Kurze Zeichenketten, Hashes, IDs, Zahlenkolonnen, Tippfehlersuche | Für längere Texte zu fein – fast jede Stelle wird markiert |
Für Quellcode ist der Zeilenmodus fast immer richtig, weil sich Programmiersprachen an Zeilen orientieren und auch git diff so arbeitet. Für Prosa dagegen führt der Zeilenmodus dazu, dass ein einziges geändertes Wort einen ganzen Absatz als geändert markiert – dort ist der Wortmodus die bessere Wahl.
Wie der Vergleich funktioniert
Zugrunde liegt der Myers-Algorithmus aus der Arbeit „An O(ND) Difference Algorithm and Its Variations“ (Eugene W. Myers, 1986) – derselbe Ansatz, den auchgit diff und GNU diff verwenden. Er sucht nicht irgendeine, sondern die kürzestmögliche Folge von Einfügungen und Löschungen, die den einen Text in den anderen überführt. Das ist wichtig, weil es genau der Darstellung entspricht, die ein Mensch als „die Änderung“ erwartet.
Der Aufwand wächst dabei mit der Anzahl der Unterschiede (dem D im Namen), nicht mit der Textlänge. Zwei fast identische Dateien mit zehntausend Zeilen sind deshalb sofort verglichen, während zwei völlig verschiedene Texte deutlich mehr Arbeit machen. Vorab werden zusätzlich der gemeinsame Anfang und das gemeinsame Ende abgeschnitten – bei einer Änderung mitten in einer langen Datei bleibt so nur der veränderte Bereich zu untersuchen.
Groß-/Kleinschreibung und Leerraum ignorieren
Beide Schalter verändern nur den Vergleich, nicht die Anzeige: Angezeigt wird immer der Originaltext, lediglich der Gleichheitstest sieht eine normalisierte Fassung. „Leerraum ignorieren“ fasst dabei Folgen von Leerzeichen und Tabulatoren zu einem einzigen zusammen und entfernt sie am Zeilenanfang und -ende. Das ist der richtige Schalter, wenn eine Datei zwischen Tabulatoren und Leerzeichen umgestellt oder neu eingerückt wurde und sonst jede Zeile als geändert gälte.
Nebeneinander oder zusammengeführt?
Die Ansicht Nebeneinander (side-by-side) stellt beide Fassungen in zwei Spalten gegenüber – gut, um zwei Versionen tatsächlich zu lesen. Die AnsichtZusammengeführt (unified) entspricht dem Format, das git diff und Patch-Dateien verwenden: entfernte Zeilen mit −, hinzugefügte mit +, beides untereinander. Sie ist bei schmalen Bildschirmen und bei sehr langen Zeilen die übersichtlichere Wahl.
Häufige Fragen
Werden meine Texte hochgeladen?
Nein. Der gesamte Vergleich ist JavaScript in deinem Browser – es gibt keinen Server, der etwas entgegennehmen könnte. Genau das ist der Unterschied zu vielen anderen Diff-Diensten, bei denen der Text zum Vergleichen an einen Server geschickt wird. Gemerkt werden ausschließlich deine Einstellungen (Auflösung, Ansicht, Schalter), niemals die verglichenen Texte.
Kann ich damit auch Quellcode vergleichen?
Ja – der Zeilenmodus ist genau dafür gedacht. Eine Syntax-Hervorhebung gibt es bewusst nicht, damit die farbigen Markierungen der Änderungen eindeutig bleiben und nicht mit Sprachfärbung konkurrieren.
Was bedeutet „… 12 unveränderte Zeilen“?
Bei eingeschaltetem Einklappen werden längere unveränderte Abschnitte zusammengefasst und nur drei Zeilen Kontext um jede Änderung herum gezeigt – dasselbe Prinzip wie beigit diff. Den Schalter „Unveränderte Zeilen einklappen“ abzuwählen zeigt wieder den vollständigen Text.
Warum meldet das Werkzeug bei sehr großen Texten ab?
Zwei lange und zugleich völlig verschiedene Texte lassen den Suchaufwand quadratisch wachsen – ohne Grenze würde der Browser-Tab einfrieren. Statt das zuzulassen, gibt es eine Obergrenze und eine klare Meldung mit dem Hinweis, auf eine gröbere Auflösung zu wechseln.
Verwandt: Der Formatter rückt JSON, YAML, TOML und XML einheitlich ein – zwei unterschiedlich formatierte Dateien lassen sich danach deutlich sinnvoller vergleichen.