URL encoder & decoder
Encode and decode URL components, full URLs and form values.
Processed locally · No input or result uploaded
Private by design · Processed locally in your browser. No input/result uploads or saved history. Optional action metadata requires consent.
Clears on refresh or leaving. Copy and Download create an external copy when clicked. Limits: 1,048,576 UTF-16 units of input · 8,388,608 UTF-16 units of output. Text is never truncated.
Choose the right encoding context
Use a component for one dynamic value, Full URL for a complete URL or relative path, and Form value for form data. Conversion preserves whitespace and Unicode normalization, with one decoding pass at a time. Textarea line endings follow your browser’s text conventions.
Frequently asked questions
What is percent encoding?
Percent encoding represents characters as % followed by hexadecimal byte values. Unicode characters use UTF-8 bytes. Choose the context that matches where the value will go.
What is the difference between encodeURI and encodeURIComponent?
Full URL uses encodeURI and keeps URL separators such as /, ?, & and =. URL component uses encodeURIComponent for a single path segment or query value. Both native encoders leave !'()* unescaped; this tool does not add a strict RFC3986 variant. Full URL also accepts relative paths without normalizing them.
Should spaces be %20 or +?
URL component and Full URL encode spaces as %20. Form values use + for spaces and %2B for a literal plus. Only Form value decoding turns + into a space.
Why did %20 become %2520?
The percent sign was encoded again as %25. Decode only once to reverse one encoding pass; %2520 becomes %20, not a space.
Are my tokens or URLs uploaded?
No. Your input is processed in this tab, without uploads or history. It is never saved by this tool and clears when you refresh or leave. Copy and Download create an external copy only when you click them.
Related tool: JSON Formatter & Validator
See what your webhooks send
Create a receiving URL, inspect request bodies and headers privately, and control the HTTP response. Start debugging without an account.