URL Encoder & Decoder
Encode or decode URL components without sending data away. Your work stays on this device whenever possible.
How to use URL Encoder & Decoder
- Paste a link, fragment or query string into the URL, URI Component, or Query String box.
- Choose a 'Mode': 'Component', 'Full URL', 'RFC 3986 Strict' or 'Query String Parser & Table Editor'.
- Set 'Action' to Encode or Decode; tick 'Batch mode' to process each line independently, or the form option to swap spaces for plus signs.
- Press 'Process URL' and read the character-count line under the box.
- In the parser mode, edit the Key and Value cells, press '+ Add Parameter', then 'Rebuild URL / Query String'.
Worked example
In 'Component' mode with 'Encode', input name=Ann & Bob/50% and press 'Process URL'. The result is name%3DAnn%20%26%20Bob%2F50%25, since = is %3D, a space %20, & is %26, / is %2F and % is %25. In 'Full URL' mode, https://example.com/a b?q=x y becomes https://example.com/a%20b?q=x%20y.
When to use this tool
- Building a redirect link whose query value contains an ampersand.
- Reading a long tracking URL as a tidy key and value table.
Important limitations
A complete URL and an individual query value require different encoding rules. Double encoding turns existing percent signs into %25.
Frequently asked questions
What is the difference between Component and Full URL?
Component encodes separators such as / ? & = and is meant for a single value. Full URL leaves those characters alone so a whole address keeps working.
What does RFC 3986 Strict add?
On top of component encoding it also converts the characters ! ' ( ) and *, which the browser's built-in function leaves untouched, into %21, %27, %28, %29 and %2A. Some strict APIs and signature schemes expect this.
Why does decoding a Full URL keep %2F?
Full URL decode uses decodeURI, which deliberately leaves reserved separators such as %2F, %3F and %26 encoded so the address keeps its structure. Switch to Component mode when you want every sequence turned back into text.
When is a plus sign read as a space?
In decode mode a plus sign becomes a space only when the form-encoding box is ticked. The query string parser, by contrast, always reads + as a space, matching how HTML forms submit values.
What happens to duplicate parameter names?
The table keeps every pair, but the JSON in the result box is built from an object, so with ?tag=a&tag=b it shows only the last value.