JSON Formatter
JSON Formatter for developers — instant, offline-style and privacy-safe.
Turn percent-encoded text back into readable characters — %20 becomes a space, %26 an ampersand. Uses decodeURIComponent, in your browser.
Your browser is preparing the tool. It runs 100% locally.
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.
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.
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.
%20 → space
%2F → slash
%3D → equals
%26 → ampersand
%C3%A9 → é
plus sign → stays a plus (not a space)a%2Fb%3Fc%3Dd → a/b?c=dOnly percent-codes are decoded. A plus is left unchanged, because it means a space only in HTML form data.
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.
| Method | decodeURIComponent (browser built-in) |
|---|---|
| Decodes | percent-codes, including UTF-8 sequences |
| Plus sign | left as a plus (not a space) |
| Invalid input | raises an error, does not guess |
| Reverses | encodeURIComponent (the URL encoder) |
| Where it runs | In your browser — nothing uploaded |
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.
Make a long, encoded query string human-readable.
See the real values inside an encoded API call or redirect.
Decode percent-encoded parameters captured in server logs.
Pull a readable search term or path out of an encoded link.
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.
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.
JSON Formatter for developers — instant, offline-style and privacy-safe.
JSON Validator for developers — instant, offline-style and privacy-safe.
Base64 Encoder for developers — instant, offline-style and privacy-safe.
Fast, free Hash Generator that runs entirely client-side in your browser.
Fast, free UUID Generator that runs entirely client-side in your browser.
Fast, free CSS Minifier that runs entirely client-side in your browser.
It is free, private and runs entirely in your browser — no sign-up, no uploads, no limits.