Beim URL-Encoding (Prozent-Codierung) ersetzen Sie jedes Zeichen, das kein einfacher Buchstabe ohne Umlaut, keine Ziffer und keines von - . _ ~ ist, durch ein % und den Hexwert jedes seiner UTF-8-Bytes. Ein Leerzeichen wird zu %20 (oder + im Query-String), & zu %26 und Straße zu Stra%C3%9Fe. Am schnellsten geht es mit unserem kostenlosen URL-Encoder: Text einfügen, Ergebnis kopieren. Er ist kostenlos, braucht kein Konto und funktioniert in jedem Browser. Schwieriger ist die Frage, was Sie codieren müssen und welche Variante die Zielstelle erwartet. Darum geht es in diesem Leitfaden.
Alle Ergebnisse unten sind echt: Wir haben die Eingaben am 1. November 2026 durch die Live-Tools von My Botsy geschickt und mit JavaScript (Node.js 24), Python 3.13 und PHP für dieselben Zeichenketten verglichen.
URL codieren: Schritt für Schritt
- Den Wert herauslösen. Codieren Sie nur die Daten, die in die URL kommen: einen Suchbegriff, einen Dateinamen, ein Weiterleitungsziel. Nie die ganze Adresse (dazu unten mehr).
- In den Encoder einfügen. Öffnen Sie den URL-Encoder, fügen Sie den Wert ein und klicken Sie auf Absenden.
- Ergebnis kopieren. Über die Kopier-Schaltfläche. Leerzeichen erscheinen als
+, was im Query-String korrekt ist. - Im Pfad auf %20 umstellen. Gehört der Wert zum Pfad (vor dem
?), ersetzen Sie jedes+durch%20. Das ist sicher, denn ein echtes Pluszeichen in Ihrem Text ist bereits als%2Bcodiert. - Prüfen. Fügen Sie den fertigen Link in den URL-Parser ein. Er decodiert jeden Parameter und zeigt genau, was der Server empfängt.
Gleich ausprobieren: Fügen Sie einen Text mit Leerzeichen, Umlauten oder einem & in den kostenlosen URL-Encoder ein und Sie haben in einer Sekunde eine linksichere Version.
Welche Zeichen codiert werden müssen
RFC 3986, der Standard für URLs, teilt Zeichen in drei Gruppen:
- Nicht reserviert, nie codiert:
A–Z a–z 0–9 - . _ ~. Umlaute undßgehören nicht dazu. - Reserviert, mit Funktion in der URL:
: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Sie müssen codiert werden, wenn sie Teil Ihrer Daten sind. Ein uncodiertes&in einer Suche beginnt einen neuen Parameter und schneidet Ihren Wert ab. - Alles andere: Leerzeichen, Anführungszeichen,
< >,%, Umlaute, Emojis und jede nicht-lateinische Schrift. Diese werden immer Byte für Byte aus UTF-8 codiert. Deshalb wirdGröße & MaßezuGr%C3%B6%C3%9Fe+%26+Ma%C3%9Fe.
Echter Test: eine Zeichenkette voller Fallen
Wir haben bewusst eine Eingabe gewählt, die fast jedes Problem enthält:
Café & Bar #1 / 50% off? a+b=c ~ü 東京 Tom's "best" <b>
Der URL-Encoder lieferte:
Caf%C3%A9+%26+Bar+%231+%2F+50%25+off%3F+a%2Bb%3Dc+%7E%C3%BC+%E6%9D%B1%E4%BA%AC+Tom%27s+%22best%22+%3Cb%3E
| Eingabe | Ausgabe | Warum das wichtig ist |
|---|---|---|
| Leerzeichen | + | Formular-Format, gültig im Query-String |
& | %26 | Sonst beginnt ein neuer Parameter |
# | %23 | Sonst wird der Rest zum Fragment, das der Server nie sieht |
% | %25 | Sonst wird 50% o als kaputte Escape-Sequenz gelesen |
+ | %2B | Sonst liest der Server ein Leerzeichen |
é, ü | %C3%A9, %C3%BC | Je zwei UTF-8-Bytes |
~ | %7E | Unnötig, aber harmlos: Server akzeptieren beide Formen |
' " < > | %27 %22 %3C %3E | Bleiben als Daten erhalten, werden nicht entfernt |
Diese Ausgabe ist Byte für Byte identisch mit dem, was URLSearchParams im Browser für denselben Text erzeugt, und mit PHPs urlencode(), das das Tool verwendet. Ein hier codierter Wert verhält sich also wie einer, den ein Webformular absendet.
%20 oder +: was ist für Leerzeichen richtig?
Beides bedeutet „Leerzeichen“, aber an verschiedenen Stellen. %20 ist die allgemeine Prozent-Codierung nach RFC 3986 und funktioniert überall in der URL. + stammt aus dem HTML-Formularformat (application/x-www-form-urlencoded) und bedeutet nur im Query-String ein Leerzeichen. Im Pfad ist + ein echtes Plus: /dateien/mein+bericht.pdf fordert eine Datei mit Plus im Namen an.
- Query-Werte (
?q=Gr%C3%B6%C3%9Fe+%26+Ma%C3%9Fe):+oder%20, beides geht. - Pfadsegmente (
/docs/mein%20bericht): nur%20. mailto:-Links:%20. Der mailto-Standard (RFC 6068) verlangt Leerzeichen als%20, weil ein+nicht von einem echten Plus zu unterscheiden ist, etwa inmax+newsletter@example.org. Deshalb schreibt unser mailto-Link-Generator%20; mehr dazu in unserer Anleitung zu mailto-Links.
Welche Funktion im Code?
Wir haben dieselbe Testzeichenkette durch die gängigen Funktionen geschickt. Sie unterscheiden sich in vier Punkten: Leerzeichen, /, ~ und '.
| Funktion | Leerzeichen | / | ~ | ' | Lässt & # ? roh? |
|---|---|---|---|---|---|
JS encodeURIComponent | %20 | %2F | ~ | ' | Nein |
JS encodeURI | %20 | / | ~ | ' | Ja |
JS URLSearchParams | + | %2F | %7E | %27 | Nein |
Python quote() | %20 | / | ~ | %27 | Nein |
Python quote_plus() | + | %2F | ~ | %27 | Nein |
PHP rawurlencode() | %20 | %2F | ~ | %27 | Nein |
PHP urlencode() / unser Tool | + | %2F | %7E | %27 | Nein |
Zwei davon sorgen regelmäßig für Ärger. encodeURI ist für eine komplette URL gedacht und lässt &, #, ?, = und + unverändert. Auf einen Wert angewendet wird Café & Bar #1 zu Caf%C3%A9%20&%20Bar%20#1, und der Link bricht am & und am #. Pythons quote() behält / standardmäßig, sodass ein Weiterleitungsziel wie /warenkorb?id=7 seinen Schrägstrich behält, wenn Sie nicht safe='' übergeben. Für einen einzelnen Wert nehmen Sie encodeURIComponent, quote(wert, safe='') oder rawurlencode.
Praxisbeispiel: eine URL in einer URL
Eine Login-Seite soll Nutzer danach zu /cart?id=7 zurückschicken. Schreiben Sie /login?next=/cart?id=7, verwirren das zweite ? und jedes spätere & den Server. Codieren Sie zuerst die innere URL:
/login?next=%2Fcart%3Fid%3D7
Zur Kontrolle haben wir https://shop.example/search?q=caf%C3%A9+%26+bar&next=%2Fcart%3Fid%3D7 in den URL-Parser eingefügt. Er zeigte den rohen Query-String und dann die decodierten Parameter, genau wie der Server sie erhält:
{ "q": "café & bar", "next": "/cart?id=7" }
Zwei saubere Werte, kein überzähliger Parameter. Kampagnenlinks funktionieren genauso: Jeder UTM-Wert ist ein Parameter, also codieren Sie ihn oder bleiben Sie besser bei Kleinbuchstaben und Unterstrichen, wie unser Leitfaden zu UTM-Parametern empfiehlt.
Typische Fehler beim URL-Encoding
Die ganze URL codieren
Aus https://mybotsy.com/?q=rote schuhe wird https%3A%2F%2Fmybotsy.com%2F%3Fq%3Drote+schuhe, und das ist kein funktionierender Link mehr. Richtig ist das nur, wenn die ganze URL selbst ein Parameterwert ist, wie im Weiterleitungsbeispiel oben.
Doppelt codieren
Wird bereits codierter Text erneut codiert, werden die Prozentzeichen codiert. Aus a%20b wurde in unserem Test a%2520b. Sehen Sie in einem Link %25 gefolgt von zwei Hexziffern, wurde doppelt codiert. %25252F braucht drei Decodier-Durchgänge bis / (%252F, dann %2F, dann /).
Ein Plus beim Decodieren verlieren
Formular-Decoder, auch unser URL-Decoder, machen aus + ein Leerzeichen. Wir haben q=mac+cheese&phone=%2B54+11+5555&path=%2Fdocs%2520v2 decodiert und q=mac cheese&phone=+54 11 5555&path=/docs%20v2 erhalten. Die Ländervorwahl blieb nur erhalten, weil ihr Plus als %2B geschrieben war; ein uncodiertes +49 wäre zum Leerzeichen geworden. Dasselbe beschädigt Base64-Werte in URLs. In Base64 decodieren erklären wir das URL-sichere Alphabet, das dieses Problem vermeidet.
Alte Latin-1-Escapes mit UTF-8 mischen
Manche ältere Systeme codieren ü als %FC (ein Latin-1-Byte) statt %C3%BC, und é als %E9. Als UTF-8 decodiert erscheint caf%E9 als caf�. Taucht das Ersatzzeichen auf, nutzte die Quelle eine alte Zeichencodierung, typisch bei Umlauten aus Altsystemen.
Sich auf das automatische Kürzen verlassen
Unser Encoder entfernt Leerzeichen ganz am Anfang und Ende: " hello world" + Zeilenumbruch + "line 2 " wurde zu hello+world%0D%0Aline+2. Meist ist das gewollt; zählt ein führendes Leerzeichen, setzen Sie %20 von Hand. Ein im Browser getippter Zeilenumbruch wird zu %0D%0A.
Ein einzelnes % in JavaScript
decodeURIComponent("50%") wirft URIError: URI malformed. Unser Decoder lässt ein einzelnes % einfach stehen (50% off bleibt 50% off): praktisch bei unsauberen Daten, aber er warnt auch nicht.
Passende kostenlose Tools
- URL-Decoder: macht aus
%20,%26und%C3%BCwieder Text. - URL-Parser: zerlegt einen Link in Host, Pfad und decodierte Parameter.
- UTM-Link-Generator: baut Kampagnenlinks mit bereits codierten Werten.
- WhatsApp-Link-Generator: wa.me-Links mit vorausgefüllter Nachricht (siehe unsere Anleitung für WhatsApp-Links).
- Slug-Generator: Wenn Sie die URL selbst bestimmen, erspart ein sauberer Slug das Codieren (SEO-freundlichen URL-Slug erstellen).
Alle sind kostenlos und ohne Konto nutzbar. Besucher haben 5 Nutzungen pro Tag, ein kostenloses My-Botsy-Konto (100 % kostenlos, kein Spam) hebt diese Grenze auf.
Häufig gestellte Fragen
Was ist URL-Encoding?
URL-Encoding, auch Prozent-Codierung, ersetzt Zeichen, die in einer URL nicht erlaubt sind oder eine Sonderbedeutung haben, durch ein %-Zeichen und den Hexwert jedes Bytes. Ein Leerzeichen wird zu %20, & zu %26 und ß zu %C3%9F, seinen zwei UTF-8-Bytes.
Ist ein Leerzeichen in der URL %20 oder +?
Im Query-String funktioniert beides, weil + dort die Formular-Schreibweise für ein Leerzeichen ist. Im Pfad oder in einem mailto-Link nehmen Sie %20, weil + dort ein echtes Plus ist. Unser Encoder gibt + aus, ersetzen Sie es im Pfad durch %20.
Welche Zeichen müssen nicht codiert werden?
Nur die Buchstaben A bis Z ohne Umlaute, die Ziffern 0 bis 9 und die Zeichen - . _ ~. Reservierte Zeichen wie & ? # = / + : werden codiert, wenn sie zu den Daten gehören, und alles andere (Leerzeichen, Anführungszeichen, Umlaute, ß, Emojis) immer.
Was ist der Unterschied zwischen encodeURI und encodeURIComponent?
encodeURI ist für eine komplette URL und lässt Strukturzeichen wie & # ? = und / unverändert. encodeURIComponent ist für einen einzelnen Wert und codiert sie. encodeURI auf einen Suchbegriff oder ein Weiterleitungsziel anzuwenden bricht den Link am ersten & oder #.
Warum zeigt mein Link %2520?
Er wurde doppelt codiert: Der erste Durchgang machte aus dem Leerzeichen %20, der zweite aus dem % ein %25. Einmal decodieren und den Originaltext nur einmal codieren.
Ist der URL-Encoder kostenlos?
Ja. Der URL-Encoder von My Botsy ist kostenlos, braucht kein Konto und funktioniert in jedem Browser. Besucher haben 5 Nutzungen pro Tag, ein kostenloses Konto hebt die Grenze auf.
Haben Sie einen Wert für einen Link? Fügen Sie ihn in den kostenlosen URL-Encoder ein, kopieren Sie das Ergebnis und prüfen Sie den fertigen Link mit dem URL-Parser.