URL Encoder und Decoder

Acrafto Team Entwickler
Aktualisiert
Kodieren als

Für einen einzelnen Query-Wert oder ein Pfadsegment. Kodiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ), genau wie encodeURIComponent.

Ergebnis

Alles läuft in Ihrem Browser, nichts von dem, was Sie einfügen, wird hochgeladen. Das ist wichtig, denn URLs enthalten oft Tokens und Session-IDs.

URL kodieren und dekodieren online, schon während Sie tippen: Das Tool wandelt Leerzeichen, Umlaute und Sonderzeichen wie & oder ? in prozentkodierte Sequenzen wie %20 um und macht daraus wieder lesbaren Text. Der zweite Tab ist ein URL-Parser. Er zerlegt jede Adresse in Protokoll, Host, Pfad und Query-Parameter, die Sie bearbeiten, ausschalten oder von Tracking-Tags befreien können, und schreibt die korrekt kodierte URL für Sie zurück. Alles passiert in Ihrem Browser.

URL kodieren und dekodieren: so geht es

  1. Tippen oder fügen Sie Text in das Feld auf dem Tab Kodieren / Dekodieren ein. Das Ergebnis aktualisiert sich mit jedem Tastendruck.
  2. Wählen Sie die Richtung. Kodieren macht Text URL-tauglich, Dekodieren wandelt caf%C3%A9%20au%20lait zurück in café au lait. Fügen Sie Text mit Sequenzen wie %20 in das leere Feld ein, schaltet das Tool selbstständig auf Dekodieren um (Stattdessen kodieren schaltet zurück). Fügen Sie im Modus Dekodieren Klartext ein, der kodiert werden müsste, wechselt es genauso auf Kodieren, mit Stattdessen dekodieren.
  3. Wählen Sie beim Kodieren unter Kodieren als, was für ein Text es ist (siehe nächster Abschnitt). Die Voreinstellung Parameterwert passt für einen einzelnen Query-Wert.
  4. Kopieren legt das Ergebnis in die Zwischenablage. Tauschen verschiebt das Ergebnis in die Eingabe und dreht die Richtung um. So prüfen Sie schnell hin und zurück: Wenn Sie das gerade Kodierte dekodieren, muss wieder Ihr Originaltext herauskommen.

Jedes Zeichen, das das Tool verändert hat, ist im Ergebnis hervorgehoben. Fahren Sie mit der Maus darüber, sehen Sie das Zeichen, seinen Unicode-Codepoint und seine Bytes, zum Beispiel é U+00E9 %C3%A9. Unter den Feldern stehen die Zähler Zeichen, UTF-8-Bytes und Kodierte Zeichen (oder Dekodierte Zeichen). Beispiel ausprobieren lädt den Satz Preis: 50 % Rabatt auf Äpfel & Müsli? Gern!, der 43 Zeichen, aber 45 UTF-8-Bytes hat, weil jeder Umlaut zwei Bytes belegt.

Beim Kodieren kodiert Jede Zeile einzeln jede Zeile für sich und behält die Zeilenumbrüche bei, was für eine Liste von Werten oder Links praktisch ist. Ohne die Option wird auch ein Zeilenumbruch kodiert und zu %0A. Ist der Text eine URL mit Parametern, bietet das Tool In Bestandteile zerlegen an und öffnet die Adresse im Parser-Tab.

URL Encoder: Parameter, ganze URL oder Formulardaten kodieren

