Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Server & Netzwerk 01.10.2026 · 10 min Lesezeit

URL-Encoder und -Parser: URLs kodieren, dekodieren und sauber zerlegen

Prozent-Kodierung, Formulardaten, doppelt kodierte Links und Punycode: So nutzen Sie den URL-Encoder und -Parser auf s-edv.com, entfernen Tracking-Parameter und prüfen jedes Ergebnis im Terminal mit Python.

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Illustration des URL-Encoders und -Parsers mit Eingabefeld und zerlegter Adresse

Ein Suchbegriff mit Umlaut, eine Weiterleitungsadresse als Parameter, ein Link aus dem Newsletter voller utm-Anhängsel: Im Admin-Alltag landen ständig URLs auf dem Tisch, die erst lesbar oder sauber gemacht werden müssen. Der URL-Encoder und -Parser auf s-edv.com/tools/url erledigt zwei Aufgaben: Er wandelt Text in Prozent-Kodierung um und zurück, und er zerlegt eine komplette Adresse in Schema, Host, Port, Pfad, Parameter und Fragment. Diese Anleitung richtet sich an Administratoren, Webverantwortliche und Entwickler in kleinen und mittleren Unternehmen, die Weiterleitungen, Proxy-Regeln, API-Aufrufe oder Kampagnenlinks prüfen. Sie zeigt jede Funktion so, wie sie im Browser tatsächlich arbeitet, und wie Sie das Ergebnis im Terminal gegenprüfen.

Voraussetzungen

Sie brauchen wenig, und das meiste davon ist ohnehin vorhanden:

  • Einen aktuellen Browser (Chrome, Edge, Firefox oder Safari) mit aktiviertem JavaScript. Eine Anmeldung ist nicht nötig.
  • Für die Gegenprobe ein Terminal mit Python 3, etwa auf einem Linux-Server, unter macOS oder in WSL unter Windows. Das Modul urllib.parse gehört zur Standardbibliothek, es muss nichts installiert werden.
  • Grundwissen zum Aufbau einer URL: Schema, Host, Pfad, Query-String nach dem Fragezeichen und Fragment nach der Raute.
  • Wenn Sie Ergebnisse direkt einsetzen wollen: Zugriff auf die Konfiguration Ihres Reverse Proxys, Ihres Webservers oder auf die DNS-Zone, etwa für Umlaut-Domains.

Kurz zur Grundlage: Eine URL darf nur einen begrenzten Zeichenvorrat enthalten (RFC 3986). Buchstaben ohne Akzent, Ziffern und - . _ ~ sind überall erlaubt. Zeichen wie / ? # & = haben eine feste Aufgabe als Trenner. Soll so ein Zeichen als normaler Text in einem Wert stehen, wird es prozent-kodiert: Aus jedem Byte wird ein Prozentzeichen mit zwei Hexziffern. Umlaute werden erst in UTF-8-Bytes zerlegt, aus ö wird so %C3%B6.

Schritt 1: Tool öffnen und den passenden Modus wählen

Öffnen Sie s-edv.com/tools/url. Oben stehen die Hinweise „Läuft komplett in Ihrem Browser“, „Keine Daten an einen Server“ und „Ohne Anmeldung, ohne Tracking“. Darunter wählen Sie einen der beiden Reiter: „Kodieren / Dekodieren“ für Texte und Werte, „URL zerlegen“ für vollständige Adressen. Die Adresszeile merkt sich nur den Modus, beim Zerlegen steht dort etwa #m=parse, nie Ihr Text.

Im Reiter „Kodieren / Dekodieren“ legen Sie unter „Prozent-Kodierung“ die Art fest. Das Tool zeigt zu jeder Variante eine Erklärzeile:

AuswahlEntsprichtEinsatz
„Parameterwert“encodeURIComponenteinzelne Werte und Pfadsegmente, kodiert auch / ? & = # und +
„Ganze URL“encodeURIkomplette Adresse, Strukturzeichen bleiben stehen
„Formular (+)“application/x-www-form-urlencodedFormulardaten, Leerzeichen werden zu +

Verifizieren: Nach einem Klick auf „Ganze URL“ wechselt die Erklärzeile auf „encodeURI: für eine komplette Adresse. Zeichen mit Bedeutung in URLs wie / ? & = # bleiben stehen.“ Steht dort noch der Text zu encodeURIComponent, ist die Auswahl nicht übernommen.

Schritt 2: Einen Parameterwert kodieren

