URL Encode / Decode
Compare percent encodings and control decoding layers
Paste text to compare two encodings or decode percent escapes. Auto uses %XX to choose a direction; Advanced controls decoding layers and the meaning of +.
The full guide also includes pitfalls, worked examples, snippets, FAQs, and related tools for checking results or troubleshooting.
About this tool
Compare encodeURIComponent, which escapes URL separators, with encodeURI, which preserves them. Decode mode uses decodeURIComponent and can apply one pass or up to four nested passes. The form-style + to space option and nested decoding are enabled by default and can be changed in Advanced mode. Results update as you type; malformed percent escapes or invalid UTF-8 are reported in Decode mode. Inputs and options are saved as a local draft, removable with Clear.
Suggested Workflow
Content SEO Quick Audit Before You Publish
A lightweight checklist to catch technical and on-page SEO misses in minutes.
Base64 Decoding: Reproduce UTF-8, URL-safe, Padding, and Data URL Cases
Use known inputs and outputs to separate Base64 errors from URL escaping, short-input auto detection, and binary data displayed as text.
URL Parameter Encoding Playbook for Tracking and Redirect Safety
Compare raw and decoded query fields using repeatable examples for Chinese text, plus signs, repeated keys, empty values, and signed links.
Failure Clinic (Common Pitfalls)
Decoded text appears to contain extra query parameters
Cause: Decoding an entire string turns %26 and %3D inside values into visible & and =. The readable result no longer preserves the original parameter boundaries.
Fix: Use the original encoded URL in URL Parser to inspect its query rows. Do not split the fully decoded text into parameters.
Production Snippets
Embed a destination URL inside one query value
text
Input: https://example.com/a?x=1&y=2
encodeURIComponent:
https%3A%2F%2Fexample.com%2Fa%3Fx%3D1%26y%3D2
Example placement:
https://app.example.com/go?next=https%3A%2F%2Fexample.com%2Fa%3Fx%3D1%26y%3D2
encodeURI leaves the destinationβs structural : / ? = & characters unchanged.Scenario Recipes
Inspect one encoding layer at a time
Goal: Determine whether %252F represents an encoded slash or a literal %2F at the current layer.
- Select Decode, open Advanced, and turn off nested decoding.
- Enter %252F: one pass returns %2F. Enter that result separately to obtain /.
- For a literal +, turn off Treat + as a space. Keep it enabled only when the input uses form-style plus encoding.
Result: You choose where decoding stops. With nested decoding enabled, the tool applies up to four passes; the + option is applied on every pass.
Frequently Asked Questions
Does Auto reliably distinguish plain text from encoded input?
Auto looks for a %XX escape. A literal string such as %20 is therefore treated as encoded text, while a bare + does not trigger Decode. Select Encode or Decode explicitly when that guess is wrong.
Does encodeURI encode values inside a full URL for me?
No. It preserves reserved separators such as &, = and # wherever they occur. To put one of those characters inside a parameter value, encode that value separately before assembling the URL.
Why does Decode report an error for % or %E4?
A bare percent sign is not a complete escape, and %E4 is not a complete UTF-8 sequence. Decode requires valid percent-encoded UTF-8; it does not repair bytes or guess legacy character sets.
Does percent-encoding encrypt a value?
No. It changes the representation of characters and bytes. Anyone can decode the result; it adds no confidentiality or signature.
Keep browsing