Nicht jedes Zeichen muss überall kodiert werden. Ein Schrägstrich trennt in einem Pfad die Ordner, ist aber in einem Parameterwert ganz normaler Inhalt. Das richtige Ergebnis hängt also davon ab, was Sie kodieren. Kodieren als bietet vier Modi:

  • Parameterwert arbeitet wie JavaScripts encodeURIComponent und passt für einen Query-Wert oder ein Pfadsegment. Es kodiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ), sodass ein &, =, / oder ? im Wert die URL nicht kaputt machen kann. Aus café & crème wird caf%C3%A9%20%26%20cr%C3%A8me, bereit für das Feld hinter q=.
  • Ganze URL ist für eine vollständige Adresse, die nur bereinigt werden muss. Sie kodiert Leerzeichen, Nicht-ASCII-Zeichen, Steuerzeichen, das Backtick-Zeichen und " < > \ ^ { | } und behält alles bei, was einer URL ihre Struktur gibt: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. So wird aus https://example.com/search?q=café au lait&lang=fr die Adresse https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Bereits kodierte Sequenzen bleiben unverändert, ein einzelnes % wird zu %25. Hier unterscheidet sie sich von JavaScripts encodeURI, das aus einem vorhandenen %20 ein %2520 macht und die Klammern einer IPv6-Adresse wie http://[2001:db8::1]:8080/ kodiert.
  • Formulardaten folgen dem Format application/x-www-form-urlencoded (in Englisch), das HTML-Formulare und URLSearchParams erzeugen. Ein Leerzeichen wird zu +, und nur Buchstaben, Ziffern und * - . _ bleiben unkodiert, ! ' ( ) ~ werden also ebenfalls kodiert.
  • Streng nach RFC 3986 lässt nur die unreservierten Zeichen aus RFC 3986 (in Englisch) unkodiert: Buchstaben, Ziffern und - . _ ~. OAuth 1.0 (RFC 5849) und AWS Signature Version 4 verlangen genau diese Form, denn eine Signatur stimmt nur, wenn beide Seiten ! oder * gleich kodieren.

Dieselben Zeichen in jedem Modus:

ZeichenParameterwertGanze URLFormulardatenStreng nach RFC 3986
Leerzeichen%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Text wird immer als UTF-8 kodiert, und die Hex-Ziffern sind immer Großbuchstaben. Enthält die Eingabe bereits Sequenzen wie %20, weist ein Hinweis darauf hin und bietet Stattdessen dekodieren an, damit Sie den Text nicht versehentlich zweimal kodieren.

Um JSON in einem Query-Parameter zu übergeben, minimieren Sie es im JSON-Formatter und kodieren es als Parameterwert: Aus {"id":7,"tags":["a","b"]} wird %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Auch der umgekehrte Weg funktioniert: Parameter hier dekodieren, dort formatieren.

URL dekodieren: Pluszeichen, %2520 und kaputte Sequenzen

Das Dekodieren einer URL klappt meistens ohne Probleme, aber in vier Situationen stolpern viele. Das Tool behandelt jede davon, statt mit einem Fehler abzubrechen:

  • Ein Pluszeichen steht in Formulardaten und in den meisten Query-Strings für ein Leerzeichen. + als Leerzeichen dekodieren ist standardmäßig aktiv, deshalb wird caf%C3%A9+au+lait zu café au lait. In einer ganzen URL zählen nur die Pluszeichen nach dem ? als Leerzeichen, denn in einem Pfad ist ein Plus ein gewöhnliches Zeichen. Schalten Sie die Option aus, wenn ein Pluszeichen wörtlich gemeint ist. Ein als %2B kodiertes Plus bleibt immer ein Pluszeichen.
  • Doppelte Kodierung entsteht, wenn zwei Code-Schichten denselben Wert nacheinander kodieren, wovor RFC 3986 ausdrücklich warnt. Jedes % wird zu %25, aus %20 für ein Leerzeichen wird also %2520. Enthält das dekodierte Ergebnis noch Sequenzen wie %20, meldet das Tool, dass der Text wahrscheinlich zweimal kodiert wurde, und bietet Nochmals dekodieren an.
  • Eine ungültige Sequenz, also ein % ohne zwei Hex-Ziffern dahinter wie in 100% oder %G1, lässt JavaScripts decodeURIComponent einen URIError werfen. Hier bleiben solche Sequenzen unverändert, werden rot markiert und gezählt, und der Rest des Textes wird dekodiert.
  • Alte Latin-1-Links stammen aus der Zeit vor UTF-8, als manche Seiten é als einzelnes Byte %E9 kodierten. caf%E9 ist kein gültiges UTF-8, deshalb schlägt decodeURIComponent fehl, und Pythons unquote liefert caf gefolgt vom Ersatzzeichen U+FFFD. Das Tool liest solche Bytes als Windows-1252, dekodiert caf%E9 zu café und fügt einen entsprechenden Hinweis hinzu.

Steuerzeichen im dekodierten Text, etwa ein Tabulator oder ein Null-Byte, werden als sichtbare Symbole wie ␉ und ␀ angezeigt, aber Kopieren kopiert den echten Text.

URL-Parser: URL zerlegen und Query-Parameter bearbeiten

