Texte Zeile für Zeile vergleichen
Der Zeilenvergleich stellt einen Ausgangstext einer überarbeiteten Fassung gegenüber und gibt das Ergebnis in Lesereihenfolge aus.
Im Browser ausführen – kostenlos
Jede Zeile wird als hinzugefügt, entfernt oder unverändert gekennzeichnet und erhält die passende Zeilennummer aus beiden Fassungen. Damit können Sie Bearbeitungen prüfen, erzeugte Dateien kontrollieren, Konfigurationsänderungen validieren und genau nachvollziehen, wie sich zwei Versionen unterscheiden. Der Vergleich ist deterministisch, benötigt keinen Netzwerkzugriff und behandelt Zeilenenden von Windows, klassischem Mac und Unix einheitlich.
Bereiten Sie beide Fassungen für einen aussagekräftigen Vergleich vor
Tragen Sie die frühere Fassung in das Feld für den Ausgangstext und die spätere Fassung in das Feld für den überarbeiteten Text ein. Das Werkzeug vergleicht vollständige Zeilen; deshalb zählen Satzzeichen, Großschreibung, Abstände und jedes andere Zeichen. Ändert sich nur ein einziges Zeichen, erscheint die betreffende Zeile als entfernte und anschließend als hinzugefügte Zeile. Dieses Verhalten bildet eine echte zeilenorientierte Prüfung ab und erweckt nicht den Eindruck, zwei unterschiedliche Zeilen seien unverändert. Vor dem Vergleich werden die Zeilenenden vereinheitlicht. Dadurch können Sie Inhalte aus Windows, Unix oder älteren Mac-Systemen vergleichen, ohne dass allein unterschiedliche Wagenrücklauf-Konventionen falsche Abweichungen erzeugen. Leerzeilen innerhalb eines Dokuments bleiben bedeutsam und können als hinzugefügt, entfernt oder unverändert erscheinen. Endet ein Dokument mit einem Zeilenumbruch, gehört auch die daraus entstehende letzte Leerzeile zum Vergleich. Für eine übersichtliche Prüfung sollten Sie sachliche Änderungen nicht gleichzeitig mit einer umfassenden, inhaltlich unabhängigen Neuformatierung vornehmen, denn breite Formatänderungen führen zwangsläufig zu einem größeren Diff, selbst wenn die Aussagen ähnlich bleiben.
Lesen Sie Statusangaben, Zeilennummern und Zusammenfassung
Das Ergebnis folgt der Reihenfolge, in der sich die Änderung vom Ausgangstext zur überarbeiteten Fassung rekonstruieren lässt. Ein unveränderter Eintrag enthält die alte und die neue Zeilennummer, weil genau diese Zeile in beiden Texten vorkommt. Bei einem entfernten Eintrag steht nur die alte Nummer, bei einem hinzugefügten nur die neue. Die jeweils fehlenden Felder sind beabsichtigt: Eine hinzugefügte Zeile hat im alten Dokument keine Position, eine entfernte Zeile im neuen Dokument ebenso wenig. Die Zähler der Zusammenfassung vermitteln schnell den Umfang der Bearbeitung; die ausführliche Zeilenliste belegt diese Summen im Einzelnen. Die Kennzeichnung für identische Texte ist nur dann wahr, wenn weder Ergänzungen noch Löschungen vorliegen. Bei wiederholten Zeilen kann es mehrere mathematisch gültige Ausrichtungen geben. Damit die Ausgabe stabil bleibt, verwendet der Vergleich eine feste Entscheidungsregel und bevorzugt eine Löschung, wenn zwei Ausrichtungen gleich viele unveränderte Zeilen erhalten. Dieselben Eingaben ergeben daher immer dieselbe Folge und eignen sich für Tests sowie automatisierte Prüfabläufe.
Nutzen Sie den Vergleich sicher in Prüfungen und Automationen
Ein Zeilenvergleich ist besonders nützlich, wenn die Struktur entscheidend ist, etwa bei Quellcode, Konfigurationen, Versionshinweisen, Listen, Richtlinien, Anweisungen und exportierten Datensätzen. Beginnen Sie bei einer manuellen Prüfung mit der Zusammenfassung und untersuchen Sie danach jedes Paar aus entfernter und hinzugefügter Zeile im Zusammenhang. In automatisierten Abläufen können Sie die Kennzeichnung für identische Texte als schnelle Entscheidung verwenden und die Einzelheiten aufbewahren, wenn ein Prüfpfad oder erklärender Bericht erforderlich ist. Das Werkzeug bewertet nicht, ob eine Änderung richtig ist, führt keine konkurrierenden Bearbeitungen zusammen und berechnet keine semantische Ähnlichkeit. Es liefert exakte Textbeziehungen, auf deren Grundlage eine Person oder eine weitere deterministische Regel entscheiden kann. Beide Eingaben sind für eine berechenbare Ausführung begrenzt; der Vergleich findet vollständig im Arbeitsspeicher und ohne externe Dienste statt. Eine API-Nutzung kostet $0.002. Wenn Sie viele Dateien bearbeiten, vergleichen Sie jeweils ein Paar und bewahren Sie Dateinamen oder Versionskennungen in Ihrem eigenen Ablauf auf, da diese Funktion Text und keine Repository-Metadaten erhält. Beachten Sie bei vertraulichem Material die Aufbewahrungs- und Übertragungsregeln des gewählten Kanals.
Anwendungsfälle
Konfigurationsänderungen prüfen
Vergleichen Sie die alte Konfiguration mit dem Vorschlag und erkennen Sie jede Zeile, die das Update einfügt oder entfernt.
Erzeugte Ausgaben validieren
Prüfen Sie ein neu erstelltes Manifest, einen Bericht oder Codeabschnitt in einem automatisierten Ablauf gegen eine bekannte Sollfassung.
Dokumentänderungen erläutern
Erstellen Sie ein strukturiertes Änderungsprotokoll für Richtlinien, Versionshinweise, Anweisungen oder andere zeilenorientierte Dokumente.
Häufige Fragen
Was bedeutet der jeweilige Status?
Unverändert bedeutet, dass die genaue Zeile in der gewählten Ausrichtung beider Fassungen vorkommt. Entfernt steht für ausschließlich im Original vorhandene und hinzugefügt für ausschließlich in der Überarbeitung vorhandene Zeilen.
Werden Wörter innerhalb einer geänderten Zeile verglichen?
Nein. Dies ist bewusst ein zeilenweiser Vergleich. Eine geänderte Zeile erscheint als Löschung und Ergänzung und bildet die Änderung dadurch exakt und eindeutig ab.
Gelten unterschiedliche Zeilenendeformate als Änderung?
Nein. Die Zeilenenden von Windows, Unix und klassischem Mac werden vor dem Vergleich vereinheitlicht.
Wie werden wiederholte identische Zeilen ausgerichtet?
Der Algorithmus erhält eine längste gemeinsame Zeilenfolge und nutzt bei gleichwertigen Ausrichtungen eine stabile Entscheidungsregel, die eine Löschung bevorzugt.
Kann ich die Ausgabe in automatisierten Tests verwenden?
Ja. Der Algorithmus verwendet weder Netzwerk noch Zufall oder zeitabhängige Werte, sodass gleiche Eingaben stets dasselbe JSON liefern.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Browserfassung kann denselben deterministischen Vergleich lokal ausführen.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/str/diff-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"before_text":"Apples\nBananas\nCherries","after_text":"Apples\nBlueberries\nCherries"}'const res = await fetch("https://api.kit.forhosting.com/str/diff-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"before_text": "Apples\nBananas\nCherries",
"after_text": "Apples\nBlueberries\nCherries"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/diff-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"before_text": "Apples\nBananas\nCherries",
"after_text": "Apples\nBlueberries\nCherries"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/diff-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"before_text":"Apples\\nBananas\\nCherries","after_text":"Apples\\nBlueberries\\nCherries"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"before_text":"Apples\nBananas\nCherries","after_text":"Apples\nBlueberries\nCherries"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/diff-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"before_text": "Apples\nBananas\nCherries",
"after_text": "Apples\nBlueberries\nCherries"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.diff_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_chars_per_text | 200000 |
max_lines_per_text | 1000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |