Skip to content

Text vergleichen & Diff

Vergleichen Sie zwei Texte sofort im Browser. Nebeneinander-Ansicht mit Wort-Markierung, Unified-Diff-Export, Ignorieren von Groß/Klein, Leerzeichen, Leerzeilen. 100 % im Browser — kein Upload.

Kein Tracking Läuft im Browser Kostenlos
Jeder Vergleich läuft lokal in Ihrem Browser. Ihr Text verlässt dieses Gerät nicht.
Ignorier-Optionen
Geprüft auf Parität mit der `diff -u`-Ausgabe, Korrektheit des Intra-Line-LCS und Barrierefreiheit (ARIA-Rollen, Screenreader-Ankündigungen von Änderungen, RTL/LTR-Handhabung). — Go Tools Text-Tooling-Team · May 21, 2026

Was ist Text Diff?

Text Diff ist ein strukturierter Vergleich zweier Textdokumente, der die kleinste Menge an Einfügungen und Löschungen findet, die das eine in das andere überführt. Die Ausgabe macht die Änderung sichtbar: grün für hinzugefügte Zeilen, rot für entfernte, nebeneinander oder im Unified-Patch-Format (das `---/+++/@@`-Format, das von `git`, GitHub und dem Unix-`patch`-Befehl verwendet wird).

Unter der Haube ist jedes moderne Diff ein Longest-Common-Subsequence-Algorithmus (LCS). Eugene Myers' 1986er O((N+M)D)-Paper ist die kanonische effiziente Implementierung; klassisches dynamisches Programmieren (hier verwendet, mit Trimming gemeinsamer Präfixe/Suffixe) ist einfacher und funktioniert perfekt für typische Web-Eingaben. Nachdem die Zeilen ausgerichtet sind, werden benachbarte Entfernen+Hinzufügen-Paare durch einen zweiten Token-Level-LCS geschickt, sodass der Renderer nur die Wörter hervorheben kann, die sich innerhalb einer Zeile tatsächlich geändert haben — was Prüfer Intra-Line- oder Word-Level-Diff nennen.

Warum nicht einfach Zeichen für Zeichen vergleichen? Weil Änderungen selten flach sind: Eine Zeile in der Mitte einer 200-Zeilen-Datei einzufügen verschiebt jede Zeile darunter. Ein naiver `===` würde alle 199 Zeilen als unterschiedlich melden. LCS sagt Ihnen die Wahrheit: eine Zeile hinzugefügt, 199 unverändert.

Dieses Tool führt den gesamten Vergleich in Ihrem Browser durch. Kein Upload, keine temporäre Datei, kein Log. Sicher für proprietären Code, geänderte Verträge, private Logs — alles, was Sie nicht in einen Drittserver einfügen wollen. Müssen Sie stattdessen JSON diffen? Verwenden Sie das strukturelle JSON Diff, damit Schlüsselreihenfolge und Leerzeichen kein Rauschen mehr sind. Zwei Konfigurationen in YAML oder CSV vergleichen? Konvertieren Sie zuerst mit YAML to JSON oder JSON to CSV, dann diffen Sie mit dem passenden Tool für das Format.

// Two strings that look 'mostly the same' but a naïve check disagrees
const a = 'hello world';
const b = 'hello, world!';

// Character equality
a === b; // false — but only 3 characters actually changed.

// LCS-style diff (this tool, at line + word granularity)
// → 1 line modified, inline highlight: 'hello[, ]world[!]'
// → unified patch:
//   --- original
//   +++ modified
//   @@ -1 +1 @@
//   -hello world
//   +hello, world!

Hauptfunktionen

Side-by-Side + Unified

Wechseln Sie zwischen der visuellen Zwei-Spalten-Ansicht (für menschliche Prüfung) und dem kanonischen Unified-Diff-Patch-Format (für `git apply`, Code-Review-Tools, Bugreports).

Inline-Wort-Hervorhebung

Wenn zwei Zeilen als geändert gepaart werden, tragen nur die geänderten Tokens einen farbigen Hintergrund. Ihr Auge findet die Bearbeitung sofort, statt 80 Zeichen abzuscannen.

Groß-/Klein- / Leerzeichen- / Leerzeilen-Ignorieren

Vier unabhängige Schalter: Groß-/Kleinschreibung, alle Leerzeichen, nur Trailing-Whitespace, Leerzeilen. Repliziert `git diff -i -w -b` mit wenigen Klicks.

Unified-Diff-Export

