HTML-Entity-Encoder / Decoder/ & < > "

HTML-Sonderzeichen in Entities umwandeln und benannte/numerische Entities dekodieren — unverzichtbar zur XSS-Praevention.

Klartext / HTML
0 Zeichen
HTML-Entitäten
0 Zeichen
Häufige HTML-Entitäten
&&
<&lt;
>&gt;
"&quot;
'&#39;
©&copy;
®&reg;
&trade;
&nbsp;
&mdash;
&hellip;
«»&laquo;&raquo;

Hat dieses Tool Ihr Problem gelöst?

Was ist ein HTML-Encode/Decode-Tool

Ein HTML-Encode/Decode-Tool konvertiert zwischen Klartext und HTML-Entitäten. HTML-Entitäten sind spezielle Codes, die mit & beginnen und mit ; enden, um Sonderzeichen wie <, >, & und Anführungszeichen sicher in Webseiten darzustellen.

Gängige Anwendungsfälle

Code-Snippets anzeigen: < und > als &lt; und &gt; encodieren. XSS-Angriffe verhindern: Benutzereingaben vor der Anzeige encodieren. E-Mail-Vorlagen: Sonderzeichen sicher in HTML-E-Mails anzeigen.

Codebeispiele

JavaScript (Browser)
// Encode using a temporary DOM element (browser only)
function htmlEncode(str) {
  const div = document.createElement('div');
  div.appendChild(document.createTextNode(str));
  return div.innerHTML;
}

// Decode
function htmlDecode(str) {
  const div = document.createElement('div');
  div.innerHTML = str;
  return div.textContent ?? div.innerText;
}

// Manual encode (works in Node.js too)
const escapeHtml = (s) => s
  .replace(/&/g, '&amp;')
  .replace(/</g, '&lt;')
  .replace(/>/g, '&gt;')
  .replace(/"/g, '&quot;')
  .replace(/'/g, '&#39;');
Python
import html

# Encode (escape)
html.escape('<script>alert("xss")</script>')
# '&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'

# Encode including single quotes
html.escape("it's", quote=True)
# 'it&#x27;s'

# Decode (unescape)
html.unescape('&lt;b&gt;Hello &amp; World&lt;/b&gt;')
# '<b>Hello & World</b>'
Go
import "html"

// Encode
html.EscapeString("<script>alert('xss')</script>")
// "&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;"

// Decode
html.UnescapeString("&lt;b&gt;Hello &amp; World&lt;/b&gt;")
// "<b>Hello & World</b>"

// In templates (auto-escaped)
import "html/template"
t := template.Must(template.New("").Parse(
    "<p>{{.}}</p>"))
t.Execute(os.Stdout, "<b>Hello</b>")
// <p>&lt;b&gt;Hello&lt;/b&gt;</p>
PHP / Twig
<?php
// Encode
htmlspecialchars('<b>Hello</b> & "World"', ENT_QUOTES, 'UTF-8');
// '&lt;b&gt;Hello&lt;/b&gt; &amp; &quot;World&quot;'

// Decode
htmlspecialchars_decode('&lt;b&gt;Hello&lt;/b&gt;');
// '<b>Hello</b>'

// All HTML entities (including named ones)
htmlentities('© 2025 — Café', ENT_QUOTES, 'UTF-8');
// '&copy; 2025 &mdash; Caf&eacute;'

// Twig (auto-escaped by default)
// {{ user_input }}        ← auto-escaped
// {{ user_input|raw }}    ← raw HTML (unsafe!)

Haeufig gestellte Fragen

Warum brauchen wir HTML-Entity-Kodierung?
Bestimmte Zeichen haben in HTML eine besondere Bedeutung: < und > fuer Tags, & fuer Entities, " fuer Attributwerte. Wenn Benutzereingaben direkt in HTML eingefuegt werden, interpretiert der Browser diese als HTML-Struktur, was zu XSS-Schwachstellen (Cross-Site-Scripting) fuehrt. Das Escaping zu &lt;, &gt;, &amp;, &quot; bewirkt, dass der Browser sie als Text anzeigt, anstatt Code auszufuehren.
Was ist der Unterschied zwischen benannten und numerischen HTML-Entities?
Benannte Entities verwenden einpraegsame Namen: &amp; (&), &copy; (©), &nbsp; (geschuetztes Leerzeichen). Numerische Entities verwenden den Unicode-Codepunkt: dezimal &#169; oder hexadezimal &#xA9; (beide bedeuten ©). Benannte Entities existieren nur fuer in der HTML-Spezifikation definierte Zeichen; numerische Entities koennen jedes Unicode-Zeichen darstellen.
Welche 5 Zeichen sind bei der HTML-Kodierung am wichtigsten?
Die wesentlichen 5: & → &amp; (muss zuerst kodiert werden, sonst werden andere Entities beschaedigt), < → &lt;, > → &gt;, " → &quot; (in Attributwerten), ' → &#39; oder &apos; (in Attributwerten). Andere Zeichen (CJK, ©, € usw.) muessen nicht kodiert werden — moderne Browser unterstuetzen UTF-8 vollstaendig.
Was ist &nbsp; und wann sollte ich es verwenden?
&nbsp; ist ein geschuetztes Leerzeichen (U+00A0). Im Gegensatz zu normalen Leerzeichen: 1) Der Browser bricht die Zeile nicht bei einem &nbsp; um. 2) Mehrere &nbsp;-Zeichen werden nicht zu einem zusammengefasst (HTML fasst normalerweise aufeinanderfolgende Leerzeichen zusammen). Verwenden Sie es fuer feste Abstaende — z.B. zwischen Zahl und Einheit '100&nbsp;km' oder um einen Umbruch innerhalb eines Ausdrucks zu verhindern.
Kodieren React und Vue Inhalte automatisch in HTML?
Ja. React JSX und Vue-Templates escapen standardmaessig alle interpolierten Werte. In React kodiert <div>{userInput}</div> Sonderzeichen automatisch — nur dangerouslySetInnerHTML umgeht dies (mit aeusserster Vorsicht verwenden). In Vue wird {{ userInput }} automatisch escaped; nur die v-html-Direktive fuegt rohes HTML ein.
Was ist der Unterschied zwischen HTML-Kodierung und URL-Kodierung?
HTML-Entity-Kodierung (&amp;, &lt; usw.) escaped Sonderzeichen im HTML-Dokumentkontext, um Mehrdeutigkeiten beim HTML-Parsing zu vermeiden. URL-Kodierung (%26, %3C usw.) escaped Nicht-ASCII- und reservierte Zeichen im URL/URI-Kontext. Sie dienen unterschiedlichen Zwecken. Bei einem href-Attribut: Zuerst den Wert URL-kodieren, dann das gesamte Attribut HTML-Entity-kodieren.