URL

URL Encode / Decode

Compare percent encodings and control decoding layers

Encoding
πŸ”’ 100% client-side β€” your data never leaves this page
Maintained by Evanβ€’Updated: September 29, 2026
Options
Input
Auto: URL Encode

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 +.

Output
Output will appear here
Page reading mode

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

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

01

Inspect one encoding layer at a time

Goal: Determine whether %252F represents an encoded slash or a literal %2F at the current layer.

  1. Select Decode, open Advanced, and turn off nested decoding.
  2. Enter %252F: one pass returns %2F. Enter that result separately to obtain /.
  3. 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