Kopieren Sie einen sauberen `---/+++/@@`-Patch mit drei Kontextzeilen. Fällt direkt in einen PR-Kommentar, einen Bugreport oder `patch -p1`.

100 % browserbasiert

Eingaben verlassen niemals Ihr Gerät. Kein Upload, keine Textanalyse. Funktioniert offline, sobald die Seite geladen ist. Sicher für proprietären Code und vertrauliche Prosa.

Unicode- + RTL-aware

Teilt Tokens an Unicode-Wortgrenzen. Arabische, hebräische, CJK-Inhalte vergleichen sauber; Zeilenend-Varianten (CRLF, LF, CR) werden alle normalisiert.

Beispiele

Code-Review — eine Variable umbenannt

function getUser(id) {
  const u = db.users.find(x => x.id === id);
  return u;
}
function getUser(userId) {
  const u = db.users.find(x => x.id === userId);
  return u;
}

Die Nebeneinander-Ansicht hebt jede Zeile hervor, die die Umbenennung enthält, während der Inline-Wort-Diff unveränderte Tokens abdunkelt — Prüfer erkennen sofort, welcher Bezeichner sich geändert hat.

Vertragsänderung — eine Klausel hinzugefügt

1. The service is provided as-is.
2. Either party may terminate with 30 days notice.
3. Disputes are resolved in California courts.
1. The service is provided as-is.
2. Either party may terminate with 30 days notice.
2a. Termination notice must be in writing.
3. Disputes are resolved in California courts.

Eine einzige eingefügte Klausel (Zeile 2a) ist der einzige Unterschied. Der umgebende Kontext bleibt sauber — nützlich für Vertragsänderungen oder Richtliniendokumente.

Log-Analyse — Antwortzeit verändert

GET /api/users 200 14ms
POST /api/orders 201 88ms
GET /api/orders/42 200 21ms
GET /api/users 200 14ms
POST /api/orders 201 4200ms
GET /api/orders/42 500 21ms

Zwei Zeilen ändern sich. Die Inline-Markierung zeigt 88ms → 4200ms Latenzdrift und 200 → 500 Statuscode. Standardvorgehen für eine Incident-Timeline.

Trailing Whitespace — 'Trailing ignorieren' aktivieren

  margin: 0;  
  padding: 0;
  border: none;
  margin: 0;
  padding: 0;
  border: none;

Ohne diese Option meldet Zeile 1 einen Unterschied (Leerzeichen am Zeilenende). Aktivieren Sie 'Trailing Leerzeichen / Tabs ignorieren', und der Diff geht auf null — derselbe Trick wie `git diff -b`.

So funktioniert es

  1. 1

    Beide Versionen einfügen

    Originaltext links, geänderter Text rechts. Live-Diff rendert beim Tippen; große Eingaben (>200 KB kombiniert) wechseln zu einem manuellen Diff-Button.

  2. 2

    Benötigte Ignorier-Optionen aktivieren

    Groß-/Kleinschreibung ignorieren, alle Leerzeichen ignorieren, Trailing-Spaces ignorieren oder Leerzeilen ignorieren — jede unabhängig, zwischen Besuchen erhalten.

  3. 3

    Diff lesen oder Patch holen

    Side-by-Side für menschliche Prüfung, Unified für das `---/+++/@@`-Patch-Format. 'Unified diff kopieren' sendet einen sauberen Patch in Ihre Zwischenablage für Code-Review oder `patch -p1`.

Häufige Diff-Fallen

Ganze Datei 'geändert' nach Windows-vs-Unix-Kopie

Wenn Sie aus Notepad unter Windows in ein unter Unix bearbeitetes Original einfügen, zeigt jede Zeile \r-Unterschiede. Aktivieren Sie 'Trailing Leerzeichen / Tabs ignorieren', um die CR-Zeichen zu unterdrücken.

✗ Falsch
Diff: 200 modifications (all because of trailing \r)
✓ Richtig
Ignore trailing spaces / tabs → 2 real changes

Diff schreit wegen Einrückung

Reformatierung Tabs ↔ Leerzeichen sprengt zeilenweise Diffs. 'Alle Leerzeichen ignorieren' kollabiert den Diff auf die tatsächlichen semantischen Änderungen.

✗ Falsch
Diff: 87 modifications (all are indent changes)
✓ Richtig
Ignore all whitespace → 4 actual changes

Identische Absätze wegen einer Leerzeile markiert

Eine einzelne leere Zeile in Prosa hinzuzufügen oder zu entfernen kann eine ganze Region falsch ausrichten. 'Leerzeilen ignorieren' behebt das, ohne den Inhalt anzufassen.

