Skip to main content

HTML-Formatierer / Beautifier

HTML-Code formatieren, verschönern und minifizieren.

Geprüft von · Zuletzt geprüft

So verwendest du den HTML-Formatierer

  1. Füge HTML in das Eingabefeld ein - eine vollständige Seite, ein minifiziertes Template-Fragment oder die Rohausgabe eines server-gerenderten Frameworks funktionieren alle. DOCTYPE, Script- und Style-Blöcke sind in Ordnung.
  2. Wähle die Einrückung: 2 Leerzeichen (häufig in React- und Vue-Projekten), 4 Leerzeichen (klassischer HTML5-Stil) oder ein Tabulator-Zeichen. Die Einstellung gilt beim nächsten Klick auf "Formatieren".
  3. Klicke auf "Formatieren", um jedes Block-Element einzurücken und jeden Tag auf eine eigene Zeile zu setzen, oder auf "Minifizieren", um das Dokument in einen kompakten einzeiligen String zu kollabieren.
  4. Kopiere die Ausgabe mit der Zwischenablagentaste. Das Textarea behält eine scrollbare Kopie, damit du vorher und nachher vergleichen kannst, ohne die Seite zu verlassen.

Was das Tool intern macht

Der Formatierer tokenisiert die Eingabe in drei Arten von Knoten: öffnende Tags, schließende Tags und Textläufe. Wenn es ein öffnendes Tag sieht, erhöht es einen Einrückungszähler und gibt einen Zeilenumbruch aus; ein schließendes Tag verringert den Zähler, bevor es druckt. Leere Elemente, die im HTML-Living-Standard aufgeführt sind - <br>, <img>, <input>, <meta>, <link>, <hr>, <source> und Ähnliche - schieben niemals den Stack, weil sie keine Kinder haben können. Selbstschließende XML-Stil-Tags, die auf /> enden, werden genauso behandelt.

Inhalt innerhalb von <pre>, <textarea>, <script> und <style> wird unverändert beibehalten, weil die Neuformatierung dieser Elemente Leerzeichen verändern würde, die für Benutzer oder die JavaScript-Engine beobachtbar sind. Kommentare (<!-- -->) und die DOCTYPE-Deklaration werden auf eigener Zeile ausgegeben. Der Minifizierungs-Pass kollabiert Leerzeichen-Läufe zwischen Tags auf nichts, entfernt Kommentare und verbindet das Dokument zu einer Zeile.

Echte Gründe, dies zu verwenden

  • Verstehen der Ausgabe eines server-gerenderten Frameworks (Rails, Django, Laravel) beim Debuggen einer unerwarteten DOM-Struktur.
  • Vorbereiten eines E-Mail-Templates für ein CMS, das HTML inline ausliefert und von minifiziertem Markup profitiert.
  • Normalisieren der Ausgabe eines WYSIWYG-Editors vor dem Committen in die Versionskontrolle.
  • Inspizieren des gerenderten Shadow DOM einer einzelnen Web-Komponente nach dem Kopieren aus Chrome DevTools.
  • Erstellen einer minimalen Reproduktion für einen Bug-Report, bei dem die Einrückung die Struktur offensichtlich macht.
  • Umwandeln eines einzeiligen HTML-Snippets von einem CDN in etwas, das man auf einem Laptop-Bildschirm komfortabel lesen kann.

Fallstricke und Randfälle

  • Tag-Suppe. Altes HTML erlaubt das Weglassen einiger schließender Tags (<li>, <p>, <td>). Der Formatierer behandelt sie so, als wären sie verschachtelt, was eine tiefere Einrückung als die konzeptionelle Struktur des Dokuments erzeugen kann. Die Ausgabe rendert im Browser trotzdem identisch.
  • Inline-sensitives Leerzeichen. Leerzeichen zwischen <span>- oder <a>-Tags beeinflussen das gerenderte Layout. Aggressives Minifizieren kann "Hallo Link" zu "HalloLink" visuell zusammenfügen. Verwende ein nicht umbrechendes Leerzeichen oder ein führendes Leerzeichen innerhalb des Ankers, wenn dies wichtig ist.
  • Bedingte Kommentare. Ältere Internet-Explorer-Kommentare wie <!--[if IE]> werden als einfache Kommentare beibehalten; aktuelle Browser ignorieren sie ohnehin, also ist das normalerweise in Ordnung.
  • Eingebettetes SVG und MathML. Das Tool rückt sie wie jedes andere Markup ein, einschließlich der selbstschließenden Knoten, die XML-Syntax verwenden.
  • CDATA-Blöcke. <![CDATA[ ... ]]> innerhalb von Inline-SVG überlebt den Roundtrip, weil der Tokenizer ihn als undurchsichtigen Text behandelt.