Der häufigste Fall: Ein Wert soll in eine URL, etwa ein Firmenname für eine Suchabfrage oder eine Rücksprungadresse für ein Login. Lassen Sie „Parameterwert“ ausgewählt und tippen Sie den Text in das Feld „Klartext“. Das Feld „Kodiert“ füllt sich ohne Klick, unter beiden Feldern erscheint die Zeichenzahl. Im Test wurde aus Größe & Preis / 50% + mehr?#x ~ü€ mit 33 Zeichen dieser Wert:

Gr%C3%B6%C3%9Fe%20%26%20Preis%20%2F%2050%25%20%2B%20mehr%3F%23x%20~%C3%BC%E2%82%AC

Mit „Ganze URL“ bleiben dagegen &, /, +, ? und # stehen (Gr%C3%B6%C3%9Fe%20&%20Preis%20/%2050%25%20+%20mehr?#x...), mit „Formular (+)“ werden Leerzeichen zu + und die Tilde zu %7E. Genau deshalb ist „Ganze URL“ für einzelne Werte ungeeignet: Ein & im Wert würde einen neuen Parameter beginnen, ein # alles Folgende zum Fragment machen. Die Vorlage „Umlaute & Sonderzeichen“ füllt einen Beispieltext ein, wenn Sie das Verhalten erst ansehen wollen.

Praxisbeispiel: Ein Login soll nach der Anmeldung auf https://s-edv.com/?a=1 zurückspringen. Kodiert als Parameterwert wird daraus https%3A%2F%2Fs-edv.com%2F%3Fa%3D1, und erst dieser Wert gehört hinter ?redirect=.

Verifizieren: Prüfen Sie das Ergebnis mit Python. Die Ausgabe muss Zeichen für Zeichen mit dem Feld „Kodiert“ übereinstimmen.

python3 -c 'import urllib.parse as u; print(u.quote("Größe & Preis / 50% + mehr?#x ~ü€", safe="~"))'
# Gr%C3%B6%C3%9Fe%20%26%20Preis%20%2F%2050%25%20%2B%20mehr%3F%23x%20~%C3%BC%E2%82%AC

Für „Formular (+)“ ist u.quote_plus(text, safe="") das Gegenstück; dort kodiert Python die Tilde nicht, das Tool schon. Beides ist gültig, Server lesen %7E und ~ gleich.

Schritt 3: Kodierten Text lesen und Fehler erkennen

Zum Dekodieren fügen Sie den kodierten Text in das Feld „Kodiert“ ein; der Klartext erscheint oben, darunter steht „Dekodiert“. Die Vorlage „Kodierten Link lesen“ zeigt das an einer kodierten Such-URL, aus der https://www.example.com/suche?q=grüße&seite=2 wird.

Wichtig ist der Schalter „„+“ beim Dekodieren als Leerzeichen lesen“. Ist er aus, bleibt ein Pluszeichen stehen: Gr%C3%B6%C3%9Fe+%26+Preis ergibt Größe+&+Preis, und das Tool weist darauf hin, dass + in Formulardaten und Query-Strings meist für ein Leerzeichen steht. Mit eingeschaltetem Schalter erhalten Sie Größe & Preis. Die Vorlage „Formulardaten“ schaltet ihn automatisch ein und wählt „Formular (+)“.

Drei Sonderfälle meldet das Tool selbst:

  • Doppelt kodiert: Bei %25 mit zwei Hexziffern erscheint „Vermutlich doppelt kodiert“ samt Vorschau des zweimal dekodierten Ergebnisses und dem Knopf „Nochmals dekodieren“. Die Vorlage „Doppelt kodiert“ macht aus Caf%25C3%25A9%2520M%25C3%25BCnchen nach einem Klick Café München.
  • Kaputte %-Folgen: Bei 50%-Rabatt%2 lautet die Meldung „Ungültige %-Folge: „%-R“ an Stelle 3, „%2“ an Stelle 11. Diese Stellen bleiben unverändert.“
  • Latin-1 statt UTF-8: caf%E9 oder %FC ergeben die Meldung, dass die Bytes kein gültiges UTF-8 bilden; die Stellen erscheinen als Ersatzzeichen �.

Verifizieren: Python liefert dieselben Ergebnisse, auch das Ersatzzeichen bei Latin-1-Bytes:

python3 -c 'import urllib.parse as u; s="Caf%25C3%25A9%2520M%25C3%25BCnchen"; print(u.unquote(u.unquote(s)))'
# Café München
python3 -c 'import urllib.parse as u; print(u.unquote_plus("Gr%C3%B6%C3%9Fe+%26+Preis"), u.unquote("caf%E9"))'
# Größe & Preis caf�

