1. Pick a mode
Pick encode or decode, then choose component or full-URL scope.
URL-encode and decode text.
Mode
Scope
Component escapes every reserved char. Full URL preserves `:` `/` `?` `#`.
Output
Encoding and decoding happen in this browser tab. Nothing is uploaded.
Pick encode or decode, then choose component or full-URL scope.
Paste the string. Component mode escapes every reserved character (use for query values). Full-URL mode preserves `:` `/` `?` `#` etc. (use for whole URLs).
Copy the result. Runs in your browser via the built-in `encodeURIComponent` / `encodeURI`.
The URL Encoder & Decoder converts text to and from percent-encoding — the %XX escapes that let spaces, punctuation, and non-ASCII characters travel safely inside a web address. Pick encode or decode, then choose the scope: component mode (encodeURIComponent) escapes every reserved character and is the right choice for a single query-string value, while full-URL mode (encodeURI) leaves structural characters like : / ? and # intact so you can encode a whole URL without breaking it.
It is a quick fix for building query strings, debugging links that contain spaces or special characters, decoding a messy URL someone pasted, or preparing redirect and tracking parameters. When decoding fails because of a malformed escape such as %ZZ, the tool tells you rather than silently mangling the text. Everything runs in your browser through the standard built-in helpers, so your input is never sent anywhere, there are no usage limits, no account is required, and it works offline after the first load.
`encodeURIComponent` (component) escapes every reserved character — use it when the value is a single URL piece like a query parameter value. `encodeURI` (full URL) leaves URL-structure characters like `:` `/` `?` `#` alone — use it when the input is already a complete URL.
Decoding fails when the input contains a malformed `%` escape — for example `%ZZ` or a stray `%` followed by less than two hex digits. The error message reports it without uploading anything.
No. Encoding uses the browser's built-in helpers — your input is never sent anywhere.