Alle Tools laufen in deinem Browser — deine Dateien verlassen nie dein Gerät.
All tools154

Entwicklung

HTML-Entities umwandeln

HTML-Entities für Umlaute und Sonderzeichen.

Was es macht. Dieses Werkzeug wandelt Text in HTML-Entities um und wieder zurück. Für deutschsprachige Seiten gilt dabei eine Regel, die viele überrascht: Umlaute und ß sollten heute nicht mehr kodiert werden.
Läuft im BrowserKein UploadKeine AnmeldungFunktioniert offline

So benutzt du HTML-Entities umwandeln

  1. Füg deinen Text oder deine Entities ein.
  2. Wähl die Richtung der Umwandlung.
  3. Kopier das Ergebnis.

Umlaute gehören nicht mehr kodiert

Das ist der wichtigste Punkt für deutschsprachige Seiten und widerspricht einer weit verbreiteten Gewohnheit.

Schreibweisen wie ä für ä, ö für ö, ü für ü und ß für ß stammen aus einer Zeit, in der die Zeichenkodierung einer Seite unklar oder auf Latin-1 beschränkt war.

Heute nutzt praktisch jede Seite UTF-8. Damit kannst du ä, ö, ü und ß direkt schreiben, und sie werden überall korrekt dargestellt.

Voraussetzung ist nur zweierlei: Die Datei muss tatsächlich in UTF-8 gespeichert sein, und im Kopf der Seite muss die Zeichenkodierung deklariert sein. Fehlt die Deklaration, rät der Browser — und rät im Zweifel falsch.

Kodierte Umlaute haben handfeste Nachteile: Der Quelltext wird unleserlich, Suchen und Ersetzen funktioniert nicht mehr zuverlässig, und die Datei wird größer.

Wenn du also einen deutschen Text kodiert vorfindest, ist das Werkzeug hier vor allem nützlich, um ihn wieder zu entschlüsseln.

Was du wirklich kodieren musst

Nur eine Handvoll Zeichen hat in HTML eine syntaktische Bedeutung.

Was du wirklich kodieren musst
ZeichenEntityWann nötig
&&immer
<<immer
>>im Text empfohlen
""in Attributwerten
''in Attributwerten

Das kaufmännische Und ist der wichtigste Fall, weil es eine Entity einleitet. Ein rohes & in einer URL — etwa als Trennzeichen zwischen Parametern — muss als & geschrieben werden, sonst ist das HTML nicht valide.

Kleiner- und Größerzeichen sind der zweite Fall, weil sie Tags eröffnen und schließen.

Und genau hier liegt der sicherheitsrelevante Kern: Wenn du Text von Nutzern ausgibst, ist das Kodieren dieser Zeichen der Schutz gegen Cross-Site-Scripting. Wird eine Eingabe ungefiltert ins HTML geschrieben, kann sie ausgeführten Code enthalten.

Verlass dich dafür aber nicht auf ein Werkzeug wie dieses, sondern auf die Escaping-Funktion deines Frameworks oder deiner Template-Engine. Die kennt den Kontext — HTML-Text, Attribut, JavaScript, URL — und jeder Kontext braucht ein anderes Escaping.

Weitere nützliche Entities

Ein paar Zeichen, die sich als Entity lohnen, weil sie im Quelltext unsichtbar wären.

Das geschützte Leerzeichen   verhindert einen Zeilenumbruch an dieser Stelle. Im Deutschen ist das nützlich zwischen Zahl und Einheit — 5 kg — oder in Abkürzungen wie z. B., damit sie nicht getrennt werden.

Vorsicht allerdings:   wird oft missbraucht, um Abstände zu erzeugen. Dafür ist CSS zuständig.

Typografisch korrekte deutsche Anführungszeichen sind „ und “ — also die Form „so herum". Sie lassen sich auch direkt schreiben, wenn deine Umgebung das erlaubt.

Der Gedankenstrich ist im Deutschen ein Halbgeviertstrich, –, mit Leerzeichen darum — nicht der kurze Bindestrich.

Und schließlich unsichtbare Zeichen: Wenn beim Kopieren aus Word oder aus einer PDF-Datei merkwürdige Umbrüche entstehen, stecken oft geschützte Leerzeichen oder weiche Trennzeichen darin. Sie sichtbar zu machen ist ein guter Grund, Text hier einmal durchlaufen zu lassen.

Häufige Fragen

Muss ich Umlaute kodieren?

Nein. Mit UTF-8 schreibst du ä, ö, ü und ß direkt, sofern die Kodierung deklariert ist.

Welche Zeichen muss ich kodieren?

Vor allem & und <, in Attributwerten außerdem Anführungszeichen.

Warum ist das & so wichtig?

Weil es eine Entity einleitet. In URLs muss es als &amp; geschrieben werden.

Schützt Kodieren vor Cross-Site-Scripting?

Ja, aber nutz dafür das Escaping deines Frameworks, das den Kontext kennt.

Wann brauche ich &nbsp;?

Um Umbrüche zu verhindern, etwa zwischen Zahl und Einheit. Nicht für Abstände — dafür gibt es CSS.

Werden meine Daten übertragen?

Nein, alles läuft in deinem Browser.