Mit „Leeren“ setzen Sie beide Felder zurück und die Auswahl wieder auf „Parameterwert“.

Schritt 4: Eine URL zerlegen

Wechseln Sie auf den Reiter „URL zerlegen“ und fügen Sie die Adresse in „URL eingeben“ ein. Fehlt das Schema, nimmt das Tool https:// an und sagt das ausdrücklich („Ohne Schema angegeben“). Oben steht „Gültige URL“ mit dem Host, darunter die Tabelle „Bestandteile“: Schema mit dem Zusatz „verschlüsselt über TLS“ oder „unverschlüsselt“, Host, Port mit Hinweis wie „Standardport, nicht angegeben“ oder „abweichend vom Standardport 80“, Origin, Pfad, Query und Fragment mit dem Vermerk „wird nicht an den Server gesendet“. Neben den Werten liegen Kopierknöpfe.

Vier Vorlagen zeigen die Spezialfälle: „Mit Tracking“, „Umlaut-Domain“, „Mit Zugangsdaten“ und „IPv6 und Port“. Bei der IPv6-Vorlage http://[2001:db8::1]:8080/api/v1/status?format=json&pretty erkennt das Tool „IPv6-Adresse“ und Port 8080. Bei einer Umlaut-Domain zeigt es den Host als Punycode und zusätzlich „Host (Unicode)“: münchen.de steht im DNS als xn--mnchen-3ya.de. Genau diese ASCII-Form gehört in Zonendateien, Zertifikatsanträge und Server-Blöcke.

Das Tool normalisiert wie der Browser. Aus HTTPS://EXAMPLE.com/A/../b/./c?x=1&x=2 wird https://example.com/b/c?x=1&x=2; das ist nützlich, wenn eine Proxy-Regel auf einen Pfad passen soll, den der Client vorher bereinigt.

Verifizieren: Punycode und Bestandteile lassen sich gegenprüfen, Port und Zugangsdaten stehen bei Python im Feld netloc:

python3 -c 'print("münchen".encode("idna"))'
# b'xn--mnchen-3ya'
python3 -c 'import urllib.parse as u; print(u.urlsplit("ftp://benutzer:geheim@files.example.com:2121/pub/archiv%202026/liste.txt"))'

Schritt 5: Parameter bearbeiten, Tracking entfernen, URL neu bauen

Unter „Query-Parameter“ steht die Anzahl in Klammern und je Parameter eine Zeile mit Name und Wert. Sie können Werte direkt ändern, mit dem Knopf am Zeilenende einzelne Parameter entfernen und über „Parameter hinzufügen“ neue anlegen. Werte tippen Sie im Klartext; das Tool kodiert sie beim Zusammensetzen selbst. Im Test wurde aus dem Wert rot & grün korrekt farbe=rot%20%26%20gr%C3%BCn, ein neuer Parameter ref mit einer URL als Wert landete vollständig kodiert in der Adresse.

Die Vorlage „Mit Tracking“ zeigt das typische Newsletter-Beispiel. Das Tool kennzeichnet Zeilen wie utm_source, utm_medium, utm_campaign und fbclid als „Tracking-Parameter“, der Knopf heißt dann „Tracking entfernen (4)“. Im Test erkannte das Tool zusätzlich gclid, msclkid, utm_term und mc_eid; der Google-Analytics-Linker _ga blieb stehen. Prüfen Sie also vor dem Weitergeben, ob noch Reste übrig sind.

Unter „Neu zusammengesetzte URL“ steht das Ergebnis mit dem Vermerk „Geändert gegenüber der Eingabe. Unveränderte Parameter behalten ihre ursprüngliche Schreibweise.“ Mit „Kopieren“ übernehmen Sie es in die Zwischenablage, mit „In Eingabe übernehmen“ wird es zur neuen Eingabe, damit Sie weiter zerlegen können.

Verifizieren: Rufen Sie die bereinigte Adresse einmal auf und vergleichen Sie den Inhalt mit dem Original; in aller Regel ist er identisch. Für eigene Dienste prüfen Sie mit curl, ob der Server dieselbe Antwort liefert:

curl -sI "https://www.example.com/produkte/wanderschuhe?farbe=blau&seite=2" | head -n 1