Fügen Sie eine Adresse in das Feld URL auf dem Tab URL zerlegen ein, dann wird sie in Protokoll, Host, Port, Pfad und Fragment zerlegt, dazu Benutzername und Passwort, wenn die URL sie enthält. Die Werte werden dekodiert angezeigt, der Tab ist also auch der schnellste Weg, URL-Parameter zu dekodieren: Sie lesen grüne gummistiefel statt gr%C3%BCne+gummistiefel. Das Bearbeiten funktioniert in beide Richtungen, wie die Adressleiste und die Parametertabelle in Postman. Ändern Sie ein Feld, wird die URL sofort korrekt kodiert neu geschrieben, ändern Sie die URL, werden alle Bestandteile neu gelesen. Teile, die Sie nicht anfassen, bleiben Zeichen für Zeichen unverändert.

Die Tabelle Query-Parameter listet jeden Parameter mit den Spalten Name und Wert auf. Entfernen Sie das Häkchen bei In der URL verwenden, um einen Parameter wegzulassen, ohne ihn zu löschen. Das hilft bei der Suche nach dem einen Parameter, der eine Anfrage kaputt macht. Parameter hinzufügen, Parameter entfernen und A bis Z sortieren erklären sich selbst. Wiederholte Namen wie tag=a&tag=b und Namen ohne Wert wie ?debug bleiben erhalten. Leerzeichen in Parametern legt fest, ob Leerzeichen als %20 oder + geschrieben werden, standardmäßig richtet es sich nach der eingefügten URL.

Login- und Zahlungslinks enthalten oft eine zweite URL in einem Parameter, so kodiert, dass ihr eigenes ? und & sich nicht mit denen der äußeren URL vermischen:

https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2

Ein Wert, der selbst eine URL ist, typischerweise in redirect_uri, return, url oder next, bekommt die Schaltfläche URL darin bearbeiten. Die innere Adresse https://app.example.com/callback?tab=2 öffnet sich dann als eigene Ebene mit eigenen Bestandteilen und Parametern, eine Breadcrumb-Leiste (Haupt-URL › redirect_uri) führt zurück, und jede Änderung wird in die äußere URL zurückkodiert. Haupt-URL kopieren kopiert das Ergebnis. Das funktioniert über mehrere Ebenen.

Sieht der Teil nach dem # wie Parameter aus, wie #access_token=...&state=... im OAuth-Implicit-Flow oder #/search?q=shoes in den Routen von Single-Page-Apps, listet eine zweite Tabelle, Fragment-Parameter, auch diese auf.

Der Parser weist außerdem auf Probleme hin: eine URL ohne Protokoll, die Browser als relativen Link behandeln, einen Port außerhalb von 0 bis 65535 und Zeichen, die kodiert werden müssen, etwa Leerzeichen, Umlaute, " oder <, was Zeichen kodieren in einem Schritt behebt. Text ohne Adresse wie a=1&b=2 wird als Query-String gelesen. Bei einem internationalisierten Domainnamen zeigt das Tool die Punycode-Form, die DNS und Browser verwenden, aus münchen.de wird also xn--mnchen-3ya.de, und eine Domain, die mit xn-- beginnt, erhält ihre lesbare Form.

URL kopieren kopiert die fertige Adresse, Öffnen öffnet sie in einem neuen Tab (nur http- und https-Links), und Als JSON kopieren liefert die Parameter als JSON-Objekt, wobei wiederholte Namen in einem Array zusammengefasst werden.

UTM- und andere Tracking-Parameter aus einer URL entfernen

Links aus Newslettern, Anzeigen und sozialen Netzwerken tragen Parameter, die der Seite nur sagen, woher der Besucher kam. Die UTM-Parameter utm_source, utm_medium, utm_campaign, utm_term und utm_content gehen auf Urchin zurück, den Vorläufer von Google Analytics. Klick-IDs wie fbclid (Facebook), gclid (Google Ads) und msclkid (Microsoft Advertising) hängen die Plattformen selbst an.

Der Parser markiert sie mit einem Tag Tracking, und Tracking entfernen (n) löscht sie alle auf einmal. Neben jedem utm_*-Parameter erkennt er mehr als 20 weitere, etwa ttclid (TikTok), mc_cid (Mailchimp) und _hsenc (HubSpot). Parameter, die die Seite braucht, bleiben stehen: Im Shop-Link von Beispiel ausprobieren entfernt Tracking entfernen (4) die Parameter utm_source, utm_medium, utm_campaign und fbclid und behält q, size, return und das Fragment #reviews.