HTML-Spezifikationskontext

HTML ist keine versionierte Spezifikation mehr - die aktuelle Referenz ist der WHATWG HTML Living Standard, der den Parser in algorithmischen Begriffen statt als Grammatik definiert. Das bedeutet, dass dieselbe Eingabe je nach impliziten Schließregeln für <table>, <ul> oder <dl> in verschiedene DOM-Bäume tokenisiert werden kann. Leerzeichen zwischen Block-Elementen werden vom Browser während des Layouts kollabiert, daher ist Pretty-Printing reine Entwickler-Bequemlichkeit: deine gerenderte Seite sieht identisch aus, ob sie mit zwei Leerzeichen eingerückt oder auf eine Zeile gequetscht ist. Die einzigen Stellen, an denen Leerzeichen bedeutsam sind, liegen innerhalb von <pre>, <textarea>, Elementen mit white-space: pre und den Grenzen zwischen Inline-Formatierungskontexten.

Wann andere Tools besser sind

In einem Editor baut Prettiers HTML-Plugin einen echten Parse-Baum und behandelt Randfälle wie innerhalb von Block-Level-Inhalt verschachteltes <a>, die Wahrung von Tag-Weglassregeln und das Umbrechen langer Attributlisten. Das ist der richtige Standard für jedes Projekt mit einem Build-Schritt. Kommandozeilen-Tools wie tidy oder html-minifier-terser können zusätzlich Attribute deduplizieren, Boolean-Attribute kollabieren oder redundante Anführungszeichen entfernen. Dieses Web-Tool ist absichtlich einfacher - greife darauf zurück, wenn du eine einzelne minifizierte Seite lesen, ein E-Mail-Template verschönern oder ein Snippet für eine Transaktionsnachricht minifizieren musst, ohne npm anzufassen. Für Site-weite Optimierung integriere Minifizierung in deine Deploy-Pipeline.

Häufig gestellte Fragen

Überprüft der Formatierer, ob mein HTML wohlgeformt ist?

Nein. Formatierung und Validierung sind orthogonale Operationen. Dieses Tool rückt ein, was du ihm gibst, und überprüft nicht, ob jedes öffnende Tag ein passendes schließendes Tag hat, ob Attributwerte in Anführungszeichen stehen oder ob du gültige Elementnamen verwendest. Wenn du strenge Validierung benötigst, füge das Ergebnis in den W3C Markup Validator ein oder aktiviere die HTMLHint-Erweiterung in deinem Editor.

Warum lässt die Ausgabe <code>&lt;pre&gt;</code>- und <code>&lt;textarea&gt;</code>-Inhalte unverändert?

Beide Elemente behandeln Leerzeichen als Teil ihres Inhalts. Die Einrückung des inneren Textes würde sichtbare führende Leerzeichen einführen, wenn der Browser die Seite rendert, und würde Textarea-Standardwerte korrumpieren. Der HTML-Living-Standard nennt diese Elemente explizit zusammen mit <code>&lt;script&gt;</code> und <code>&lt;style&gt;</code> als Rohtext-Inhalte, deren innere Leerzeichen bedeutsam sind.

Ist der Minifier sicher für server-gerenderte Templates?

Größtenteils ja, aber sei vorsichtig mit Templates, die auf bedeutsame Leerzeichen zwischen Inline-Elementen angewiesen sind. Server-Templates produzieren oft Markup, bei dem ein Leerzeichen zwischen <code>&lt;span&gt;</code>-Tags für das gerenderte Layout wichtig ist; der Minifier kollabiert diese Leerzeichen. Wenn dein Template mit oder ohne Leerzeichen korrekt rendert, ist die minifizierte Ausgabe ein sicherer Ersatz.

