HTML-Escaping ist das Ersetzen von Zeichen mit besonderer Bedeutung in HTML durch die entsprechenden Entity-Referenzen. Die fünf Zeichen, die zwingend escapt werden müssen, sind: Ampersand (&), Kleiner-als (<), Größer-als (>), doppeltes Anführungszeichen (") und einfaches Anführungszeichen ('). Ohne Escaping interpretiert der Browser diese Zeichen als Markup-Anweisungen statt als darstellbaren Text, was das Seiten-Rendering zerstört und die Tür für Injection-Angriffe öffnet.
Die HTML-Spezifikation (gepflegt von WHATWG) definiert zwei Formen von Zeichenreferenzen: benannte Entities wie & und numerische Entities wie & oder &. Benannte Entities sind im Quellcode leichter zu lesen. Numerische Entities (dezimal oder hexadezimal) können jeden Unicode-Codepoint darstellen und sind damit nützlich für Zeichen ohne benannten Alias. Beide Formen erzeugen im Browser identische Ausgabe.
Unescaping (auch Dekodierung genannt) ist die umgekehrte Operation: Entity-Referenzen werden wieder in ihre wörtlichen Zeichen umgewandelt. Dies ist häufig notwendig beim Extrahieren von Text aus HTML-Quellcode, beim Migrieren von Inhalten zwischen Systemen oder beim Debuggen von Templates, die Entities doppelt kodieren. Dieses Tool erledigt beide Richtungen im Browser, sodass du deine Escaping-Logik überprüfen oder in Sekunden Klartext aus einem HTML-lastigen Quelltext zurückgewinnen kannst.
Wozu ein HTML-Escape-Tool verwenden?
Spitzklammern und Ampersands in großen Textblöcken manuell zu ersetzen ist mühsam und fehleranfällig. Ein dediziertes Tool konvertiert die Eingabe in einem Schritt — ohne Installation.
⚡
Sofortige Konvertierung
Text oder HTML einfügen und sofort die escapte oder unescapte Ausgabe erhalten. Keine Wartezeit auf einen Server-Roundtrip, da die gesamte Verarbeitung lokal in JavaScript stattfindet.
🔒
Datenschutz an erster Stelle
Die Eingabe verlässt den Browser nicht. Nichts wird an einen Server gesendet oder gespeichert, sodass Markup mit Zugangsdaten, API-Schlüsseln oder internem Code sicher escapt werden kann.
📋
Kein Konto, keine Einrichtung
Seite öffnen und direkt mit dem Einfügen beginnen. Es gibt keine Login-Schranke, keine E-Mail-Pflicht und keine Software zu installieren. Funktioniert auf jedem Gerät mit einem modernen Browser.
🌐
Vollständige Entity-Abdeckung
Verarbeitet die fünf obligatorischen HTML-Sonderzeichen sowie numerische Entities (dezimal und hexadezimal). Unterstützt Round-Trip-Konvertierung: Escapen und anschließendes Unescapen ergibt den ursprünglichen String.
Anwendungsfälle für HTML-Escaping
Frontend-Entwickler: Benutzereingaben anzeigen
Beim Rendern von nutzereingereichten Texten innerhalb einer Seite zuerst escapen, damit der Browser sie nicht als HTML-Tags interpretiert. Das ist die wichtigste Abwehr gegen stored XSS in jedem Template, das rohe Strings ausgibt.
Backend-Entwickler: HTML-Antworten generieren
Serverseitiger Code, der Strings zu HTML zusammensetzt, muss dynamische Werte vor dem Einfügen escapen. Mit diesem Tool lässt sich überprüfen, ob die eigene Escape-Funktion für Grenzfälle wie verschachtelte Anführungszeichen die korrekte Ausgabe liefert.
DevOps: Konfiguration in HTML einbetten
Inline-JSON oder Shell-Befehle innerhalb einer HTML-Seite (etwa in einem Script-Tag oder einem Data-Attribut) müssen escapt werden. Prüfen, ob Spitzklammern und Ampersands in Konfigurations-Snippets korrekt kodiert sind.
QA-Ingenieur: XSS-Vektoren testen
Gängige XSS-Payloads in das Tool einfügen und überprüfen, ob die Ausgabe der Anwendung mit der korrekt escapten Version übereinstimmt. Die escapte Ausgabe zeichenweise mit dem vergleichen, was die Anwendung produziert.
Technische Redakteure: Code-Beispiele in der Dokumentation
Das Veröffentlichen von Code-Snippets in HTML-basierten Docs (Jekyll, Hugo, eigene CMS-Systeme) erfordert das Escapen von Spitzklammern für generische Typsyntax und Template-Platzhalter. Code-Beispiel einfügen und jedes Sonderzeichen wird sofort kodiert.
Einsteiger: HTML-Entities verstehen
Beliebige Zeichen eingeben oder einfügen und ihre benannten sowie numerischen Entity-Formen sehen. Grenzfälle wie geschützte Leerzeichen, Gedankenstriche und Unicode-Symbole ausprobieren, um zu verstehen, wie HTML-Zeichenkodierung funktioniert.
HTML-Entity-Referenztabelle
Die nachstehende Tabelle listet häufig verwendete HTML-Entities auf. Die fünf Sonderzeichen (& < > " ') müssen in HTML-Inhalten und Attributwerten immer escapt werden. Andere Entities sind optional, aber nützlich für Zeichen, die schwer zu tippen oder im Quellcode mehrdeutig sind.
Die beiden Operationen sind umgekehrte Vorgänge. Die falsche Richtung zu wählen erzeugt doppelt kodierte oder ungeschützte Ausgabe.
Escapen (kodieren)
Verwenden, wenn nicht vertrauenswürdiger oder dynamischer Text in HTML eingefügt wird. Wandelt ein wörtliches < in < um, sodass der Browser das Zeichen anzeigt statt einen Tag zu starten. Vor dem Rendern von Benutzereingaben, Log-Einträgen oder beliebigen Strings anwenden, die Markup enthalten könnten.
Unescapen (dekodieren)
Verwenden, wenn Klartext aus einer HTML-Quelle extrahiert wird. Wandelt < zurück in <. Anwenden beim Migrieren von Inhalten aus einem CMS, beim Parsen von gescraptem HTML oder beim Beheben doppelt kodierter Strings wie &amp;, die Entity-Namen statt Zeichen anzeigen.
Code-Beispiele
Nachfolgend funktionierende Beispiele für HTML-Escaping und -Unescaping in vier Sprachen. Jedes Snippet deckt beide Richtungen ab und behandelt Grenzfälle wie verschachtelte Anführungszeichen und numerische Entities.
Was ist der Unterschied zwischen HTML-Escaping und URL-Kodierung?
HTML-Escaping ersetzt Zeichen, die in HTML besondere Bedeutung haben (< > & " '), durch Entity-Referenzen wie <, damit sie als Text angezeigt werden. URL-Kodierung (Prozent-Kodierung) ersetzt in URLs unsichere Zeichen durch %XX-Hexadezimalsequenzen. Sie schützen unterschiedliche Kontexte: HTML-Escaping verhindert Markup-Injection, während URL-Kodierung gültige Query-Strings und Pfadsegmente sicherstellt.
Welche Zeichen müssen in HTML escapt werden?
Die fünf Zeichen, die immer escapt werden müssen: & (Ampersand), < (Kleiner-als), > (Größer-als), " (doppeltes Anführungszeichen in Attributen) und ' (einfaches Anführungszeichen in Attributen). Wird eines davon nicht escapt, kann dies das Rendering zerstören oder eine Cross-Site-Scripting-Schwachstelle erzeugen.
Ist ' in HTML5 gültig?
Ja. Die benannte Entity ' ist in der HTML5-Spezifikation definiert und wird von allen modernen Browsern unterstützt. Sie war nicht Teil von HTML 4, das nur &, <, > und " kannte. Wenn sehr alte HTML-4-Parser unterstützt werden müssen, stattdessen die numerische Form ' verwenden.
Wie behebe ich doppelt kodierte HTML-Entities wie &amp;?
Doppelkodierung tritt auf, wenn ein bereits escapter String ein zweites Mal durch die Escape-Funktion läuft. Die Lösung besteht darin, solange zu unescapen, bis die Ausgabe stabil bleibt. Den doppelt kodierten String in den Unescape-Modus dieses Tools einfügen und bei verbleibenden &-Referenzen erneut ausführen. Um Doppelkodierung zu verhindern, vor dem Escapen prüfen, ob die Eingabe bereits escapt ist.
Kann ich HTML-Entities in JavaScript-Strings verwenden?
HTML-Entities werden vom HTML-Parser interpretiert, nicht von der JavaScript-Engine. Innerhalb eines Script-Blocks läuft der Code nachdem der HTML-Parser die Seite verarbeitet hat, sodass < in einem Script-Block zu < wird, bevor JavaScript es sieht. Bei Inline-Event-Handlern (onclick usw.) wird der Attributwert zunächst HTML-dekodiert und dann als JavaScript ausgeführt. In externen .js-Dateien haben Entities keine besondere Bedeutung und werden als wörtlicher Text behandelt.
Was ist der Unterschied zwischen htmlspecialchars und htmlentities in PHP?
htmlspecialchars() escapt nur die fünf Sonderzeichen (& < > " '), die die HTML-Struktur beeinflussen. htmlentities() escapt diese fünf sowie jedes Zeichen mit einer benannten HTML-Entity, etwa das Copyright-Zeichen und Buchstaben mit Akzenten. Für Sicherheitszwecke reicht htmlspecialchars() mit ENT_QUOTES aus. htmlentities() ist nützlich, wenn ASCII-sichere Ausgabe für Systeme benötigt wird, die kein UTF-8 verarbeiten können.
Reicht HTML-Escaping aus, um XSS zu verhindern?
HTML-Escaping verhindert XSS im häufigsten Fall: das Einfügen von nicht vertrauenswürdigem Text in HTML-Element-Inhalte oder Attributwerte. Es schützt jedoch nicht andere Injection-Kontexte. Das Einfügen von Benutzerdaten in einen Script-Block erfordert JavaScript-String-Escaping. Das Einfügen in ein Style-Attribut erfordert CSS-Escaping. Das Einfügen in ein URL-Attribut (href, src) erfordert URL-Validierung plus Kodierung. Eine vollständige XSS-Abwehr wendet kontextspezifisches Escaping an jedem Einfügepunkt an.