Ein Link, der in einen QR-Code kommen soll, lohnt sich vorher hier zu bereinigen. Ohne Tracking-Parameter ist er kürzer, und ein kürzerer Link ergibt einen weniger dichten Code, der sich leichter scannen lässt.

Was URL-Encoding (Prozentkodierung) ist und wie aus Zeichen %XX wird

URL-Encoding, auch Prozentkodierung genannt, schreibt ein Zeichen als % gefolgt von zwei Hexadezimalziffern. Eine URL darf nur einen begrenzten Satz von ASCII-Zeichen enthalten, und manche davon haben eine Aufgabe: ? beginnt die Query, & trennt Parameter, # beginnt das Fragment. RFC 3986 nennt diese reservierte Zeichen (: / ? # [ ] @ und ! $ & ' ( ) * + , ; =). Buchstaben, Ziffern und - . _ ~ sind unreserviert und müssen nie kodiert werden. Alles andere sowie jedes reservierte Zeichen, das als normale Daten verwendet wird, wird kodiert.

Zeichen außerhalb von ASCII werden zuerst in UTF-8-Bytes umgewandelt, und jedes Byte bekommt sein eigenes %XX:

  • é ist U+00E9, was UTF-8 als die zwei Bytes C3 A9 speichert, daher wird daraus %C3%A9.
  • € ist U+20AC, drei Bytes: %E2%82%AC.
  • Ein Emoji wie U+1F600 (grinsendes Gesicht) belegt vier Bytes: %F0%9F%98%80.

%c3%a9 und %C3%A9 bedeuten dasselbe, aber RFC 3986 empfiehlt Großbuchstaben, und die schreibt auch das Tool. Eine Tabelle der Prozentkodierung für die Zeichen, die Ihnen am häufigsten begegnen:

ZeichenKodiertZeichenKodiert
Leerzeichen%20+%2B
!%21,%2C
"%22/%2F
#%23:%3A
$%24;%3B
%%25=%3D
&%26?%3F
'%27@%40
(%28[%5B
)%29]%5D
*%2AZeilenumbruch%0A

URL kodieren in JavaScript, Python und PHP

Jede Sprache hat dafür Funktionen, und sie unterscheiden sich vor allem darin, wie sie Leerzeichen, Schrägstriche und ! ' ( ) * ~ behandeln.

JavaScript hat encodeURIComponent für einen Wert, encodeURI für eine ganze Adresse und URLSearchParams für die Formularkodierung:

encodeURIComponent("café & crème")                     // "caf%C3%A9%20%26%20cr%C3%A8me"
encodeURI("https://example.com/a b?q=café")            // "https://example.com/a%20b?q=caf%C3%A9"
new URLSearchParams({ q: "café & crème" }).toString()  // "q=caf%C3%A9+%26+cr%C3%A8me"
decodeURIComponent("caf%C3%A9")                        // "café"

decodeURIComponent macht aus + kein Leerzeichen und wirft bei einer ungültigen Sequenz wie 100% einen URIError.

In Python liegen die Funktionen in urllib.parse. quote behält / standardmäßig bei (safe='/') und kodiert sonst alles außer den unreservierten Zeichen nach RFC 3986. quote_plus schreibt Leerzeichen als + und kodiert auch /:

from urllib.parse import quote, quote_plus, urlencode, unquote_plus

quote("café & crème/brûlée")       # 'caf%C3%A9%20%26%20cr%C3%A8me/br%C3%BBl%C3%A9e'
quote("a b/c", safe="")            # 'a%20b%2Fc'
quote_plus("café & crème/brûlée")  # 'caf%C3%A9+%26+cr%C3%A8me%2Fbr%C3%BBl%C3%A9e'
urlencode({"q": "café & crème", "page": 2})  # 'q=caf%C3%A9+%26+cr%C3%A8me&page=2'
unquote_plus("caf%C3%A9+au+lait")  # 'café au lait'

In PHP kodiert urlencode wie ein HTML-Formular und schreibt ein Leerzeichen als +, während rawurlencode RFC 3986 folgt und %20 schreibt:

urlencode("café & crème");     // "caf%C3%A9+%26+cr%C3%A8me"
rawurlencode("café & crème");  // "caf%C3%A9%20%26%20cr%C3%A8me"

