Workflows & Testing
Myers-DiffJSONMarkdownSyntax-HighlightingOffline-PWA

Diff-Checker & Smart-Formatter – Text, Code, JSON und Markdown lokal vergleichen

Offline-fähiger Diff-Checker im Browser: Texte, Code, JSON und Markdown mit automatischer Formatierung, Syntax-Highlighting und Live-Vorschau vergleichen.

LKLukas Kopischke
Zuletzt aktualisiert am
Smart Diff-Checker & Offline-Formatter100 % Offline · 0 Bytes Upload
Vorlage laden:
+6−5
15 Z. · 392 Zeichen
16 Z. · 474 Zeichen
Markdown erkannt: Du kannst dir Tabellen, Überschriften und Checklisten auch direkt nebeneinander gerendert ansehen.
Original (15 Zeilen)
Neue Fassung (16 Zeilen)
1## Release-Planung v2.41## Release-Planung v2.5
2 2 
3Die Auslieferung erfolgt **schrittweise** über das EU-Rechenzentrum in Frankfurt.3Die Auslieferung erfolgt **vollautomatisch** über die EU-Rechenzentren in Frankfurt und Wien.
4 4 
5| Dienst | Timeout | Offline-Cache |5| Dienst | Timeout | Offline-Cache |
6| :--- | :--- | :--- |6| :--- | :--- | :--- |
7| Suche-API | 1500 ms | Nein |7| Suche-API | 850 ms | Aktiv (IndexedDB) |
8| Sync-Worker | 4000 ms | Aktiv |8| Sync-Worker | 4000 ms | Aktiv |
9| Telemetrie | 1200 ms | Nein |
9 10 
10- [x] Sicherheits-Audit abgeschlossen11- [x] Sicherheits-Audit abgeschlossen
11- [ ] Lasttest mit 500 Anfragen/Sekunde12- [x] Lasttest mit 1.200 Anfragen/Sekunde
12 13 
13```typescript14```typescript
14export const config = { retries: 2, region: "eu-central-1" };15export const config = { retries: 3, region: "eu-central-1", fallback: "eu-south-2" };
15```16```
Myers O(ND) Zeilen- & Wort-Vergleich · Drag & Drop für lokale Dateien · 0 Bytes Netzwerk-Transfer
Alle Berechnungen laufen lokal im Browser – ohne Werbung oder Account-Zwang.

Du bekommst einen überarbeiteten Vertragsentwurf, eine von KI umformulierte Markdown-Dokumentation oder zwei einzeilige JSON-Antworten aus einer Schnittstelle und willst in Sekunden wissen, welches Detail sich tatsächlich verändert hat. Klassische Online-Vergleichsseiten schicken solche sensiblen Inhalte jedoch häufig an fremde Server oder markieren bei umsortiertem JSON den gesamten Block pauschal als geändert.

Ein lokaler Browser-Diff zerlegt beide Eingaben im Arbeitsspeicher über den Myers-Algorithmus in Zeilen- und Wort-Token und berechnet die kleinste Folge aus Einfügungen und Löschungen. Bringt ein vorgeschalteter Formatter unstrukturierte Eingaben zuerst in eine einheitliche Form – etwa durch alphabetisch sortierte JSON-Schlüssel –, bleiben nur noch echte Inhaltsänderungen übrig. Bei dateiübergreifenden Code-Umbauten oder mehrstelligen Megabyte-Logs stößt ein Browser-Vergleich dagegen an seine Grenzen.

Merksatz

Gute Text- und Codevergleiche trennen Form von Inhalt: Erst die Normalisierung von Zeilenumbrüchen, Einrückungen und Schlüsselreihenfolgen macht aus rohem Zeichenrauschen eine verlässliche Änderungsprüfung.

Warum reine Zeilenvergleiche täuschen und wie der Myers-Algorithmus arbeitet

Hinter fast jedem modernen Diff-Werkzeug – einschließlich git diff – steckt der 1986 von Eugene W. Myers veröffentlichte Algorithmus für das . Seine Laufzeit liegt bei O((N + M) · D), wobei N und M die Anzahl der Zeilen oder Wörter beider Texte beschreiben und D für die Anzahl der tatsächlichen Unterschiede steht. Sind sich zwei Dokumente ähnlich (D ist klein), läuft der Vergleich im Browser selbst bei tausenden Zeilen in wenigen Millisekunden durch.

In der Praxis scheitert ein Vergleich selten am Algorithmus, sondern an Schein-Unterschieden in der Eingabe:

  1. Einzeiliges oder umsortiertes JSON: Laut RFC 8259 sind JSON-Objekte ungeordnete Schlüssel-Wert-Sammlungen ({"a":1,"b":2} bedeutet fachlich exakt dasselbe wie {"b":2,"a":1}). Ein reiner Textvergleich meldet hier fälschlich 100 Prozent Abweichung, solange die Schlüssel vorab nicht in eine gebracht werden.
  2. Lange Fließtext-Absätze: In Verträgen, E-Mails oder Dokumentationen ist ein ganzer Absatz oft eine einzige lange Zeile ohne manuellen Zeilenumbruch. Markiert ein Werkzeug nur die komplette Zeile rot und grün, übersieht das Auge leicht ein einzelnes eingefügtes Wort wie „nicht“ oder eine geänderte Kündigungsfrist. Erst ein zweistufiger Durchlauf – zuerst Zeilen-Diff, innerhalb geänderter Zeilenpaare anschließend Wort-Diff – hebt die exakte Stelle hervor.
  3. Gemischte Zeilenenden (CRLF vs. LF): Kopierst du einen Text aus einem Windows-Editor und den zweiten aus einer Linux-Konsole oder einem Chatfenster, weicht jedes Zeilenende unsichtbar um das Steuerzeichen \r ab.
