Warum URLs kodiert werden
Eine URL darf nur eine begrenzte Menge von Zeichen enthalten. Buchstaben ohne Akzent, Ziffern und die vier Zeichen - . _ ~ sind überall erlaubt. Andere Zeichen wie / ? # & = haben eine feste Bedeutung: Sie trennen Pfad, Query-String, Parameter und Fragment. Soll ein solches Zeichen als normaler Text in einem Wert stehen, wird es prozent-kodiert: Aus dem Byte wird ein % mit zwei Hex-Ziffern. Umlaute und andere Nicht-ASCII-Zeichen werden zuerst in UTF-8-Bytes zerlegt und dann Byte für Byte kodiert – aus ö wird so %C3%B6.
| Zeichen | kodiert | Bedeutung in der URL |
|---|---|---|
| Leerzeichen | %20 bzw. + in Formulardaten | nicht erlaubt |
& | %26 | trennt Parameter |
= | %3D | trennt Name und Wert |
? | %3F | beginnt den Query-String |
# | %23 | beginnt das Fragment |
/ | %2F | trennt Pfadsegmente |
+ | %2B | in Formulardaten ein Leerzeichen |
% | %25 | leitet eine Kodierung ein |
ä / € | %C3%A4 / %E2%82%AC | UTF-8-Bytes |
Die drei Arten der Kodierung
Parameterwert entspricht der JavaScript-Funktion encodeURIComponent. Sie kodiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ). Das ist die richtige Wahl für einzelne Werte, die Sie in eine URL einsetzen – etwa einen Suchbegriff oder eine Weiterleitungsadresse als Parameter.
Ganze URL entspricht encodeURI. Hier bleiben die Strukturzeichen ; , / ? : @ & = + $ # stehen, damit die Adresse funktionsfähig bleibt; kodiert werden vor allem Leerzeichen und Umlaute. Für einzelne Werte ist das ungeeignet: Ein & im Wert würde sonst einen neuen Parameter beginnen.
Formular ist das Format application/x-www-form-urlencoded, mit dem HTML-Formulare Daten senden. Leerzeichen werden zu +, ein echtes Pluszeichen zu %2B. Beim Dekodieren eines Query-Strings sollten Sie + deshalb meist als Leerzeichen lesen. Auf der Kommandozeile gibt es dieselben Funktionen, zum Beispiel in Python:
python3 -c 'import urllib.parse as u; print(u.quote("Größe & Preis", safe=""))'
# Gr%C3%B6%C3%9Fe%20%26%20Preis
python3 -c 'import urllib.parse as u; print(u.unquote_plus("Gr%C3%B6%C3%9Fe+%26+Preis"))'
# Größe & Preis
Typische Fehler: doppelt kodiert und kaputte %-Folgen
Wird ein bereits kodierter Text noch einmal kodiert, entsteht aus %20 die Folge %2520 – das Prozentzeichen selbst wurde kodiert. Solche Adressen sieht man häufig, wenn Weiterleitungen, Tracking-Dienste oder Skripte einen Link mehrfach verarbeiten. Das Tool erkennt die typische Folge %25 mit zwei Hex-Ziffern und bietet an, ein zweites Mal zu dekodieren.
Umgekehrt führt ein einzelnes %, auf das keine zwei Hex-Ziffern folgen, in vielen Programmen zu einem Fehler (in JavaScript etwa „URIError: URI malformed“). Das Tool dekodiert trotzdem alles Gültige und nennt die fehlerhaften Stellen. Stammen die Bytes aus einer alten Latin-1-Kodierung (%FC statt %C3%BC für ü), ergibt sich kein gültiges UTF-8; diese Stellen erscheinen als Ersatzzeichen.
URLs zerlegen, Tracking entfernen, Umlaut-Domains
Im Modus „URL zerlegen“ sehen Sie Schema, Zugangsdaten, Host, Port, Pfad, Query-Parameter und Fragment einzeln. Parameter lassen sich in der Tabelle ändern, löschen und ergänzen; daraus entsteht sofort die neue Adresse. Das Fragment hinter # wertet nur der Browser aus, es wird nicht an den Server gesendet. Beim Einrichten von Weiterleitungen und Proxy-Regeln hilft diese Sicht, etwa zusammen mit den Anleitungen Nginx als Reverse Proxy mit TLS einrichten und Traefik als Docker-Reverse-Proxy mit HTTPS. API-Aufrufe mit vielen Parametern testen Sie bequem mit Hoppscotch.
Parameter wie utm_source, fbclid, gclid oder msclkid dienen der Kampagnen- und Klickmessung. Sie werden markiert und lassen sich mit einem Klick entfernen, bevor Sie einen Link weitergeben. In aller Regel zeigt die Seite ohne sie denselben Inhalt.
Domains mit Umlauten wie münchen.de stehen im DNS in der ASCII-Form Punycode (RFC 3492) mit dem Präfix xn--: xn--mnchen-3ya.de. Browser wandeln die Adresse beim Aufruf automatisch um. Das Tool zeigt beide Schreibweisen, damit Sie etwa in DNS-Einträgen oder Zertifikaten die richtige Form verwenden.
Häufige Fragen
Wann nehme ich %20 und wann + für Leerzeichen?
%20 ist überall in einer URL korrekt. + steht nur in Formulardaten und Query-Strings für ein Leerzeichen, weil Server diese Teile üblicherweise nach dem Formular-Format lesen. Im Pfad bleibt ein + ein Pluszeichen. Im Zweifel ist %20 die sichere Wahl.
Warum wird mein & im Parameter abgeschnitten?
Ein unkodiertes & beendet den aktuellen Parameter. Der Wert Müller & Co. muss deshalb als M%C3%BCller%20%26%20Co. in die URL. Kodieren Sie Werte immer einzeln mit „Parameterwert“, bevor Sie sie zusammensetzen.
Ist ein Passwort in der URL sicher?
Nein. Adressen der Form https://benutzer:passwort@host landen im Browserverlauf, in Protokolldateien von Servern und Proxys und in kopierten Links. Das Tool warnt deshalb, wenn eine URL Zugangsdaten enthält.
Werden meine Eingaben übertragen?
Nein. Kodieren, Dekodieren und Zerlegen laufen per JavaScript in Ihrem Browser. Die Adresszeile merkt sich nur den gewählten Modus, nie Ihre Texte oder URLs.
Was ist der Unterschied zu Base64?
Prozent-Kodierung lässt normale Buchstaben lesbar und ersetzt nur problematische Zeichen. Base64 wandelt beliebige Daten in Text aus 64 verschiedenen Zeichen um, etwa für Anhänge oder Schlüssel. Dafür gibt es den Base64-Konverter.