✗ Falsch
Diff: paragraph 2 'completely changed' (one blank line moved)
✓ Richtig
Ignore blank lines → no changes in paragraph 2

Diff meldet 'identisch', aber die Dateien sind unterschiedlich

Fast immer eine Case- oder Whitespace-Ignorier-Option aus einer früheren Sitzung. Öffnen Sie das Ignorier-Optionen-Panel — jeder Schalter ist dort sichtbar. Schalten Sie alle aus, wenn Sie einen byte-strikten Vergleich wollen.

✗ Falsch
0 differences shown, but `cmp` says the files differ
✓ Richtig
Disable all Ignore options → real diff appears

Eingefügtes JSON sieht aus wie 'alles geändert'

Text-Diff behandelt Schlüsselreihenfolge als signifikant; JSON tut das nicht. Für JSON-Payloads verwenden Sie das dedizierte JSON Diff-Tool — es ignoriert die Schlüsselreihenfolge und respektiert Typstriktheit.

✗ Falsch
Text diff on JSON: 100% of lines changed (just a key reorder)
✓ Richtig
<a href="/de/tools/json-diff">JSON Diff</a>: 0 differences

Diff-Truncated-Warnung ignoriert

Über 5.000 Zeilen pro Seite wird die Eingabe abgeschnitten. Wenn die Warnung erscheint, wechseln Sie zu Kommandozeilen-`diff -u file1 file2` oder `git diff --no-index` — beide streamen und bewältigen Gigabytes.

✗ Falsch
Pasted a 20,000-line log — only first 5,000 lines diffed
✓ Richtig
`diff -u a.log b.log` in terminal handles full file

Häufige Anwendungsfälle

Code-Review-Snippet
Fügen Sie zwei Versionen einer Funktion in die Felder ein, um eine Umbenennung, einen entfernten Branch oder eine neue Guard-Klausel auf einen Blick zu sehen. Inline-Wort-Hervorhebung ist schneller als das Scannen des GitHub-Diffs für eine einzeilige Änderung.
Vertrags- / Richtlinien-Redline
Fügen Sie den gestrigen Vertrag gegen die heutige Revision ein. Eingefügte Klauseln springen heraus; unveränderte Absätze fallen auf Grau zurück. Exportieren Sie den Unified-Patch für die juristische Prüfspur.
Log-Timeline-Analyse
Vergleichen Sie einen Vor-Incident-Log-Ausschnitt eines SRE mit dem Während-Incident-Ausschnitt. Latenz, Statuscode und Frequenzdrift erscheinen sofort ohne `awk`.
Prosa- / Entwurfs-Revision
Fügen Sie einen Entwurf und die Version Ihres Editors ein. Inline-Wort-Diff zeigt genau, welche Sätze umgeschrieben wurden — unverzichtbar, um Änderungen einzeln zu akzeptieren oder abzulehnen.
Übersetzungs-Review
Diffen Sie eine alte Übersetzung gegen eine Neuübersetzung, um zu bestätigen, dass die neue Fassung Bedeutung, Struktur und Platzhalter bewahrt. Aktivieren Sie 'Trailing-Spaces ignorieren', um Rauschen zu unterdrücken, das Übersetzer häufig einführen.
Konfig- / .env-Datei-Audit
Vergleichen Sie zwei `.env`-, `docker-compose.yaml`- oder Shell-rc-Dateien. Mit 'Leerzeilen ignorieren' aktiviert konzentriert sich der Diff auf funktionale Unterschiede statt auf Formatierungs-Rauschen.

Technische Details

LCS mit Präfix-/Suffix-Trimming
Gemeinsame führende und nachfolgende Zeilen werden vor dem dynamisch programmierten LCS abgeschnitten. Ein 'zwei 2.000-Zeilen-Configs mit einer geänderten Zeile'-Diff fällt auf eine 1×1-DP-Tabelle zusammen und rendert in unter einer Millisekunde.
Token-Level-Intra-Line-Diff
Benachbarte Entfernen- + Hinzufügen-Hunks werden gepaart und über Unicode-Wort-/Nicht-Wort-/Whitespace-Läufe tokenisiert. Ein zweiter LCS-Durchlauf produziert die grün/roten Token-Spans, die geänderte Zeilen lesbar machen.
Unified Diff = git/patch-kompatibel
Die Ausgabe folgt dem `---/+++/@@ -L,C +L,C @@`-Format, das für GNU patch definiert und von Git, GitHub und jedem Code-Review-Tool verwendet wird. Anwenden mit `pbpaste | patch -p0`.
Eingabe-Cap bei 5.000 Zeilen pro Seite
Über dem Cap wird der Diff abgeschnitten und warnt. Für Mehr-Megabyte-Eingaben verwenden Sie das Kommandozeilen-`diff -u` oder `git diff --no-index` — sie streamen und bewältigen Gigabytes.

