
Percent-encode text for use in a URL, or decode it back to readable form. Choose whether you're encoding a single value or a whole URL — the two need different treatment, and using the wrong one is what turns a working link into a broken one.
Result
—
Type below to see the conversion.
Encode or Decode
Paste a URL, a query-string value, or any text.
Form submissions send a space as +; everywhere else + is a literal plus.
This looks like a URL — here's what each part contains
All encoding and decoding happens locally in your browser. No URL or text is uploaded to Flipper File.
Free URL Encoder & Decoder
URL encoding — also called percent-encoding — replaces characters that have a
special meaning in a URL, or that can't travel safely through one, with a % followed by two hexadecimal digits. A space becomes %20, an ampersand becomes %26.
Encoding a value is not the same as encoding a URL
This is the distinction that catches people out. In https://example.com/search?q=hello world, the characters : / ? = are doing structural work —
they separate the scheme, host, path and query. Encoding them produces https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world, which is no longer a
URL at all; it's one long opaque string that no browser or server will route.
Only the value needs encoding: q=hello%20world. Pick a single value when you're encoding one parameter, and a whole URL when you want the structure left intact.
Form values use + for a space
Data submitted as application/x-www-form-urlencoded encodes a space as + rather than %20. Both decode back to a space in that context, but
outside a form a + is a literal plus sign — which is why decoding first+last can give you either first last or first+last depending on where the data came from.
Double encoding
If text is encoded twice, % itself gets encoded to %25, so %20 becomes %2520. This shows up when a value is encoded by
application code and then again by a framework. Decoding once gives you %20 rather than a space, which is the tell.
Which characters are left alone
The unreserved set — A–Z a–z 0–9 - _ . ~ — never needs
encoding. JavaScript's encoder also leaves ! * ' ( ) alone, though some
stricter server-side encoders do escape those.
Common URL Encoding Examples
- Spaces in a path
Input:/files/My Project Plan.pdf
Encoded:/files/My%20Project%20Plan.pdf - Query string with reserved characters
Input:q=rock & roll? yes/no
Encoded:q%3Drock%20%26%20roll%3F%20yes%2Fno - Full URL with query + hash
Input:https://example.com/search?q=flipper file&tags=a&tags=b#section 1
Encoded:https://example.com/search?q%3Dflipper%20file%26tags%3Da%26tags%3Db%23section%201
Tip: Only encode the value parts if you’re building URLs programmatically. - “+” treated as a space (form encoding)
Input:first+last=John+Doe
Decode (with “+ as space” checked):first last=John Doe
Decode (unchecked):first+last=John+Doe - Unicode / Emoji
Input:status=All good
Encoded:status%3DAll%20good%20%E2%9C%85 - Already-encoded percent signs
Input:name=100% guaranteed
Encoded safely:name%3D100%25%20guaranteed
Single%becomes%25to avoid malformed sequences. - Path separators and dots
Input:/api/v1/users/../admin?impersonate=true
Encoded:%2Fapi%2Fv1%2Fusers%2F..%2Fadmin%3Fimpersonate%3Dtrue
When encoding a whole string, slashes are encoded too. Usually you encode only parameter values.
Use Encode to percent-escape reserved characters for query strings and form values. Use Decode to bring percent-encoded data back to readable text. If you’re decoding form data (application/x-www-form-urlencoded), check the “+ as space” option.
