URL Decoder

Turn percent-encoded text back into readable characters — %20 becomes a space, %26 an ampersand. Uses decodeURIComponent, in your browser.

Developer Tools Free No upload Instant

Loading URL Decoder…

Your browser is preparing the tool. It runs 100% locally.

Quick Answer

Paste percent-encoded text and the tool decodes it with the browser's decodeURIComponent, turning %20 back into a space, %2F into a slash, and %C3%A9 back into é. One thing to watch: a plus sign is left as a plus, not turned into a space — that conversion only applies to HTML form data. Malformed codes (a lone percent sign) raise an error rather than guessing. It runs entirely in your browser.

What the URL Decoder Does

Paste a percent-encoded value — the kind you see in a URL or query string — and you get the readable original back. Each %-code becomes the character it stands for, and sequences of UTF-8 %-codes are reassembled into accented or non-Latin letters and emoji.

It is the exact reverse of URL (component) encoding. What encodeURIComponent turned into %-codes, decodeURIComponent turns back, so a round trip through the encoder and this decoder returns your original text unchanged.

How It Works

The tool runs your text through JavaScript's decodeURIComponent, which scans for percent signs followed by two hex digits and replaces each sequence with the byte it represents, then interprets runs of bytes as UTF-8 to rebuild multi-byte characters.

It does not touch a plus sign. In a URL a plus means a literal plus, except in HTML form submissions, where a plus stands for a space — a convention decodeURIComponent does not follow. If your text comes from a submitted form, replace plus signs with spaces before decoding.

Data source & conversion logic

  1. Read the encoded text. Take the percent-encoded string you pasted.
  2. Replace the percent codes. Turn each percent sign and its two hex digits into the byte it represents.
  3. Rebuild UTF-8 characters. Interpret runs of bytes as UTF-8 to restore accented and non-Latin characters.
  4. Report malformed input. If a percent sequence is invalid, show an error instead of guessing.

What it decodes

%20 → space %2F → slash %3D → equals %26 → ampersand %C3%A9 → é plus sign → stays a plus (not a space)
Worked example
a%2Fb%3Fc%3Dd → a/b?c=d

Only percent-codes are decoded. A plus is left unchanged, because it means a space only in HTML form data.

Privacy

Decoding runs entirely in your browser with a built-in function. The text you paste is never uploaded, so it is safe to decode URLs that contain private parameters.

Decoding reveals whatever was encoded — percent-encoding is not encryption. If a value looks scrambled after decoding, it was encrypted or hashed separately; this tool only undoes the percent-encoding layer.

Technical Details

MethoddecodeURIComponent (browser built-in)
Decodespercent-codes, including UTF-8 sequences
Plus signleft as a plus (not a space)
Invalid inputraises an error, does not guess
ReversesencodeURIComponent (the URL encoder)
Where it runsIn your browser — nothing uploaded

Standards & references

  • Percent-decoding (RFC 3986) — reverses the URL standard's percent-encoding, turning each percent-and-two-hex-digits back into its byte; UTF-8 byte runs become the original characters.
  • decodeURIComponent — the JavaScript function this tool uses; it decodes percent-codes but leaves a plus sign as a plus.
  • Plus-for-space is form-only — the plus-means-space rule belongs to the form-urlencoded format that HTML forms submit, not to URLs in general, so a general decoder leaves the plus alone.

Accuracy & Limitations

A plus sign is not turned into a space. In query strings from HTML forms a plus means a space, but decodeURIComponent does not apply that rule. If your input came from a submitted form, replace each plus with a space before decoding.

Malformed input raises an error. A lone percent sign, or a percent followed by something that is not two hex digits, is invalid; the tool reports the error rather than returning a wrong guess. Check the string and fix the stray percent.

It only undoes percent-encoding. If the decoded text still looks like gibberish, it was probably Base64-encoded, encrypted or hashed as well — those are separate layers this tool does not touch.

Decoding the same text twice can corrupt it. If a value was encoded once, decode it once; decoding again can turn a legitimate %25 (an encoded percent sign) into a bare percent and misread the rest.

