URL Encoder and Decoder
Keep URL components, form values and whole-URL inspection separate so that spaces and plus signs behave as you expect.
Processing stays in your browser. Your text is not uploaded, saved, or used to open a destination.Encode or strictly decode one component, not a whole URL. A literal + stays + when decoding.
Input text
0 / 1,048,576 UTF-8 bytesMaximum 1 MiB UTF-8 input. Text is kept in memory only; refreshing clears it. No input is fetched, opened or uploaded. Whitespace is preserved in encoder modes.
Choose a mode and action to begin.
Output text
How to encode, decode or inspect
- Choose URL component, Form value or Inspect URL, then paste your text.
- Press Encode, Decode or Inspect URL. Processing happens only on your explicit action.
- Review the output, then copy it or download the complete UTF-8 url-result.txt file. Clear, examples and Swap offer in-memory Undo.
Worked examples: the plus sign matters
Component encoding of a+b&c=d gives a%2Bb%26c%3Dd. Component decoding of a+b keeps the plus sign.
Form encoding of a+b c gives a%2Bb+c. Form decoding of a+b gives a b. Form mode handles one field value, not a whole query string.
Inspecting https://example.com/p?a=1&a=2&empty=&q=a+b#top keeps both a parameters, an empty value, and decodes q to a b in the query table.
Exact conversion rules
Component encoding uses encodeURIComponent, not strict RFC 3986 encoding: ASCII letters, digits, hyphen, underscore, period, exclamation mark, tilde, asterisk, apostrophe and parentheses remain unchanged. Other characters are UTF-8 percent-encoded.
Form encoding uses URLSearchParams value rules: ASCII letters, digits and * - . _ remain unchanged; spaces become +, literal + becomes %2B, and tilde becomes %7E. Invalid Unicode surrogate sequences are rejected rather than silently replaced.
Decoding happens exactly once. %252F becomes %2F, not a slash. Encoding %2F gives %252F: the tool never guesses whether text is already encoded. Encoder whitespace is preserved, and an empty input produces an empty output.
Standalone decoders reject malformed escapes and malformed UTF-8, such as %, %GG or %C3%28, preserving the input. Form Decode first changes + to space. The inspection query table instead uses the platform's forgiving URLSearchParams parser, which can replace malformed UTF-8.
Inspection and limitations
Only absolute HTTP/HTTPS URLs are accepted; relative URLs, other schemes and credential-bearing authorities are rejected. Inspection never fetches a URL, checks its existence, expands redirects or labels a destination safe.
Parsed/normalized fields may lowercase hosts, serialize internationalized names to punycode, resolve path segments, remove tabs/newlines or omit default ports. The original input remains separate. Raw query and fragment fields show serialized values without decoding. Ordered query pairs preserve duplicate and empty names and values.
Input is limited to 1 MiB UTF-8. Processing uses a cancellable local worker; input or mode changes discard old results. The table previews the first 100 query pairs; the complete JSON text export retains every pair. Downloads and Copy always include complete accepted output. Swap is unavailable if an encoded result exceeds the input limit.
Drafts and undo exist only in memory and disappear on refresh. If clipboard access is denied, select the read-only output and copy it manually. This release does not fetch, shorten, scan or crawl URLs.
How was this tool?
Help us improve URL encoder decoder.
Opens your email app; you send it there. No email app? Copy your comment and email feedback@tooltulip.com.
Don't include sensitive data.
0/300