Typische Fehler

  • Ganze URL statt Parameterwert: Ein Wert mit & oder = wird mit „Ganze URL“ nicht geschützt. Der Server schneidet ihn am & ab. Werte immer einzeln mit „Parameterwert“ kodieren.
  • Plus ohne Schalter dekodiert: Aus Query-Strings entsteht Größe+&+Preis. Schalter „„+“ beim Dekodieren als Leerzeichen lesen“ einschalten.
  • %2520 in Logs: Weiterleitungen, die bereits kodierte Werte erneut kodieren. Das Tool zeigt „Vermutlich doppelt kodiert“; die Ursache liegt meist in der Proxy- oder Rewrite-Regel, etwa wenn nginx den Pfad dekodiert und ein Backend ihn wieder kodiert.
  • „Ungültige %-Folge“: Ein einzelnes Prozentzeichen wie in „50% Rabatt“ wurde nicht als %25 kodiert. Viele Programme brechen hier ab, JavaScript etwa mit „URIError: URI malformed“.
  • „Keine gültige URL. Prüfen Sie Schema, Host und Sonderzeichen.“: Erscheint bei https:// ohne Host, bei einem Port über 65535 oder einer IPv4 wie 300.1.1.1.
  • Gültig heißt nicht erreichbar: Das Tool prüft nur die Schreibweise. Auch nur text ohne punkt oder ein Host mit Leerzeichen erscheinen als „Gültige URL“, weil der Browser sie kodiert. Ob der Name auflöst, klären Sie mit dig +short HOST.
  • Zugangsdaten in der Adresse: Das Tool warnt, dass solche Adressen in Verlauf, Protokolldateien und Chats landen. Zugangsdaten getrennt übergeben.

Häufige Fragen

Wann nehme ich %20 und wann + für Leerzeichen?

%20 ist überall korrekt. + bedeutet nur in Formulardaten und Query-Strings ein Leerzeichen, im Pfad bleibt es ein Pluszeichen. Im Zweifel ist %20 die sichere Wahl.

Werden meine Eingaben an s-edv.com übertragen?

Laut Seite nein, Kodieren, Dekodieren und Zerlegen laufen per JavaScript im Browser. Im Test blieb die Zahl der geladenen Ressourcen während aller Eingaben gleich. Für echte Geheimnisse wie Tokens in URLs sollten Sie trotzdem die Terminalbefehle aus dieser Anleitung nutzen.

Ist das dasselbe wie Base64?

Nein. Prozent-Kodierung ersetzt nur problematische Zeichen, Text bleibt lesbar. Base64 wandelt beliebige Daten in 64 Zeichen um, etwa für Anhänge oder Schlüssel; dafür gibt es den Base64-Konverter.

Warum zeigt das Tool die Domain als xn--?

Internationalisierte Domains stehen im DNS als Punycode (RFC 3492). Browser rechnen die Umlautform beim Aufruf um, DNS-Einträge, Zertifikate und Webserver-Konfiguration brauchen dagegen die xn--Form.

Taugt das Tool für API-Aufrufe?

Zum Zusammenbauen und Prüfen einzelner Aufrufe ja. Wer Aufrufe speichern, mit Headern versehen und wiederholen will, nimmt einen API-Client wie Hoppscotch.

Testumfang

Das Tool wurde am 1. Oktober 2026 in einem aktuellen Chromium mit allen drei Kodierarten, allen Vorlagen, Fehleingaben und dem Zerlegen von acht Beispieladressen ausprobiert. Die Ergebnisse für Kodieren, doppeltes Dekodieren, Formulardaten und Punycode stimmten mit Pythons urllib.parse und dem IDNA-Codec überein. Die Netzwerkzugriffe wurden vor und nach den Eingaben verglichen.

Fazit

Der URL-Encoder und -Parser deckt die drei wichtigsten Alltagsaufgaben ab: Werte richtig kodieren, fremde Links lesbar machen und Adressen sauber zerlegen. Stark sind die Hinweise auf doppelte Kodierung, kaputte %-Folgen und Latin-1-Reste, denn genau diese Fehler kosten bei Weiterleitungen und Proxy-Regeln die meiste Zeit. Merken Sie sich zwei Regeln: Einzelne Werte immer als „Parameterwert“ kodieren, und „Gültige URL“ bedeutet nur korrekte Schreibweise, nicht Erreichbarkeit. Für Skripte und Geheimnisse bleibt Python im Terminal der zuverlässige Partner.

Weiterführende Anleitungen und Quellen

URLProzent-KodierungPunycodeToolsWebserver