Skip to main content
Free Free Tool

URL Encoder / Decoder

Percent-encode or decode any URL, query string, or path segment. Toggle between RFC 3986 and form-encoded modes.

  • Free · no sign-up
  • Instant results
  • Privacy-friendly

Other SEO Tools

What percent-encoding is for

URLs may only contain a restricted set of ASCII characters. Everything else — spaces, accented letters, emoji, and the punctuation that carries structural meaning — has to be represented as a percent sign followed by the hexadecimal value of each byte. A space becomes %20, an ampersand becomes %26, and a character outside ASCII becomes several percent-escapes, one per UTF-8 byte.

This is why encoding matters so much for query parameters. Characters like &, =, ?, # and / are how a URL is parsed. If a value you are inserting contains one of them unencoded, the URL is cut apart in the wrong place — a search for "fish & chips" silently becomes a parameter named "chips" unless the ampersand is escaped.

Encode the value, never the whole URL

The most common mistake is running an entire URL through an encoder. That escapes the structural characters too, turning https://example.com/search?q=x into a single meaningless string where the colon, slashes, question mark and equals sign have all been neutered.

Encode each parameter value on its own, then assemble the URL around them. The delimiters must stay literal, because they are what gives the URL its shape — the encoding exists to stop values being mistaken for structure, not to escape the structure itself.

The + versus %20 confusion

Spaces have two encodings and which is correct depends on where in the URL you are. In a query string submitted by an HTML form, a space is traditionally a plus sign, from the older application/x-www-form-urlencoded format. Everywhere else — and in a path segment always — a space is %20.

The consequence is that decoding a plus sign is ambiguous. If a value legitimately contains a plus, such as a phone number in +44 form or a tagged email address, a form-style decoder will turn it into a space and corrupt the data. That is why a plus in a value should be encoded as %2B whenever the value might be read by a form-style decoder, and it is a genuine and frequent source of bugs in email address handling.

Double-encoding and how to spot it

Encoding an already-encoded string escapes the percent signs themselves: %20 becomes %2520, because % encodes to %25. Decoding it once then leaves you with the literal text %20 rather than a space.

If you see %2520, %253A or %2526 in a URL, something in the chain has encoded twice — commonly a value that was encoded by application code and then encoded again by a framework or a redirect layer. Run the string through decode repeatedly here to find how many layers deep it goes, then remove the duplicate encoding step rather than compensating with an extra decode.

Non-ASCII, internationalised domains, and SEO

Non-ASCII characters in a path are encoded per UTF-8 byte, so a single accented letter becomes two escapes and most CJK characters become three. That is correct and browsers display it back as readable text in the address bar, but it makes URLs long and ugly when shared as raw text.

Domain names work differently: they use Punycode rather than percent-encoding, so an internationalised domain appears as an xn-- prefixed form. For SEO, readable ASCII slugs with hyphens are still the safest choice — they survive copying, sharing and logging intact, and hyphens are treated as word separators by search engines in a way that underscores are not.

Frequently asked questions

Should I encode the whole URL? #
No — encode each parameter value individually and then build the URL around them. Encoding the whole thing escapes the colon, slashes and question mark that give the URL its structure, producing a string no server can parse.
Is a space %20 or a plus sign? #
Both exist. Form-submitted query strings traditionally use +, while %20 is correct everywhere else and always in a path. Because of that ambiguity, a literal plus inside a value should be encoded as %2B or it may be decoded back as a space.
Why do I see %2520 in my URLs? #
Double encoding. The % of an existing %20 was itself encoded to %25. It means something encoded an already-encoded value — usually application code plus a framework or redirect layer both doing it. Remove the duplicate step rather than adding an extra decode.
Which characters actually need encoding? #
Anything outside unreserved ASCII — letters, digits, hyphen, period, underscore and tilde — plus any reserved character appearing inside a value rather than as a delimiter. In practice: spaces, &, =, ?, #, /, +, % and all non-ASCII text.
Do encoded URLs hurt SEO? #
Not directly; search engines decode them correctly. Readable ASCII slugs are still better for humans, since they survive sharing and logging intact. Use hyphens rather than underscores as word separators, which search engines handle better.
Why did my email address break in a URL? #
Almost certainly a plus-addressed email like [email protected]. The plus was decoded as a space by a form-style decoder. Encode it as %2B in the value and it survives correctly.