Best Practices

Ignorier-Optionen vor dem Lesen wählen
Trailing-Space-, CRLF- und Case-Rauschen übertönt das Signal. Schalten Sie zuerst die richtigen Optionen ein; der Diff ist viel leichter zu lesen, und Sie trainieren sich nicht darauf, an 'falschen' Änderungen vorbeizulesen.
Unified zum Teilen, Side-by-Side zum Prüfen
Visuelle Spalten sind für Ihre Augen. Unified-Patches sind für die Terminals aller anderen. Ein kopierter Unified Diff landet ohne Übersetzung in einer Slack-Nachricht, einem Jira-Kommentar oder `patch -p1`.
Plausibilitätsprüfung mit Übereinstimmungs-Prozent
Wenn zwei Dateien 'fast gleich' sind, aber die Ähnlichkeitsbewertung 30 % beträgt, haben Sie ein Zeilenenden- oder Leerzeichen-Problem. Schalten Sie 'Alle Leerzeichen ignorieren' ein und prüfen Sie erneut, bevor Sie den Diff lesen.

Häufig gestellte Fragen

Wird der eingefügte Text an Ihren Server gesendet?
Nein. Jeder Vergleich läuft in JavaScript in Ihrem Browser. Ihr Text wird nicht hochgeladen, protokolliert, auf der Festplatte gespeichert oder an Dritte gesendet. Nur Ihre UI-Einstellungen (Ansichtsmodus und Ignorier-Optionen) werden in localStorage gespeichert, damit die Seite sie beim nächsten Besuch erinnert — nie der Text. Sie können das überprüfen: DevTools → Netzwerk öffnen, beim Klick auf Diff fliegen null Requests.
Was ist der Unterschied zwischen Text-Diff und JSON-Diff?
Text-Diff vergleicht zeilenweise — perfekt für Prosa, Code, Logs, Verträge, Konfigurationsdateien. JSON Diff versteht das Datenmodell von JSON: Schlüsselreihenfolge ist irrelevant, Typen sind strikt, Arrays können nach Schlüssel abgeglichen werden. Wenn Sie JSON in ein Text-Diff einfügen, werden Schlüsselumstellungen und Leerzeichen als Änderungen markiert; JSON Diff ignoriert sie. Verwenden Sie Text-Diff für unstrukturierte Inhalte, JSON Diff für API-Antworten und Konfigurations-Payloads.
Wie ignoriere ich Leerzeichen, Groß-/Kleinschreibung oder Leerzeilen?
Klicken Sie auf das Panel 'Ignorier-Optionen' über dem Diff. 'Groß-/Kleinschreibung ignorieren' macht A und a gleich. 'Alle Leerzeichen ignorieren' fasst jedes Leerzeichen, Tab und Newline vor dem Vergleich zusammen. 'Trailing Leerzeichen / Tabs ignorieren' entfernt nur Leerzeichen am Zeilenende — das Standardverhalten von `git diff -b`. 'Leerzeilen ignorieren' verwirft leere Zeilen vor dem Diff. Jede Option ist unabhängig und bleibt zwischen Besuchen erhalten.
Was ist ein Unified Diff (und wann kopiere ich ihn)?
Ein Unified Diff ist das `---/+++/@@`-Textformat, das `patch`, `git apply`, GitHub-PRs und die meisten Code-Review-Tools nutzen. Klicken Sie 'Unified diff kopieren', um einen Patch mit drei Kontextzeilen um jede Änderung zu erhalten — fügen Sie ihn in einen Bugreport, Code-Review-Kommentar oder einen `patch -p1`-Befehl ein, er lässt sich sauber anwenden. Side-by-Side ist für Menschen, Unified Diff für Maschinen (und Code-Reviewer, die wie Maschinen denken).
Warum werden ganze Zeilen als geändert markiert, wenn ich nur ein Wort bearbeitet habe?
Werden sie nicht — schauen Sie genauer hin. Die volle Zeile ist hervorgehoben, weil sich darin etwas geändert hat, aber innerhalb der Hervorhebung tragen nur die geänderten Tokens den hellen Hintergrund (grün für hinzugefügt, rot durchgestrichen für entfernt). Das ist Intra-Line-Word-Diff: Der Zeilenkontext bleibt lesbar, während Ihr Blick auf der exakten Bearbeitung landet. Wenn zwei aufeinanderfolgende Zeilen geändert wurden, zeigen beide Inline-Hervorhebungen.
Wie werden CRLF- und LF-Zeilenenden behandelt?
Beide werden erkannt. Der Diff teilt bei \r\n, \n und einzelnem \r, sodass Windows CRLF, Unix LF und alter Mac-CR-Text korrekt ausgerichtet werden. Wenn Sie speziell Zeilenendenänderungen markieren wollen, lassen Sie 'Trailing Leerzeichen / Tabs ignorieren' aus — \r erscheint dann als Trailing-Zeichen. Um Zeilenend-Rauschen vollständig zu eliminieren, aktivieren Sie 'Alle Leerzeichen ignorieren'.
Wie groß dürfen die beiden Eingaben sein?
Der Diff läuft im Hauptthread, also liegen die praktischen Grenzen bei etwa 5.000 Zeilen oder 1 MB pro Seite; darüber wird abgeschnitten und gewarnt. Live-Diff deaktiviert sich ab 200 KB kombiniert und wechselt zu einem manuellen Diff-Button. Für mehrere Megabyte große Dateien verwenden Sie das Kommandozeilen-`diff -u` oder `git diff --no-index` — sie streamen und bewältigen Gigabytes.
Was ist mit Code-Diff? Kennt er meine Sprache?
Der Diff ist sprachunabhängig: Er sieht Zeilen und Tokens, keine Syntax. Das ist ein Vorteil für Review-Snippets, Konfigurationsänderungen und kopierte Patches. Wenn Sie einen semantischen Code-Diff wollen (umbenannte Funktionen über Dateien hinweg, AST-Ebene), nutzen Sie git, die GitHub-PR-Ansicht oder ein dediziertes strukturelles Diff-Tool. Für 90 % der Code-Review-Situationen — eine Funktion mit dem Auge prüfen, zwei Snippets vergleichen — ist Zeilen- + Wort-Diff genau das Richtige.
Warum erscheint eine einzelne Bearbeitung manchmal als entfernte Zeile plus hinzugefügte Zeile?
Wenn sich zu viel an einer Zeile geändert hat, als dass Wort-Hervorhebung nützlich wäre, meldet der Diff sie als separate Entfernen+Hinzufügen-Zeilen, damit die Struktur sauber bleibt. Dieselbe Heuristik liefert lesbare Ausgabe für umformulierte Prosa und für Code-Blöcke, die neu geschrieben statt bearbeitet wurden. Wechseln Sie zur Unified-Ansicht, um das klassische `-`/`+`-Paarformat zu sehen, das in Patches verwendet wird.
Wie wird die Übereinstimmungs-Prozentzahl berechnet?
Es ist die Anzahl unveränderter Zeilen (nach Anwendung der Ignorier-Optionen) geteilt durch die größere der beiden Zeilenanzahlen, auf 100 % begrenzt. Zwei identische Eingaben ergeben 100 %. Eine neue Zeile zu einer 100-Zeilen-Datei hinzufügen ergibt 99 %. Jede Zeile zu ersetzen ergibt 0 %. Nützlich, um schnell zu beurteilen, ob es eine kleine Änderung oder eine komplette Neufassung ist, bevor Sie den Diff lesen.
Kann ich einen Diff mit einem Kollegen teilen?
Ja, auf zwei Wegen. (1) Klicken Sie 'Unified diff kopieren' und fügen Sie den Patch in Chat, Slack oder einen PR-Kommentar ein — jeder mit einem Terminal kann ihn per `patch < clip` anwenden. (2) Machen Sie einen Screenshot des Nebeneinander-Panels für die visuelle Prüfung. Wir bieten bewusst keinen 'Per URL teilen'-Button: Das würde erfordern, Ihren Text hochzuladen, was wir nicht tun.
Behandelt der Diff Rechts-nach-Links-Sprachen wie Arabisch oder Hebräisch?
Ja, für den Textinhalt — Zeilen und Tokens sind Unicode-aware. Die Oberfläche nutzt logische CSS-Richtungen, sodass in RTL-Locales Gutter und Zeilenspalten natürlich kippen. Innerhalb einer Diff-Zelle folgt die Textrichtung dem Inhalt, sodass arabische und hebräische Zeichenketten korrekt gerendert werden, während die +/--Markierungen am Gutter ausgerichtet bleiben.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →