HTML-Formatierer
Der HTML-Formatierer verwandelt komprimiertes, minifiziertes oder einzeiliges Markup in ein lesbares Dokument, dessen Einrückung der Elementhierarchie folgt.
Im Browser ausführen – kostenlos
Fügen Sie eine vollständige Seite, ein Vorlagenfragment oder Markup aus einer erzeugten Antwort ein und erhalten Sie eine stabile Einrückung mit zwei Leerzeichen – ohne Netzwerkzugriff oder nichtdeterministische Verarbeitung. Der Formatierer erkennt Kommentare, Deklarationen, Attribute in Anführungszeichen, Rohinhalte von script und style, selbstschließende Syntax und leere HTML-Standardelemente. Unerwartete, falsch zugeordnete oder nicht geschlossene gewöhnliche Tags werden abgelehnt.
Machen Sie die Hierarchie in minifiziertem HTML sichtbar
Minifizierung ist für die Auslieferung einer Seite an den Browser nützlich, entfernt jedoch die visuelle Struktur, die Menschen zum Verständnis des Markups benötigen. Eine Navigationsleiste, verschachtelte Liste, Kartenansicht oder ein Formular kann zu einer durchgehenden Zeile werden, in der sich Tags nur schwer zuordnen lassen. Dieser Formatierer stellt die Struktur wieder her, indem er das Dokument in Quellreihenfolge durchsucht und die Einrückung aus der aktiven Hierarchie ableitet. Jedes gewöhnliche öffnende Element erhöht die Ebene; sein passendes schließendes Element führt zur vorherigen Ebene zurück. Text erscheint in der Tiefe seines Containers, Kommentare und Deklarationen an ihrer logischen Position. Das Ergebnis verwendet stabil zwei Leerzeichen und eignet sich für Prüfung, Dokumentation, Code-Review und Vergleich. Es erfindet keine Elemente, sortiert keine Attribute um und gestaltet das Markup nicht neu, sondern macht die vorhandene Hierarchie klar und vorhersehbar.
Behandeln Sie HTML-Konstrukte ohne schließenden Tag
Nicht jedes Token in spitzen Klammern verändert die Verschachtelung. Leere Standardelemente wie img, input, meta, link, br und hr sind ohne schließenden Tag vollständig und werden nicht auf den Stapel gelegt. Ausdrücklich selbstschließende Syntax wird genauso behandelt. Kommentare, Dokumenttyp-Deklarationen, CDATA-Abschnitte und Verarbeitungsanweisungen bleiben vollständige Tokens. Der Scanner berücksichtigt einfache und doppelte Anführungszeichen in Attributen, sodass ein Größer-als-Zeichen innerhalb eines Werts den Tag nicht vorzeitig beendet. Inhalte von script, style und textarea bleiben bis zum passenden Schlusstag unverändert und werden nicht als falsche Kindelemente interpretiert. Die Verarbeitung ist deterministisch und benötigt weder Netzwerk noch Uhrzeit, Zufall, automatische DOM-Reparatur oder einen externen Dienst.
Erkennen Sie unvollständige Strukturen vor der Weiterverwendung
Zu formatierendes Markup stammt häufig aus einem Protokoll, einer E-Mail-Vorlage, einer Serverantwort, einem Redaktionsfeld oder einem Build-Artefakt. Solche Quellen können trotz plausibler Darstellung abgeschnitten sein. Der Formatierer verwaltet einen Stapel geöffneter Elemente und verlangt schließende Tags in umgekehrter Reihenfolge. Ein unerwarteter Schlusstag führt sofort zu einem Fehler; bei einer falschen Zuordnung wird der zuerst erwartete Tag genannt. Endet die Eingabe mit einem offenen gewöhnlichen Element, meldet die Anfrage einen Fehler für ungültige Eingaben und nennt dieses Element. Leere Standardelemente und ausdrücklich selbstschließende Tags sind beabsichtigte Ausnahmen. Diese Strukturprüfung ersetzt keine vollständige Validierung des HTML-Standards. Verwenden Sie sie vor Review, Speicherung, Dokumentation oder Weiterverarbeitung. Die lokale Browserausführung ist verfügbar; jede automatisierte API-Anfrage verwendet den veröffentlichten Grundpreis von $0.002.
Anwendungsfälle
Eine minifizierte Produktionsseite untersuchen
Erweitern Sie einzeiliges Markup, bevor Sie eine Komponente, einen Link, ein Formularfeld oder einen eingebetteten Abschnitt untersuchen.
Vorlagen für ein Review vorbereiten
Wenden Sie eine stabile Einrückung an, damit sich Strukturen ohne manuelle Zuordnung verschachtelter Tags vergleichen lassen.
Ein kopiertes HTML-Fragment prüfen
Erkennen Sie fehlende oder falsch zugeordnete Schlusstags nach dem Kopieren aus einer Antwort, einem Editor, einer Nachricht oder einem Protokoll.
Häufige Fragen
Was ändert der HTML-Formatierer?
Er fügt anhand der Verschachtelung Zeilenumbrüche und Einrückungen mit zwei Leerzeichen ein und normalisiert Abstände in gewöhnlichem Text.
Welche Tags dürfen ohne Schlusstag bleiben?
Leere Standardelemente wie img, input, meta, link, br und hr benötigen keinen Schlusstag. Ausdrücklich selbstschließende Syntax ist ebenfalls zulässig.
Bleiben Attribute und eingebetteter Code erhalten?
Ja. Attribute und Werte in Anführungszeichen bleiben erhalten; script, style und textarea gelten bis zum passenden Schlusstag als Rohtext.
Ist dies ein vollständiger HTML-Standardvalidator?
Nein. Geprüft werden Tag-Paare und einige Token-Grenzen, jedoch nicht sämtliche Dokument-, Inhalts-, Barrierefreiheits- oder Attributregeln.
Was kostet eine API-Anfrage?
Jede Anfrage verwendet den veröffentlichten Grundpreis von $0.002. Die Browserversion kann lokal ohne API-Aufruf ausgeführt werden.
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/dev2/beautify-html \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"html":"<!doctype html><html><body><main><h1>Hello</h1><p>Readable HTML.</p></main></body></html>"}'const res = await fetch("https://api.kit.forhosting.com/dev2/beautify-html", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"html": "<!doctype html><html><body><main><h1>Hello</h1><p>Readable HTML.</p></main></body></html>"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/beautify-html",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"html": "<!doctype html><html><body><main><h1>Hello</h1><p>Readable HTML.</p></main></body></html>"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/beautify-html", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"html":"<!doctype html><html><body><main><h1>Hello</h1><p>Readable HTML.</p></main></body></html>"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"html":"<!doctype html><html><body><main><h1>Hello</h1><p>Readable HTML.</p></main></body></html>"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/beautify-html", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"html": "<!doctype html><html><body><main><h1>Hello</h1><p>Readable HTML.</p></main></body></html>"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.beautify_html",
"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.
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. |