URL-Encoder und -Decoder

Läuft in deinem Browser; nichts wird hochgeladen

Text für eine URL prozentkodieren, zurückdekodieren oder eine URL in ihre Teile und Query-Parameter zerlegen.

Text

Encodes everything except letters, digits and - _ . ! ~ * ' ( ). Use it for one query value or path segment.

Encoded

The encoded text appears here as you type.

Ready

Was ist URL-Kodierung?

URL-Kodierung, auch Prozentkodierung genannt (RFC 3986), ersetzt Zeichen, die in einer URL nicht erlaubt sind oder eine besondere Bedeutung haben, durch ein % mit zwei Hexadezimalziffern. Ein Leerzeichen wird zu %20, & zu %26 und / zu %2F. Andere Zeichen werden zuerst in UTF-8-Bytes umgewandelt, é wird also zu %C3%A9.

Das ist wichtig, weil manche Zeichen die URL selbst gliedern. ? leitet den Query-String ein, & trennt Parameter, = trennt einen Namen von seinem Wert und # leitet das Fragment ein. Enthält ein Suchbegriff ein & und wird nicht kodiert, liest der Server es als Beginn eines neuen Parameters.

Kodiere jeden Wert einzeln, nicht die ganze URL. Wenn du eine komplette URL als Wert kodierst, werden auch ihr ://, ihre / und ihr ? kodiert, und sie funktioniert nicht mehr; dafür gibt es den Modus für ganze URLs, wenn du in einer sonst korrekten URL nur Leerzeichen und Umlaute reparieren musst.

So benutzt du dieses Tool

  1. 1Wähle Encode, Decode oder Parse. Beim Wechseln bleibt dein Text erhalten; Swap (Alt+Shift+S) übernimmt die Ausgabe als Eingabe und wechselt zwischen Encode und Decode.
  2. 2Zum Kodieren wählst du, was der Text ist: ein Wert (encodeURIComponent), eine ganze URL (encodeURI) oder Formulardaten, bei denen Leerzeichen zu + werden. Die Zeile über dem Editor sagt genau, welche Zeichen jede Variante unverändert lässt.
  3. 3Zum Dekodieren fügst du den kodierten Text ein. Schalte + means space für Formulardaten und Query-Strings ein, die von HTML-Formularen kommen. Ist eine Sequenz fehlerhaft oder kein UTF-8, wird sie im Editor markiert, und F8 springt dorthin.
  4. 4Enthält das Ergebnis noch %XX, wurde der Text doppelt kodiert; Decode again in der Statusleiste dekodiert ihn ein weiteres Mal.
  5. 5Each line separately behandelt jede Zeile als eigenen Wert, für Wertelisten. Parse zerlegt eine URL in Schema, Host, Port, Pfad, Fragment und eine Tabelle der dekodierten Query-Parameter, die du als JSON kopieren kannst.

Fehlerbehebung

Auf % müssen zwei Hexadezimalziffern folgen
Der Text enthält ein echtes Prozentzeichen wie in 100% oder eine abgeschnittene Sequenz. Ein echtes Prozentzeichen schreibt man in einer URL als %25.
%E9 ist an dieser Stelle kein gültiges UTF-8
Der Text wurde von einem alten Encoder kodiert, der Latin-1 statt UTF-8 nutzte, deshalb wurde é zu %E9 statt %C3%A9. Kodiere den Originaltext neu oder bitte den Absender, UTF-8 zu verwenden.
Ein + wurde zum Leerzeichen, oder ein Leerzeichen blieb ein +
+ bedeutet nur in Formulardaten (application/x-www-form-urlencoded) ein Leerzeichen, etwa in einem Query-String, den ein HTML-Formular geschickt hat. Schalte + means space ein oder aus, je nachdem, woher der Text stammt.
Keine absolute URL
Parse braucht Schema und Host, etwa https://api.example.com. Pfade wie /users?page=2 sind relativ zu einer Seite und lassen sich nicht allein zerlegen.

Häufige Fragen

Was ist der Unterschied zwischen encodeURI und encodeURIComponent?

encodeURIComponent kodiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ) und ist daher richtig für einen einzelnen Wert. encodeURI lässt die Zeichen, die eine URL gliedern, wie : / ? # & = +, unangetastet und ist daher richtig für eine ganze URL, in der nur unsichere Zeichen repariert werden müssen.

Soll ein Leerzeichen %20 oder + sein?

In einem Pfad und in den meisten APIs nimmst du %20. + bedeutet nur in Formulardaten ein Leerzeichen, also in dem, was Browser bei HTML-Formularen schicken und was viele Query-Strings verwenden. Beim Dekodieren eines von einem Formular erzeugten Query-Strings schaltest du + means space ein.

Warum zeigt Parse eine andere URL als die eingefügte?

Parse nutzt den URL-Parser des Browsers, der die URL normalisiert: Er schreibt Schema und Host klein, entfernt einen Standardport wie :443 und prozentkodiert Leerzeichen und Nicht-ASCII-Zeichen. Copy URL kopiert diese normalisierte Form.

Wird meine Eingabe an einen Server geschickt?

Nein. Kodieren, Dekodieren und Zerlegen laufen in deinem Browser, und nichts Eingefügtes wird hochgeladen. Damit nach einem Neuladen nichts verloren geht, bleibt das Eingefügte im Session Storage dieses Tabs, bis du es löschst oder den Tab schließt. Copy link legt die Eingabe hinter das # im Link; diesen Teil schicken Browser nie an einen Server, aber jeder, dem du den Link gibst, kann sie lesen.