Encode text to a percent-encoded URL string or decode it back — instantly, no signup required.
🔒 Runs in your browser — your text never leaves this page%20 — space%26 — &%3D — =%3F — ?%2F — /%3A — :%40 — @%23 — #URL encoding — also called percent-encoding — is a method defined in RFC 3986 for representing characters that are not allowed or that have special meaning inside a URL. Every unsafe character is replaced by a percent sign (%) followed by two hexadecimal digits representing the character's byte value. For example, a space becomes %20, an ampersand becomes %26, and a hash becomes %23.
URLs can only contain a limited set of ASCII characters. Everything outside that set — including spaces, special punctuation, characters from other languages, and emoji — must be encoded before being placed in a URL. Without encoding, browsers and servers may misinterpret the URL, break the query string, or return an error.
A common point of confusion: why do you sometimes see spaces as + instead of %20? The + convention comes from the older application/x-www-form-urlencoded format used in HTML forms. It only applies inside query strings. In the path segment of a URL, %20 is the only correct representation. Our URL encoder always uses %20 (via encodeURIComponent) for maximum cross-system compatibility.
Your text never leaves your browser. All encoding and decoding happens locally in JavaScript — nothing is sent to any server.
The table below shows the most common characters that require encoding, along with their percent-encoded equivalents and practical examples.
| Original | Encoded | Notes |
|---|---|---|
| hello world | hello%20world | Space → %20 (universal, not +) |
| & | %26 | Ampersand — separates query params; must be encoded in values |
| = | %3D | Equals sign — key=value separator in query strings |
| # | %23 | Hash — marks a fragment; browsers stop sending the rest to the server |
| ? | %3F | Question mark — starts the query string; encode it in values |
| @ | %40 | At sign — used in email and authentication URIs |
| ą ę ó (Polish) | %C4%85 %C4%99 %C3%B3 | Multi-byte UTF-8 characters each encode to multiple percent pairs |
| 😀 (emoji) | %F0%9F%98%80 | 4-byte UTF-8 character → 4 percent-encoded pairs |
| https://example.com/search?q=hello world&lang=pl | https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Dpl | Full URL with query string — encode the entire value, not just the parameter |
city=New York will break the request unless encoded as city=New%20York. Use this tool to quickly encode values during development and testing.utm_campaign=Wiosna 2026 — Sale), the URL must be encoded before use. Our tool encodes the full string so your tracking links work correctly in every email client and ad platform.URL encoding (percent-encoding) is the process of converting characters that are not permitted in a URL into a safe ASCII format. Each unsafe character is replaced by a % sign followed by two hex digits. It is defined in RFC 3986 and used by browsers, servers, and APIs to ensure URLs are transmitted and interpreted correctly.
%20 is the universal percent-encoded form of a space and is valid in every part of a URL. The + character represents a space only in the application/x-www-form-urlencoded format used by HTML forms — strictly inside query strings. If you are constructing URLs manually or passing values to APIs, always use %20 to avoid ambiguity.
Switch the tool to Decode mode and paste the percent-encoded URL or string into the input box. The decoded, human-readable text appears immediately. The entire operation runs in your browser — no data is transmitted to any server, so it is safe to decode URLs containing sensitive tokens or credentials.
encodeURIComponent encodes everything except unreserved characters (A–Z a–z 0–9 - _ . ! ~ * ' ( )) and is the right choice for encoding individual parameter values. encodeURI leaves structural URL characters like / : ? # @ intact because it is designed to encode a full URL without breaking its structure. Our tool uses encodeURIComponent, which is the safer default for encoding values rather than entire URLs.
Non-ASCII characters (Polish: ą ę ó ź ż ć ń; Cyrillic, CJK, emoji, etc.) are first converted to UTF-8 bytes, then each byte is percent-encoded. For example, ą (U+0105) becomes the two UTF-8 bytes 0xC4 0x85, encoded as %C4%85. Paste any text containing non-ASCII characters into the encoder and the tool handles the entire conversion automatically.
URL encoding (percent-encoding) is used to safely include characters inside a URL — it converts them to %XX sequences. HTML encoding (HTML entity encoding) is used to safely include characters inside HTML markup — it converts characters like < to < so they are displayed as text rather than parsed as HTML tags. The two systems are completely separate. Use our HTML Encode / Decode tool for HTML encoding needs.
Yes, completely safe. CleanTextFree processes all input locally in your browser using JavaScript. No text is ever sent to our servers. This applies whether you are encoding query parameters, API keys, OAuth tokens, or personal data. The tool works fully offline once the page has loaded.