TYPESCRIPT
1import { diffLines } from "diff";
2
3// Rekursive kanonische Sortierung verhindert Fehlalarme bei JSON-Vergleichen
4export function canonicalizeJson(rawJson: string): string {
5 const sortDeep = (val: unknown): unknown => {
6 if (Array.isArray(val)) {
7 // Array-Reihenfolge bleibt bewusst erhalten, da sie fachlich relevant sein kann!
8 return val.map(sortDeep);
9 }
10 if (val !== null && typeof val === "object") {
11 return Object.fromEntries(
12 Object.entries(val as Record<string, unknown>)
13 .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))
14 .map(([key, nested]) => [key, sortDeep(nested)])
15 );
16 }
17 return val;
18 };
19
20 const parsed: unknown = JSON.parse(rawJson);
21 return JSON.stringify(sortDeep(parsed), null, 2);
22}
23
24export function diffJsonPayloads(beforeRaw: string, afterRaw: string) {
25 const normalizedBefore = canonicalizeJson(beforeRaw);
26 const normalizedAfter = canonicalizeJson(afterRaw);
27 return diffLines(normalizedBefore, normalizedAfter);
28}

Beachte im Code ein wichtiges Detail: Objektschlüssel dürfen alphabetisch sortiert werden, Arrays ([...]) dagegen nicht automatisch, weil [10, 20] und [20, 10] in vielen Schnittstellen eine fachlich bedeutsame Reihenfolge (z. B. Prioritäten oder Zeitreihen) abbilden.

Welches Vergleichsverfahren passt zu welchem Dokumenttyp?

DokumenttypBestes VergleichsverfahrenWarum es hilftWann ein anderes Werkzeug besser ist
Verträge, E-Mails & KI-TextüberarbeitungenZeilen- + Wort-Diff (Unified oder Split)Zeigt ausgetauschte Zahlen, Fristen und Füllwörter mitten im SatzBei Layout-Prüfungen in formatierten Word- oder PDF-Dokumenten mit Fußnoten
API-Antworten & Konfigurations-JSONKanonische Formatierung + Zeilen-DiffBlendet Minifizierung und zufällige Key-Reihenfolgen ausBei riesigen JSON-Dumps über ~5–10 MB (jq --sort-keys im Terminal ist dort stabiler)
Markdown-Dokumentation & TabellenQuelltext-Diff + gerenderte VorschauErkennt gleichzeitig Tippfehler im Text und zerschossene Tabellen-SpaltenBei komplexen MDX-Dateien mit eigenen React-Komponenten (siehe MDX-Leitfaden)
Mehrteilige Quellcode-RefactoringsLokales git diff --color-moved / IDEVerfolgt verschobene Funktionen und umbenannte Dateien über Ordner hinwegEinzeldatei-Vergleich im Browser kennt keinen Projektkontext (siehe Git Workflows)
Verlässliche Prüfroutine
  • Vor dem Vergleich von JSON- oder Code-Snippets immer Smart Formatieren ausführen, um Formatierungsrauschen zu entfernen
  • Bei Verträgen, AGB oder sensiblen Kundendaten ausschließlich lokal im Browser arbeitende Werkzeuge ohne Server-Übertragung einsetzen
  • Bei Markdown-Tabellen und Checklisten kurz in die gerenderte Ansicht wechseln, um vergessene Pipe-Zeichen (|) sofort zu sehen
Häufige Fehlschlüsse
  • „Leerzeichen ignorieren“ nicht blind bei Python oder YAML aktivieren – dort verändert die Einrückung die Programmlogik!
  • Arrays in JSON nicht unbesehen alphabetisch sortieren, wenn die Reihenfolge der Einträge fachliches Gewicht hat
  • Mehrstellige Megabyte-Serverlogs nicht im Browser-DOM rendern, sondern per Kommandozeile (diff -u oder git diff --no-index) filtern
Wann eine .patch-Datei im Alltag Zeit spart

Über den Button Als .patch kopieren erzeugst du ein standardisiertes Unified-Diff-Format. Entwickler können diese Textdatei direkt mit git apply aenderungen.patch einspielen, und Sprachmodelle verstehen ein kurzes Patch-Snippet oft präziser und tokensparender als zwei komplett kopierte Quelldateien.

Prüfpunkte beim Prüfen von Code, JSON und Verträgen

  • Datenschutz vor dem Einfügen klären: Enthält der Text personenbezogene Daten, API-Schlüssel oder Vertragsentwürfe, darf kein Netzwerk-Request stattfinden (prüfbar im Browser-Netzwerk-Tab oder im Flugmodus der installierten PWA).
  • Einrückungssensitive Formate beachten: Prüfst du YAML, Python oder Markdown-Codeblöcke, lasse die Option Leerzeichen ignorieren ausgeschaltet.
  • Zahlen und Negationen einzeln gegenlesen: Achte in den farbig hinterlegten Wort-Markierungen gezielt auf kleine Wörter („nicht“, „höchstens“, „exklusive“) sowie geänderte Einheiten (Tage vs. Werktage, ms vs. s).

Quellen und nächste Schritte