Percent-encode text so it's safe to drop into a URL or query string, or decode an encoded string back to plain text — instantly, in your browser. GhostDev uses the standard encodeURIComponent rules, so spaces, ampersands, and Unicode are escaped correctly. Everything runs locally with no upload endpoint, so your parameters and tokens never leave your device. Free, no signup, no ads on the tool.
Percent-encoding exists because URLs have a grammar: characters like ?, &, #, / and space carry structural meaning, so any of them appearing inside a value has to be escaped or the URL parses wrongly. Encoding replaces each such byte with a % followed by its hexadecimal value. The most common bug this tool solves is a query parameter containing an ampersand — unencoded, everything after it is read as a separate parameter and silently lost.
Paste your text
Enter the text to encode, or a percent-encoded string to decode.
Choose Encode or Decode
Encode escapes reserved and non-ASCII characters; Decode reverses it. Output updates as you type.
Copy the result
Copy the encoded or decoded text. It all ran in your browser.
Component vs whole-URL encoding
Encoding a complete URL must preserve :// and the separators; encoding a single parameter value must escape them. These correspond to encodeURI and encodeURIComponent, and using the wrong one is the usual cause of a URL that looks encoded but still breaks.
Spaces: %20 or +
In a path segment a space is %20. In a query string, form encoding historically used +. Both appear in the wild; if a value arrives with literal plus signs where spaces should be, this mismatch is why.
Encoding twice is a real failure mode
Running an already-encoded string through again turns % into %25, so %20 becomes %2520. If you're seeing %25 in a URL that should be clean, something in the chain encoded it a second time.
What encoding rules does it use?
The standard encodeURIComponent / decodeURIComponent rules, which escape everything that isn't safe inside a URL component — including spaces (as %20), &, ?, and Unicode.
Is my text uploaded?
No. Encoding and decoding happen in your browser with no server round-trip and no upload endpoint.
What's the difference from encoding a whole URL?
This encodes a single component (like one query value). It escapes characters such as / and ? that you'd want to keep literal in a full URL — so use it on the parts, not the whole address.
Why did decoding fail?
A malformed percent-escape (like a lone % or %ZZ) can't be decoded. The tool flags it so you can fix the string.
Does it handle Unicode?
Yes — multi-byte UTF-8 characters are escaped and unescaped correctly in both directions.
Why did my URL break after adding a parameter?
Almost always an unencoded &, #, or = inside the value. The parser treats them as structure rather than content, so the parameter is truncated at that point.
Does this handle non-English characters?
Yes. Characters outside ASCII are encoded as their UTF-8 bytes, each shown as a %XX pair — which is why a single accented letter or emoji can expand to several escapes.
Every GhostDev tool runs entirely in your browser. Your file is never uploaded — there's no upload endpoint to send it to.