Was passiert mit der Reihenfolge von Attributen und Anführungszeichenstil?

Attribute werden in derselben Reihenfolge ausgegeben, in der sie in der Quelle erschienen, und Anführungszeichen werden unverändert übernommen. Anders als Prettier normalisiert dieser Formatierer keine einfachen Anführungszeichen in doppelte oder sortiert Attribute für deterministische Diffs. Wenn du kanonische Ausgabe im Team benötigst, verarbeite zuerst mit Prettier und verwende dieses Tool nur für Ad-hoc-Inspektion.

Wird mein Markup zur Verarbeitung an einen Server gesendet?

Nein. Der Formatierer ist als Preact-Komponente implementiert, die in deinem Tab läuft; die Schaltflächen "Formatieren" und "Minifizieren" rufen lokale JavaScript-Funktionen auf, die niemals eine fetch-Anfrage stellen. Du kannst den ausgehenden Netzwerkverkehr nach dem ersten Seitenaufruf blockieren und jede Schaltfläche funktioniert noch. Die eingefügte Eingabe wird nirgends protokolliert.

Wie geht das Tool mit eingebettetem SVG um?

SVG-Elemente werden genauso eingerückt wie HTML-Elemente. Selbstschließende SVG-Tags wie <code>&lt;path d="..." /&gt;</code> werden erkannt und schieben den Einrückungs-Stack nicht. XML-Namensräume (<code>xmlns:xlink</code>) und selbstschließende Syntax überleben den Roundtrip, sodass ein formatiertes und dann minifiziertes SVG dasselbe gerenderte Bild produziert.

Kann ich eine vollständige HTML-Seite mit DOCTYPE formatieren?

Ja. Die DOCTYPE-Deklaration (<code>&lt;!doctype html&gt;</code>) wird auf einer eigenen Zeile am Anfang der Ausgabe ausgegeben. Der Formatierer fügt kein DOCTYPE hinzu, wenn deine Eingabe keines hat, weil dies ändern könnte, wie der Browser zwischen Quirks-Modus und Standards-Modus wählt. Füge ein vollständiges Dokument ein und du erhältst ein vollständiges Dokument zurück.

Warum stehen einige schließende Schrägstriche in der Ausgabe wie <code>&lt;br /&gt;</code> statt <code>&lt;br&gt;</code>?

Der Stil, den deine Eingabe verwendete, wird beibehalten. HTML5 akzeptiert sowohl <code>&lt;br&gt;</code> als auch <code>&lt;br /&gt;</code> für leere Elemente. Wenn du XHTML-Stil selbstschließende Tags einfügst, erhältst du diese zurück; wenn du HTML5 bloße Tags einfügst, erhältst du auch diese zurück. Konsistenz im Codebase ist ein Linter-Anliegen, kein Formatierer-Anliegen.

Entfernt das Minifizieren <code>&lt;script&gt;</code>-Inhalte?

Nein. Der Inhalt eines <code>&lt;script&gt;</code>-Blocks wird Byte für Byte beibehalten, weil es sich um Rohtext handelt - das Entfernen von Leerzeichen innerhalb von JavaScript würde Template-Literale, Regexe und ASI-Verhalten korrumpieren. Verwende einen dedizierten JavaScript-Minifier wie Terser oder esbuild für den Skript-Inhalt, füge dann das Ergebnis zurück in dein HTML ein, bevor du die umliegende Seite minifizierst.

Kann ich dies für E-Mail-HTML verwenden?

Ja, mit einem Vorbehalt: Viele E-Mail-Clients entfernen oder modifizieren bestimmte Tags, ignorieren externe Stylesheets und erfordern Inline-Styles. Der Formatierer verschönert oder minifiziert MJML-kompilierte Ausgabe problemlos, aber die client-spezifischen Hacks, die E-Mail konsistent rendern (Outlook-Kommentare, VML-Fallbacks), werden in der Form erhalten, in der du sie eingefügt hast. Führe anschließend ein Tool wie Litmus oder Email on Acid aus, um das Rendering zu bestätigen.

Verwandte Tools

Mehr Developer Tools

ZeroUtil unterstützen