URL Encode / Decode
Encode or decode URLs and query strings instantly. Convert special characters to their %-escaped form, or reverse the operation to inspect human-readable values. Handles UTF-8, Cyrillic, Arabic, emoji and reserved RFC 3986 characters correctly.
How to use
- 1
Paste the URL or text
Drop the value to encode or decode into the input area.
- 2
Choose direction and mode
Pick Encode or Decode, and full URL vs component, plus space-as-plus.
- 3
Copy the result
The output updates live. Click Copy to grab it.
Technical details
URL encoding (percent-encoding) replaces unsafe characters in URIs with `%HH` where HH is the hexadecimal byte value in UTF-8. RFC 3986 reserves a specific set of characters (`!*'();:@&=+$,/?#[]`) that must be encoded when they appear inside a component value but kept literal when they serve their structural role.
JavaScript provides two encoding primitives: `encodeURI` keeps reserved characters literal (use it for full URLs) while `encodeURIComponent` encodes everything except `A-Z a-z 0-9 - _ . ! ~ * ' ( )` (use it for individual query values). The tool lets you pick the right primitive depending on whether you are encoding a full URL or just a parameter.
Decoding is the inverse: `%E2%9C%85` decodes to ✅. The tool auto-detects double-encoded values (`%25E2%259C%2585`) and warns you, because decoding once is usually enough and decoding twice corrupts data when it contains literal percent signs.
For form submission, browsers historically used `application/x-www-form-urlencoded` which replaces spaces with `+` instead of `%20`. The tool supports both modes via a checkbox.
Frequently asked questions
Encode or encodeURIComponent?
Does it handle emoji and Cyrillic?
What about double-encoded URLs?
Should spaces become %20 or +?
Is anything sent to a server?
This tool was tested and calibrated by our engineering team. All processing happens locally in your browser — your files and data never leave your device.