Percent-encode text for URLs or decode encoded values back to readable Unicode. Choose component or full URL mode. Component mode can optionally map spaces to + for form-style query values. Malformed percent sequences and broken UTF-8 byte runs surface as readable errors instead of silent mojibake.
Verified examples
| Input |
Mode |
Output |
한글 검색 |
component |
%ED%95%9C%EA%B8%80%20%EA%B2%80%EC%83%89 |
한글 검색 |
component + plus |
%ED%95%9C%EA%B8%80+%EA%B2%80%EC%83%89 |
%ED%95%9C%EA%B8%80 |
component decode |
한글 |
Encoding A&B in component mode turns & into %26, which keeps a single query parameter intact. Full URL mode is for polishing an already structured URL without destroying :/?#&= separators.
Build a query safely
- Hold raw values separately (
q, sort, …).
- Encode each value in component mode.
- Assemble
? and & yourself—or verify what URLSearchParams emits.
- Decode only on the receiving side, once.
Common failures: using full-URL encoding for a single value (ampersands survive), double-encoding (%25 appears), and decoding + as space inside paths (C++ breaks). Round-trip decode→encode to see whether your plus/space policy matches the server.
Use the workbench when the next step is JSON or hashing. Keep production tokens out of the box.
Debugging checklist
- Does the address bar show Unicode while logs show percent-encoding? Both can be correct.
- Did someone encode an entire URL with component mode? Then
https%3A%2F%2F… appears and the link dies.
- Do you see
%25 sequences? Double-encoding is likely.
- Does
+ appear in a path? It is a plus character, not a space, unless a form decoder wrongly runs.
Internationalized domain names use Punycode on the host, not percent-encoding. A single URL may combine Punycode in the host with percent-encoding in the path and query. Decode the right segment with the right tool mode.
When integrating, prefer URL and URLSearchParams in code, and use this page to explain surprising encodings to teammates. Keep live session tokens out of the input box even though processing is local.
Length planning for Korean queries
Each Hangul syllable expands to three UTF-8 bytes and nine characters of %HH text. A 100-syllable query value can approach 900 characters encoded. Gateways with 2–8 KiB request-line limits feel that quickly. Prefer opaque ASCII ids in public URLs when you control the schema, and keep human-readable Hangul for display only.
Component-encode every value, never the structural punctuation you still need. That single rule eliminates most homemade URL bugs.
Query strings inherited from HTML forms may use + for spaces. Paths should keep %20 and encode plus as %2B. This tool exposes both policies so you can match the peer you are talking to instead of guessing from a single browser address bar.
When you paste a full URL into component mode by mistake, stop and switch modes rather than trying to undo the damage by hand.
FAQ
Component mode versus full URL mode?
Component mode follows encodeURIComponent/decodeURIComponent. Full URL mode follows encodeURI/decodeURI and leaves more reserved characters intact.
Can spaces become plus signs?
Yes in component mode via the space-as-plus option. Do not treat plus as space inside path segments.
Is decoding recursive?
No. One pass only. %252F becomes %2F, not /.
Is input uploaded?
No. Encoding and decoding stay in the browser.