It expects UTF-8. Percent-codes that represent bytes from a different character set may decode into the wrong characters, since modern URLs assume UTF-8.

Real-World Use Cases

Reading URLs

Make a long, encoded query string human-readable.

Debugging requests

See the real values inside an encoded API call or redirect.

Log analysis

Decode percent-encoded parameters captured in server logs.

Recovering values

Pull a readable search term or path out of an encoded link.

When to use it — and when not to

Good for

  • Reading percent-encoded URLs and parameters
  • Reversing encodeURIComponent output
  • Debugging encoded API requests
  • Recovering a value from an encoded link

Not the best choice for

  • Decoding a plus to a space automatically
  • Undoing Base64, encryption or hashing
  • Fixing a string with stray percent signs
  • Non-UTF-8 legacy encodings

Came from an HTML form where a plus means a space? Replace plus with space first, then decode. Looks like Base64, not percent-codes? Use a Base64 decoder. Want to encode instead? Use the URL encoder.

Frequently Asked Questions

What does URL decoding do?
It reverses percent-encoding, turning %-codes back into the characters they represent. %20 becomes a space, %3D becomes an equals sign, and UTF-8 sequences like %C3%A9 become accented letters such as é.
Why is my plus sign not becoming a space?
Because decodeURIComponent treats a plus as a literal plus. The plus-means-space rule only applies to HTML form submissions. If your text came from a form, replace each plus with a space before decoding.
Why did I get an error?
The input has an invalid percent sequence — usually a lone percent sign or a percent not followed by two hex digits. The tool reports the error instead of guessing. Find the stray percent and fix or encode it.
The result is still unreadable — why?
This tool only removes the percent-encoding layer. If the text is still scrambled, it was probably Base64-encoded, encrypted or hashed as well, which are separate steps you would undo with their own tools.
Is it the exact reverse of the URL encoder?
Yes. It undoes encodeURIComponent, so encoding a value and then decoding it here returns your original text unchanged.
Does it handle accented and non-English characters?
Yes. It reassembles runs of UTF-8 percent-codes into the original characters, so %C3%A9 becomes é and multi-code emoji are restored.
Can I decode a whole URL?
Yes, you can paste a whole encoded URL and read it. Just remember the separators may have been encoded if it was originally encoded as a single component.
Is decoding the same as decryption?
No. Percent-encoding is not encryption — it hides nothing. Decoding simply restores readable characters; it does not break any security.
Should I decode more than once?
Only as many times as it was encoded. If a value was encoded once, decode once; decoding again can turn an encoded percent sign (%25) into a bare percent and corrupt the rest.
What if the text has no percent codes?
Then there is nothing to decode and you get the same text back. The tool only changes valid percent sequences.
Is my text uploaded?
No. Decoding happens entirely in your browser; nothing leaves your device.
Why assume UTF-8?
Modern URLs encode non-ASCII characters as UTF-8 bytes, so the decoder interprets byte runs as UTF-8. Percent-codes from an older, different encoding may decode to the wrong characters.

References

Uses the browser's decodeURIComponent, which decodes percent-codes (including UTF-8 runs) but deliberately leaves a plus sign as a plus — the plus-means-space rule is form-data only; malformed percent sequences raise an error rather than a wrong guess.

PopularHot

JSON Formatter

JSON Formatter for developers — instant, offline-style and privacy-safe.

DeveloperOpen Tool
Popular

JSON Validator

JSON Validator for developers — instant, offline-style and privacy-safe.

DeveloperOpen Tool
Popular

Base64 Encoder

Base64 Encoder for developers — instant, offline-style and privacy-safe.

DeveloperOpen Tool
Popular

Hash Generator

Fast, free Hash Generator that runs entirely client-side in your browser.

DeveloperOpen Tool
Popular

UUID Generator

Fast, free UUID Generator that runs entirely client-side in your browser.

DeveloperOpen Tool
Trending

CSS Minifier

Fast, free CSS Minifier that runs entirely client-side in your browser.

DeveloperOpen Tool

Ready to try the URL Decoder?

It is free, private and runs entirely in your browser — no sign-up, no uploads, no limits.