URL kodieren / dekodieren — Prozentkodierung und URL-Parser
Kodiere oder dekodiere Text für URLs per Prozentkodierung im Komponenten-, Voll-URL- oder Formularmodus und bearbeite die Query-Parameter einer URL in einer Tabelle.
encodeURIComponent: für einen einzelnen Query-Wert oder ein Pfadsegment. Kodiert alles außer A–Z a–z 0–9 - _ . ! ~ * ' ( ).
name%3DZo%C3%AB%20%26%20Tom%20%2F%20caf%C3%A9%3Fid%3D42%23top
URL-Parser und Query-String-Editor
| Protokoll | https: |
|---|---|
| Host | shop.example.com |
| Port | 8443 |
| Pfad | /search/trail%20shoes |
| Query | ?q=trail+running&size=10&color=blue%20%26%20green&utm_source=newsletter |
| Fragment | #reviews |
| Origin | https://shop.example.com:8443 |
https://shop.example.com:8443/search/trail%20shoes#reviews
Läuft komplett in deinem Browser. Nichts, was du eingibst, wird an uns gesendet oder gespeichert. Alle kostenlosen Tools ansehen.
Ein Problem gefunden oder etwas, das besser sein könnte? Wir lesen jede Nachricht und beheben Fehler schnell.
Dieser URL-Encoder und -Decoder wandelt Text in Prozentkodierung um und zurück – das Escaping im Stil von %20, mit dem Leerzeichen, kaufmännische Und-Zeichen, Umlaute und Emojis sicher in einer URL transportiert werden. Er bietet die drei Kodierungen, die Entwickler tatsächlich verwechseln: den Komponentenmodus für einen einzelnen Query-Wert oder ein Pfadsegment (encodeURIComponent), den Voll-URL-Modus, der die URL-eigenen Satzzeichen in Ruhe lässt (encodeURI), und den Formularmodus, den HTML-Formulare und URLSearchParams senden, mit + für ein Leerzeichen.
Das Dekodieren ist absichtlich streng. Wo decodeURIComponent im Browser einfach „URI malformed“ wirft, sagt dir dieses Tool, welche %-Sequenz wo kaputt ist und ob die Bytes kein gültiges UTF-8 sind (ein häufiges Zeichen dafür, dass vorher irgendwo Latin-1 im Spiel war). Unter dem Encoder zerlegt der URL-Parser jede URL in ihre Bestandteile und listet die Query-Parameter in einer bearbeitbaren Tabelle auf, die die URL bei jeder Änderung neu zusammensetzt.
So funktioniert’s
- Wähle Kodieren oder Dekodieren und dann den Modus: Komponente für einen Wert, den du in eine URL einsetzt, Volle URL für eine ganze Adresse, Formular für Daten im Format application/x-www-form-urlencoded.
- Tippe oder füge Text ein. Das Ergebnis aktualisiert sich beim Tippen; setze für eine Liste das Häkchen bei „Jede Zeile einzeln“.
- Schlägt das Dekodieren fehl, lies die Meldung: Sie nennt die Position und die kaputte Sequenz.
- Um eine URL zu prüfen oder zu bearbeiten, füge sie in den Parser ein, ändere, ergänze oder entferne Query-Parameter und kopiere die neu zusammengesetzte URL.
Häufige Fragen
Was ist der Unterschied zwischen encodeURI und encodeURIComponent?
encodeURIComponent maskiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ) und ist damit sicher für ein einzelnes Stück einer URL, etwa einen Query-Wert, der & oder = enthalten könnte. encodeURI geht davon aus, dass du ihm eine ganze URL gibst, und lässt die Zeichen unangetastet, die eine URL strukturieren (: / ? # @ & = + $ , ;). encodeURI auf einen Wert anzuwenden ist ein klassischer Fehler: Ein & im Wert teilt ihn dann in zwei Parameter.
Ist ein Leerzeichen %20 oder +?
Beides ist richtig, an unterschiedlichen Stellen. Im Query-String eines Formularversands (application/x-www-form-urlencoded) ist ein Leerzeichen +, und ein echtes Plus muss %2B sein. Überall sonst, auch im Pfad und in den meisten von Hand gebauten Query-Strings, ist ein Leerzeichen %20, und + bedeutet ein echtes Plus. Zeigt ein Server Pluszeichen, wo Leerzeichen sein sollten, oder umgekehrt, sind sich beide Seiten uneinig, welche Regel gilt.
Warum bekomme ich den Fehler „URI malformed“?
Entweder folgen auf ein %-Zeichen keine zwei Hexadezimalziffern (zum Beispiel „100%“ oder „%zz“), oder die Bytes ergeben ungültiges UTF-8, etwa %E9 allein, das in Latin-1 ein é ist, in UTF-8 aber nicht. Ein echtes Prozentzeichen muss als %25 geschrieben werden. Dieses Tool meldet die genaue Position, damit du siehst, welcher Fall vorliegt.
Welche Zeichen müssen in einer URL kodiert werden?
RFC 3986 erlaubt nur Buchstaben, Ziffern und - . _ ~ überall unkodiert. Reservierte Zeichen (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) müssen kodiert werden, wenn sie in einem Wert und nicht als Struktur vorkommen. Alles andere, auch Leerzeichen, Anführungszeichen, < >, nicht-ASCII-Buchstaben und Emojis, muss immer kodiert werden, und zwar als UTF-8-Bytes des Zeichens.
Ist URL-Kodierung eine Form von Verschlüsselung?
Nein. Prozentkodierung ist ein umkehrbares Escaping ohne Schlüssel; jeder kann es sofort dekodieren. Verlass dich nie darauf, um einen Token oder personenbezogene Daten in einer URL zu verstecken. Denk außerdem daran, dass URLs im Browserverlauf, in Serverlogs und in Referer-Headern landen – Geheimnisse gehören also gar nicht erst in Query-Strings.
Kodierungsreferenz: Was jeder Modus unverändert lässt
• Komponente (encodeURIComponent): lässt A–Z a–z 0–9 - _ . ! ~ * ' ( ) stehen. Für Query-Werte, Pfadsegmente und alles, was per Verkettung zusammengesetzt wird.
• Volle URL (encodeURI): lässt zusätzlich ; , / ? : @ & = + $ # stehen. Nur verwenden, um eine vollständige URL mit Leerzeichen oder nicht-ASCII-Zeichen zu bereinigen.
• Formular (application/x-www-form-urlencoded): lässt A–Z a–z 0–9 * - . _ stehen und macht aus Leerzeichen +. Das erzeugen URLSearchParams.toString() und HTML-Formulare.
• Nicht reservierte Zeichen nach RFC 3986: A–Z a–z 0–9 - . _ ~. Die strengste Auslegung; auch ! ' ( ) * zu kodieren ist immer sicher.
Nicht-ASCII-Zeichen werden immer als ihre UTF-8-Bytes kodiert: é ist %C3%A9, und das Emoji 🌲 besteht aus vier Bytes, %F0%9F%8C%B2.
Doppelte Kodierung und andere häufige Fehler
Doppelte Kodierung entsteht, wenn ein bereits kodierter String erneut kodiert wird: Aus %20 wird %2520, weil das % selbst zu %25 maskiert wird. Siehst du in einer URL %25 gefolgt von zwei Hexadezimalziffern, wurde etwas zweimal kodiert. Dekodiere einmal und prüfe, ob das Ergebnis noch %-Sequenzen enthält.
Der umgekehrte Fehler ist, eine URL per String-Verkettung ganz ohne Kodierung zu bauen. Eine Suche nach „fish & chips“ sendet dann q=fish und einen verirrten Parameter namens „ chips“. Wer Query-Strings mit URLSearchParams baut oder jeden Wert mit encodeURIComponent kodiert, verhindert beides.
Und schließlich: Nutzereingaben zu dekodieren und dann in HTML einzufügen ist der Anfang von reflektiertem Cross-Site-Scripting. Dekodiere zur Anzeige erst nach dem Escaping für HTML; diesen Schritt übernimmt der HTML-Entity-Encoder.
Ähnliche kostenlose Tools
- UTM-Link-Builder — Erstelle saubere, einheitliche UTM-Tracking-Links, damit du genau weißt, welche Kampagnen dir Kunden bringen.
- Base64-Encoder / -Decoder — Kodiere Text oder Dateien in Base64, mach aus Bildern Data-URIs mit CSS- und <img>-Snippets und dekodiere Base64 zurück in eine Datei mit Vorschau. Nichts verlässt deinen Browser.
- HTML-Entity-Encoder — Escape Text für HTML mit benannten oder numerischen Entities, dekodiere Referenzen im Stil von & zurück in Zeichen und durchsuche eine Entity-Referenztabelle.
- JWT-Decoder — Dekodiere Header und Payload eines JWT, lies das Ablaufdatum in Klartext, prüfe HS-, RS-, PS- und ES-Signaturen oder signiere ein neues Token. Nichts verlässt deinen Browser.