rawurlencode liefert dasselbe Ergebnis wie Streng nach RFC 3986. urlencode entspricht Formulardaten, außer bei *, das es als %2A kodiert.

Häufige Fragen

Sollte ein Leerzeichen als %20 oder + kodiert werden?

%20 funktioniert überall in einer URL. Ein + steht nur im Query-String und in Formulardaten (dem Format, das HTML-Formulare senden) für ein Leerzeichen. In einem Pfad ist + ein gewöhnliches Pluszeichen, /a+b bleibt also /a+b. Braucht ein Query-Wert ein echtes Pluszeichen, schreiben Sie es als %2B. Im Tool schreibt Formulardaten Leerzeichen als + und die anderen drei Modi als %20.

Was bedeuten %20, %2F und %3D in einer URL?

Das sind kodierte Zeichen: %20 ist ein Leerzeichen, %2F ein Schrägstrich und %3D ein Gleichheitszeichen. Weitere, die Sie oft sehen, sind %26 (&), %3F (?), %3A (:), %2C (Komma) und %27 (Apostroph). Die zwei Ziffern sind der Code des Zeichens in hexadezimaler Schreibweise. Umlaute und andere Nicht-ASCII-Zeichen belegen zwei bis vier solche Paare, etwa %C3%A9 für é. Fügen Sie die ganze Zeichenkette in den Decoder ein, um sie zu lesen.

Was ist der Unterschied zwischen encodeURI und encodeURIComponent?

encodeURI ist für eine ganze Adresse gedacht und lässt die Zeichen, die sie strukturieren, wie : / ? # & =, in Ruhe. encodeURIComponent ist für einen einzelnen Teil gedacht, einen Parameterwert oder ein Pfadsegment, und kodiert diese Zeichen mit, aus https://example.com/?a=1&b=2 wird also https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. In diesem Tool entspricht Parameterwert der Funktion encodeURIComponent, und Ganze URL ist wie encodeURI, behält aber vorhandene Sequenzen wie %20, statt sie in %2520 zu verwandeln.

Wie entferne ich UTM-Parameter aus einer URL?

Fügen Sie den Link in den Tab URL zerlegen ein und klicken Sie auf Tracking entfernen (n). Das löscht alle utm_*-Tags und Klick-IDs wie fbclid und gclid auf einmal. Klicken Sie danach auf URL kopieren. Wenn nur einige verschwinden sollen, nutzen Sie Parameter entfernen bei den Zeilen, die Sie nicht wollen.

Ist URL-Kodierung dasselbe wie Verschlüsselung oder Base64?

Nein. URL-Kodierung verbirgt nichts: Jeder kann caf%C3%A9 zurück in café dekodieren, deshalb schützt sie nie ein Passwort oder Token. Sie macht Zeichen nur in einer Adresse verwendbar. Base64 ist eine andere Kodierung, die beliebige Daten, auch Binärdateien, in eine Zeichenkette aus 64 Zeichen verwandelt. Ein Base64-String in einer URL braucht trotzdem kodierte +, / und =, es sei denn, Sie verwenden die URL-sichere Variante, die der Base64 Encoder und Decoder erzeugen kann.

Werden die eingefügten URLs hochgeladen oder gespeichert?

Nein. Kodieren, Dekodieren und Zerlegen laufen in Ihrem Browser, und nichts, was Sie einfügen, wird an einen Server gesendet. Das ist wichtig, denn URLs enthalten oft Zugriffstokens, Session-IDs oder Codes zum Zurücksetzen von Passwörtern. Der Browser merkt sich nur den gewählten Tab und die Optionen, nie die Texte. Die Adresse wird nur durch Öffnen geladen, das sie in einem neuen Tab öffnet, genau wie ein Klick auf den Link.

Weitere Tools für Programmierer finden Sie in der Kategorie Entwickler, und Tools, die ein Format in ein anderes umwandeln, sind unter Konverter gesammelt. Um zu sehen, was sich zwischen zwei langen URLs unterscheidet, zum Beispiel einem funktionierenden und einem fehlschlagenden API-Aufruf, fügen Sie beide in das Tool zum Texte vergleichen ein und vergleichen Sie nach Zeichen.

Ich würde mich freuen, wenn Sie diese Seiten mit Freunden teilen, als Lesezeichen speichern oder darauf verlinken würden. Danke! 🙏