Über dieses Tool
Dieser kostenlose URL-Encoder/-Decoder prozentcodiert Text, damit er sicher in einer URL oder einem Query-String verwendet werden kann, und wandelt eine codierte URL wieder in lesbaren Text zurück.
Er behandelt UTF-8 korrekt, sodass Umlaute, Akzente, Emoji und nicht-lateinische Schriften ohne Beschädigung codiert und decodiert werden. Alles läuft in Ihrem Browser – nichts wird hochgeladen.
Was Prozentcodierung ist
Eine URL darf nur einen kleinen Zeichensatz enthalten. Alles andere – Leerzeichen, Anführungszeichen, &, #, ?, Umlaute, alles auf Chinesisch oder Arabisch – muss vorher umgeschrieben werden.
Die Prozentcodierung erledigt das, indem sie ein Zeichen durch ein % gefolgt von seinem Bytewert in Hexadezimalschreibweise ersetzt. Aus einem Leerzeichen wird %20. Aus einem Und-Zeichen wird %26. Aus einem Fragezeichen wird %3F. Es ist dieselbe Idee wie bei Base64 – sperrige Daten für einen wählerischen Übertragungsweg sicher machen – nur zeichenweise, sodass das Ergebnis weitgehend lesbar bleibt.
Da Bytes codiert werden, erzeugt ein Zeichen, das in UTF-8 mehr als ein Byte belegt, auch mehr als eine Escape-Sequenz. ä besteht aus zwei Bytes und wird zu %C3%A4. Ein chinesisches Zeichen hat meist drei Bytes und wird zu drei Sequenzen. Ein Emoji hat vier. Deshalb sehen codierte URLs mit nicht-englischem Text so lang aus.
Warum das wichtig ist: das `&`-Problem
Hier ist der Fehler, den dieses Tool verhindern soll – und fast jeder macht ihn einmal.
Ein Query-String trennt seine Werte mit & und =:
/suche?q=kaffee&seite=2
Nun sucht jemand nach Bed & Breakfast. Ungeschützt eingesetzt:
/suche?q=Bed & Breakfast&seite=2
Der Server sieht jetzt drei Parameter – q ist Bed , dann ein unsinniger Parameter Breakfast, dann seite. Die Suche liefert stillschweigend das Falsche. Codiert man den Wert zuerst, funktioniert es:
/suche?q=Bed%20%26%20Breakfast&seite=2
Daraus folgt die Regel: Codieren Sie jeden Wert, nicht die ganze URL. Das & und das =, die den Query-String strukturieren, müssen unverändert bleiben. Das & innerhalb eines Werts darf es nicht.
Einen Wert codieren oder eine ganze URL
Das ist die Unterscheidung, über die man stolpert – und der Grund, warum es in JavaScript zwei verschiedene Funktionen gibt.
encodeURIComponent codiert nahezu alles, auch /, ?, #, & und =. Verwenden Sie es für einen einzelnen Bestandteil einer URL – einen Suchbegriff, einen Dateinamen, ein Weiterleitungsziel, ein Token. Das ist meistens das Richtige, und genau das macht dieses Tool.
encodeURI lässt die strukturgebenden Zeichen in Ruhe, weil es davon ausgeht, dass Sie ihm eine vollständige, bereits korrekte URL übergeben und nur die unzulässigen Zeichen bereinigen wollen. Verwenden Sie es für eine ganze URL, niemals für einen einzelnen Wert.
Codieren Sie eine ganze URL mit der Component-Variante, wird jeder / zu %2F – die Adresse funktioniert nicht mehr. Codieren Sie einen Wert mit der URI-Variante, rutscht Ihr & durch und zerstört den Query-String. Zu wissen, was Sie gerade meinen, ist der ganze Trick.
Nicht dasselbe wie HTML-Escaping
Prozentcodierung und HTML-Escaping sehen ähnlich aus und lösen verschiedene Probleme.
Die Prozentcodierung (%20, %26) macht Text sicher innerhalb einer URL. Das HTML-Escaping (&, <) macht Text sicher innerhalb eines HTML-Dokuments. Eine auf einer Seite ausgegebene URL braucht unter Umständen beides, und zwar in dieser Reihenfolge – erst für die URL codieren, dann das Ergebnis für das HTML escapen.
Und eine bekannte Eigenheit: + steht manchmal für ein Leerzeichen. Das stammt aus HTML-Formularen, wo application/x-www-form-urlencoded statt %20 ein + verwendet. Die meisten Server akzeptieren beides in einem Query-String, aber ein + im Pfad bedeutet ein echtes Pluszeichen. Taucht ein Leerzeichen unerwartet als + auf, ist ein Formular-Encoder der Grund.
So verwenden Sie es
- Fügen Sie Ihren Text oder Ihre URL in das Feld ein
- Codieren oder Decodieren Sie mit den Schaltflächen
- Tauschen Sie, um das Ergebnis zurück in die Eingabe zu übernehmen
- Kopieren Sie das Ergebnis
Gut zu wissen
- Codieren Sie Werte, nicht ganze URLs. Eine komplette Adresse durch einen Encoder zu schicken, macht aus jedem / ein %2F und zerstört sie.
- Niemals doppelt codieren. Ein % wird selbst zu %25 codiert, ein zweiter Durchlauf macht aus %20 also %2520 und das Leerzeichen ist verloren. Das ist die häufigste Ursache für einen rätselhaft kaputten Link.
- Reservierte Zeichen tragen Bedeutung – dazu gehören :, /, ?, #, @, &, =, + und $. Sie sind in einer URL erlaubt, müssen aber codiert werden, wenn sie innerhalb eines Werts vorkommen.
- Nicht reservierte Zeichen werden nie codiert: A–Z, a–z, 0–9, -, _, . und ~.
- Groß- und Kleinschreibung spielt im Hex-Teil keine Rolle. %3f und %3F sind identisch. Großschreibung ist die Konvention.
- Ein einzelnes % ist ungültig. Schlägt das Decodieren fehl, suchen Sie nach einem %, auf das keine zwei Hexadezimalziffern folgen – oft ein Zeichen dafür, dass die Zeichenfolge abgeschnitten wurde.
Häufige Fragen
Was bedeutet %20 in einer URL?
Es ist ein Leerzeichen. Leerzeichen sind in einer URL nicht erlaubt und werden deshalb als %20 prozentcodiert – ein % gefolgt von 20, dem hexadezimalen Bytewert eines Leerzeichens. Manchmal sehen Sie ein Leerzeichen auch als +, was aus der Formularcodierung stammt; beides wird in einem Query-String verstanden, im Pfad ist aber nur %20 korrekt.
Soll ich die ganze URL codieren oder nur einen Teil?
Nur die Teile. Codieren Sie jeden Wert, den Sie *in* eine URL einsetzen – einen Suchbegriff, einen Dateinamen, eine Weiterleitungsadresse – und lassen Sie ://, /, ?, & und = unangetastet, die der URL ihre Struktur geben. Eine vollständige URL zu codieren macht aus ihren Schrägstrichen %2F, und sie lässt sich nicht mehr auflösen.
Warum ist mein Link nach dem Codieren kaputt?
Fast immer wegen doppelter Codierung. Das Zeichen % wird selbst als %25 codiert, sodass ein erneuter Durchlauf aus %20 ein %2520 macht. Der Decoder gibt Ihnen dann ein wörtliches %20 statt eines Leerzeichens zurück. Decodieren Sie einmal, um zu sehen, was Sie tatsächlich vorliegen haben, bevor Sie erneut codieren.
Warum wird aus einem Umlaut mehr als ein %-Code?
Weil die Prozentcodierung mit Bytes arbeitet, nicht mit Buchstaben. In UTF-8 besteht ä aus zwei Bytes und wird deshalb zu %C3%A4. Die meisten chinesischen, japanischen und koreanischen Zeichen haben drei Bytes und ergeben drei Sequenzen, Emoji haben vier. Es ist nichts falsch – so viel wiegt das Zeichen schlicht.
Was ist der Unterschied zwischen URL-Codierung und HTML-Escaping?
Sie schützen unterschiedliche Orte. Die URL-Codierung (%26) macht Text innerhalb einer Webadresse sicher. Das HTML-Escaping (&) macht Text innerhalb einer HTML-Seite sicher. Ein auf einer Seite ausgegebener Link kann beides brauchen, in dieser Reihenfolge. Das eine dort einzusetzen, wo das andere hingehört, lässt das ursprüngliche Problem ungelöst.
Wird mein Text an einen Server gesendet?
Nein. Codierung und Decodierung finden beide in Ihrem Browser statt, nichts, was Sie einfügen, verlässt Ihr Gerät. Das Tool funktioniert auch mit ausgeschalteter Internetverbindung weiter.
Verwandte Tools
- Base64 codieren / decodieren – die andere Codierung, die Ihnen in Tokens und Data-URLs ständig begegnet
- JSON-Formatierer – das JSON aufräumen und prüfen, das oft in diesen Query-Strings steckt
- JWT-Decoder – ein Token lesen, das in einer URL angekommen ist
- E-Mails und URLs extrahieren – jeden Link aus einem Textblock herausziehen