zerouploads

URL Encoder

Percent-encode text for query strings, paths and form data, with the escaped characters listed as you go.

  • Unlimited
  • No signup
  • Private
  • Works offline

URL ConverterPercent-encoding, either direction

118 characters18 need encoding

EncodedValid

https%3A%2F%2Fzerouploads.com%2Fsearch%3Fq%3Dimage%20compressor%26tags%3Dfree%2Cno%20signup%26lang%3Den-GB%26utm_source%3Dnewsletter%26ref%3Dtools%2Findex

154 characters · +31%18 sequences encoded

Encoding mode

Characters encoded in this input

=
%3D × 5
/
%2F × 4
&
%26 × 4
space
%20 × 2
:
%3A
?
%3F
,
%2C
Encoder options
118 characters in / 154 out · 18 sequences · Component · UTF-8 · uppercase hex

How it works

  1. 01

    Paste the text

    A whole URL, one parameter value, or a column of values. It stays in this tab.

  2. 02

    Pick the mode

    Component for one value, full URL for a whole address, form data for a form post.

  3. 03

    Copy the output

    Every character it escaped is listed under the panes, so you can check the ones you meant.

Component, full URL or form data

The three modes differ in what they leave alone. Component mode escapes everything that is not unreserved, separators included, and that is right when the text goes inside one parameter or one path piece. Full URL mode keeps the structural characters, so a whole address survives instead of collapsing into one long string. Form data mode follows the older form-post rule, where a space is written as a plus.

The wrong mode breaks a link in one of two ways. A whole URL run through component mode comes out unusable. A parameter value run through full URL mode keeps its ampersand, and the server reads that as the start of the next parameter.

Standard
RFC 3986. In component mode only A-Z a-z 0-9 - _ . ~ stay as they are.
Non-ASCII
Turned into UTF-8 bytes first, so é becomes %C3%A9.
Spaces
%20 in every mode but form data, where a plus is normal.
Case
RFC 3986 prefers capital hex digits. Both forms decode alike.

Text outside ASCII

Characters outside ASCII become UTF-8 bytes first, and then every byte gets its own sequence. One accented letter is two sequences and an emoji is four. That is why encoded text in most languages looks so much longer than the words that went in.

Older systems that assumed Latin-1 read those bytes wrongly. If an endpoint hands back mangled letters, switch the Character encoding here to Latin-1 and see whether the output matches what it sent.

Frequently asked questions

When do I use component mode instead of full URL?
Use component mode for anything going inside one parameter or one path piece, because it escapes the separators too. Use full URL mode only for a whole address that has to still work afterwards.
Why is a space sometimes %20 and sometimes a plus?
%20 is the general form. Form data follows an older rule where a space is written as a plus sign instead, and this tool switches to it in form mode.
How is é encoded?
Text outside ASCII becomes UTF-8 bytes first, and then each byte gets its own sequence. So é becomes %C3%A9, and an emoji becomes four sequences.
Does uppercase or lowercase hex matter?
Both read back the same. Capitals are the convention, so this tool writes them by default. Turn off Uppercase hex digits to match a system that does not.
Is this the same as encodeURIComponent?
Almost. That function leaves ! ' ( ) and * alone, and the standard does not, so this tool escapes them too. With the default settings, everything else matches what you would get in a browser console.
Is there a length limit?
It stops at two million characters. That is far more than any URL needs.
Is my input uploaded?
No. Encoding runs in the page. A URL carrying an API key or a session token never leaves the tab you typed it in.
Browse all developer tools