TextDiff ist ein kostenloses Online-diff-Werkzeug, das die Unterschiede zwischen zwei Texten findet. Legen Sie zwei ähnliche, aber leicht verschiedene Texte nebeneinander — Entwurf und Überarbeitung eines Dokuments, versandte und zurückerhaltene Vertragsfassung, alte und neue Version von Code — und TextDiff markiert farbig, welche Zeilen hinzugefügt, gelöscht oder geändert wurden und welches Wort oder Zeichen sich innerhalb einer Zeile genau geändert hat.
Der gesamte Vergleich findet im Browser statt. Eingegebene Texte und geladene Dateien werden nicht an einen Server gesendet, sodass Sie auch interne Dokumente oder Verträge vergleichen können, die nicht nach außen gelangen dürfen. Die Berechnung läuft in einem Web Worker, daher friert die Oberfläche auch bei Eingaben mit Zehntausenden Zeilen nicht ein.
Funktionen
Hervorhebung von Zeilen und innerhalb der Zeile
Nachdem die geänderten Zeilen gefunden sind, werden innerhalb dieser Zeilen nur die geänderten Teile nach Wort, Leerzeichen-Block oder Zeichen zusätzlich hervorgehoben.
Geteilte und vereinheitlichte Ansicht
Wechseln Sie zwischen der Ansicht nebeneinander (side-by-side) und der vereinheitlichten Ansicht (unified), die sich wie bei git von oben nach unten liest.
Ignorieroptionen
Leerzeichen am Zeilenende, die Menge an Leerraum, jeglichen Leerraum, Groß-/Kleinschreibung und Leerzeilen können beim Vergleich ignoriert werden.
Zeilenenden normalisieren
Unterschiede zwischen den Zeilenumbrüchen von Windows (CRLF) und macOS/Linux (LF) sowie ein fehlender Umbruch am Dateiende gelten als gleich.
JSON mit sortierten Schlüsseln vergleichen
Beide JSON-Dokumente werden geparst, die Objektschlüssel sortiert und die Einrückung vereinheitlicht, bevor verglichen wird. Eine bloß andere Schlüsselreihenfolge gilt nicht als Unterschied.
Änderungsstatistik und Navigation
Zeigt die Zahl hinzugefügter, gelöschter und geänderter Zeilen sowie die Ähnlichkeit (%) und springt direkt zur vorherigen oder nächsten Änderung.
Nur Änderungen anzeigen
Lange unveränderte Abschnitte werden eingeklappt, nur 3 Zeilen rund um jede Änderung bleiben sichtbar. Eingeklappte Abschnitte lassen sich per Klick aufklappen.
Dateien per Drag & Drop
Ziehen Sie .txt-, .md-, .json-, .csv- und viele Code-Dateien in ein Feld oder legen Sie zwei Dateien auf einmal ab, um sie sofort zu vergleichen.
Export als Patch und HTML
Kopieren oder speichern Sie das Ergebnis als Unified-Diff-Text (Patch) oder kopieren Sie es als farbige HTML-Tabelle, um es in E-Mails und Dokumente einzufügen.
Bedienung
- Fügen Sie den Ausgangstext in das linke Feld (Original) und den zu vergleichenden Text in das rechte Feld (Geändert) ein. Sie können auch eine Datei in ein Feld ziehen oder die Öffnen-Schaltfläche über dem Feld verwenden.
- Ist „Beim Tippen vergleichen“ aktiv, erscheint das Ergebnis, sobald Sie aufhören zu tippen. Andernfalls klicken Sie auf [Vergleichen] oder drücken Strg+Enter.
- Wählen Sie bei Bedarf Leerraum, Groß-/Kleinschreibung oder Leerzeilen ignorieren, die Einheit für den Vergleich innerhalb der Zeile (Wörter/Leerzeichen-Blöcke/Zeichen) und JSON-Schlüssel sortieren. Nach jeder Änderung einer Option wird sofort neu verglichen.
- Wählen Sie in der Ergebnisleiste die geteilte oder vereinheitlichte Ansicht und springen Sie mit den Pfeilschaltflächen (oder Alt+↑/↓) zwischen den Änderungen.
- Zum Weitergeben kopieren oder speichern Sie den Patch oder kopieren das Ergebnis als HTML.
Die Vergleichsoptionen
| Leerraum: unverändert vergleichen | Leerzeichen und Tabs werden wie alle anderen Zeichen behandelt. Schon eine andere Einrückung macht eine Zeile verschieden. |
|---|---|
| Leerraum: am Zeilenende ignorieren | Nur Leerzeichen und Tabs am Zeilenende werden ignoriert. So werden Unterschiede herausgefiltert, die entstehen, weil ein Editor solchen Leerraum automatisch entfernt oder stehen lässt. (Ähnlich wie -Z in GNU diff) |
| Leerraum: Menge ignorieren | Ein Leerzeichen und mehrere Leerzeichen gelten als gleich. Eine Stelle mit Leerraum unterscheidet sich aber weiterhin von einer ohne: „a b“ und „a b“ sind gleich, „a b“ und „ab“ nicht. (diff -b) |
| Leerraum: allen ignorieren | Sämtlicher Leerraum wird vor dem Vergleich entfernt. Auch „a b“ und „ab“ gelten als gleiche Zeile. (diff -w) |
| Innerhalb der Zeile: Wörter | Markiert Änderungen mit Gruppen aus Buchstaben und Ziffern sowie einzelnen Symbolen als Einheit. Gut geeignet für Code und englischen Text. |
| Innerhalb der Zeile: Leerzeichen-Blöcke | Markiert Änderungen mit den durch Leerzeichen getrennten Abschnitten als Einheit, einschließlich anhängender Satzzeichen. Angenehm zu lesen bei Fließtext, in dem ganze Wörter gegeneinander ausgetauscht werden. |
| Innerhalb der Zeile: Zeichen | Vergleicht Zeichen für Zeichen. Damit finden Sie genau die Stellen, an denen sich nur ein oder zwei Zeichen geändert haben, etwa bei Beträgen, Daten oder Paragrafennummern. |
| Groß-/Kleinschreibung ignorieren | Groß- und Kleinbuchstaben gelten als gleiche Zeichen. |
| Leerzeilen ignorieren | Leere oder nur aus Leerraum bestehende Zeilen werden vom Vergleich ausgenommen. Leerzeilen erscheinen blass und zählen nicht zu den Änderungen. (Ähnlich wie diff -B) |
| Zeilenenden normalisieren | CRLF, CR und LF gelten als derselbe Zeilenumbruch, und ein fehlender Umbruch am Dateiende wird ignoriert. Ist die Option aus, wird ein CR am Zeilenende als ␍ und eine letzte Zeile ohne Umbruch als ∅ angezeigt. |
| JSON-Schlüssel sortieren | Beide Seiten werden als JSON geparst, die Objektschlüssel alphabetisch sortiert und mit 2 Leerzeichen Einrückung neu geschrieben, bevor verglichen wird. Die Reihenfolge in Arrays bleibt unverändert. Schlägt das Parsen fehl, wird die Fehlerstelle angezeigt. |
Unterschiede bei Zeilenenden (etwa CRLF) werden nur bei Text, der aus einer Datei geladen wurde, exakt verglichen. Bei in die Eingabefelder eingefügtem Text wandelt der Browser Zeilenumbrüche in LF um, sodass CR-Unterschiede nicht sichtbar werden.
Tastenkürzel
Strg+Enter / ⌘+Enter | Jetzt vergleichen |
Alt+↓ / Alt+↑ | Zur nächsten / vorherigen Änderung |
n / p (außerhalb der Eingabefelder) | Zur nächsten / vorherigen Änderung |
Tab (in einem Eingabefeld) | Tabulatorzeichen eingeben |
Ihre Eingaben werden nirgendwohin gesendet
Die Vergleichs-Engine ist JavaScript (diff-core.js), das zusammen mit dieser Seite geladen wird; Texte und Dateien werden ausschließlich im Speicher des Browsers verarbeitet. Eingaben werden nicht gespeichert — der Browser merkt sich nur Design und gewählte Optionen. Wenn Sie die Seite schließen, sind die Eingaben weg.
Häufige Fragen
Werden die verglichenen Texte auf einem Server gespeichert?
Nein. Der Vergleich erfolgt ausschließlich mit JavaScript im Browser, und Eingaben werden an keinen Server gesendet. Auch ohne Netzwerkverbindung funktioniert der Vergleich in einer bereits geöffneten Seite.
Wie große Texte lassen sich vergleichen?
Eine einzelne Datei darf bis zu 30 MB groß sein, und selbst Vergleiche mit Zehntausenden Zeilen laufen in einem separaten Thread (Web Worker), ohne die Oberfläche einzufrieren. Bei sehr vielen Unterschieden kann aus Geschwindigkeitsgründen ein näherungsweises statt eines minimalen Ergebnisses entstehen. Hat das Ergebnis mehr als 4.000 Zeilen, werden zuerst nur die Änderungen angezeigt.
Welcher Algorithmus wird verwendet?
Für den zeilenweisen Vergleich wird der O(ND)-Differenzalgorithmus von Myers (1986) in der Variante mit linearem Speicher verwendet. Wird der Aufwand zu groß, wird wie bei GNU diff auf eine näherungsweise Aufteilung umgeschaltet. Innerhalb geänderter Zeilen vergleicht derselbe Algorithmus erneut Wörter, Leerzeichen-Blöcke oder Zeichen.
Wie wird zwischen „geändert“ und „hinzugefügt/gelöscht“ unterschieden?
Sind sich innerhalb eines geänderten Abschnitts eine gelöschte und eine hinzugefügte Zeile inhaltlich ähnlich genug, werden sie als eine bearbeitete Zeile gepaart und als „geändert“ gezählt. Zeilen ohne passenden Partner zählen als „hinzugefügt“ oder „gelöscht“.
Wie wird die Ähnlichkeit (%) berechnet?
Es ist der Anteil unveränderter Zeichen an der Gesamtzahl der Zeichen beider Seiten (einschließlich Zeilenumbrüchen). Gleiche Zeilen zählen vollständig, bei geänderten Zeilen zählen nur die innerhalb der Zeile unverändert gebliebenen Teile als gleiche Zeichen.
Worin unterscheiden sich „Menge ignorieren“ und „Allen Leerraum ignorieren“?
„Menge ignorieren“ ignoriert nur, wie viele Leerzeichen stehen, und hält „a b“ und „ab“ daher für verschieden. „Allen Leerraum ignorieren“ entfernt sämtlichen Leerraum vor dem Vergleich und hält beide für gleich. Bei Code, in dem Einrückung Bedeutung hat, wie Python, sollten Sie „Allen Leerraum ignorieren“ mit Vorsicht verwenden.
Kann ich einen Patch anwenden, der mit aktivierten Ignorieroptionen erstellt wurde?
Der Patch beruht auf den angezeigten Unterschieden, die Kontextzeilen stammen aus dem Original. Mit aktivierten Ignorieroptionen fehlen die ignorierten Unterschiede im Patch. Wenn die Datei danach exakt übereinstimmen soll, schalten Sie alle Optionen aus, bevor Sie den Patch erstellen.
Kann ich auch Word-, HWP- oder PDF-Dokumente vergleichen?
Die Dateien selbst können nicht gelesen werden. Kopieren Sie den Text aus dem Dokument und fügen Sie ihn ein, dann lässt er sich vergleichen. Tabellen, Fußnoten und Formatierung können dabei verloren gehen. Tipps dazu finden Sie im Ratgeber zum Vergleichen von Dokumenten.
Funktioniert es auch auf dem Smartphone?
Ja. Auf schmalen Bildschirmen werden die Eingabefelder untereinander angeordnet, und das Ergebnis startet in der vereinheitlichten Ansicht. Sie können auch zur geteilten Ansicht wechseln.
Ratgeber
- Wie findet diff Unterschiede? — LCS und der Myers-Algorithmus
- Myers, Patience, Histogram — diff-Algorithmen im Vergleich
- Unified Diff (Patch) lesen — eine Anleitung für Code-Reviews
- Leerraum ignorieren — diff -b, -w, -B, -Z und die Entsprechungen in git
- Dokumente und Verträge vergleichen — so finden Sie jeden Unterschied zwischen zwei Fassungen
- JSON vergleichen — Schlüssel sortieren und normalisieren
- Zeilenenden (CRLF, LF) und unsichtbare Unterschiede — wenn angeblich jede Zeile geändert ist