%23 in a URL
The percent-encoded hash sign (#).
Short answer
%23 is the percent-encoded hash sign (#). A # starts the fragment, which browsers never send to the server, so a hash inside a value must be written %23 or everything after it is lost to the server.
- Character
- #
- Percent-encoded
- %23
- Byte value
- 0x23 = 35
- RFC 3986 class
- gen-delim
- UTF-8 bytes
- 1
Where you will see it
- Hex colours in parameters: color=%23ff8800.
- Hashtags and issue references in searches: q=%23python.
- Names that contain a hash: C%23.
What goes wrong
- An unencoded # silently truncates the request: the server receives only the part before it. This is a common cause of 'my parameter is cut off'.
- The fragment is client-side only. JavaScript reads it from location.hash, and it is not included in the HTTP request line or logged by servers.
Decoded examples
| Encoded | Decodes to | What it is | Open in the decoder |
|---|---|---|---|
| color=%23ff8800 | color=#ff8800 | A hex colour value. | Open in decoder |
| q=C%23%20tutorial | q=C# tutorial | A search for C# tutorial. | Open in decoder |
How each language encodes #
Outputs below come from running each function, not from documentation. “Kept” means the function leaves the character as it is. Compare every character across every function.
| Language | Function | Output for # |
|---|---|---|
| JavaScript | encodeURIComponent | %23 |
| JavaScript | encodeURI | kept |
| JavaScript | URLSearchParams | %23 |
| JavaScript | escape (deprecated) | %23 |
| Python | quote (default safe='/') | %23 |
| Python | quote (safe='') | %23 |
| Python | quote_plus | %23 |
| C# | Uri.EscapeDataString | %23 |
| C# | WebUtility.UrlEncode | %23 |
| C# | HttpUtility.UrlEncode | %23 |
Questions
Why is part of my URL missing on the server?
Everything after an unencoded # is the fragment, and browsers do not send it to the server. If the # was meant to be data, encode it as %23.
Is the part after # sent to the server?
No. The fragment stays in the browser. It is used for in-page links and by client-side code, which is also why this site stores shared tool state there.
Decode or encode your own text
Paste anything containing %23. It runs in your browser; nothing is uploaded.
Related characters
%3F
question mark
%3F is the percent-encoded question mark (?).
%26
ampersand
%26 is the percent-encoded ampersand (&).
%40
at sign
%40 is the percent-encoded at sign (@).
All percent-encoded characters · Full percent-encoding table · What is URL encoding?
Behaviour checked against RFC 3986, the WHATWG URL Standard and MDN. Updated November 4, 2026
Tools
URL Encoder
Percent-encode a value, a full URL or form data, with strict RFC 3986 and +/%20 options.
URL Parser
Split a URL into scheme, host, port, path, query and fragment, with checks for common problems.
Query String Parser
Edit query parameters as a table, rebuild the string, or export it as JSON.
Base64 Encode/Decode
Convert text to Base64 and back, including the URL-safe Base64URL alphabet.
HTML Encode/Decode
Escape text to HTML entities and decode entities back to text.
JWT Decoder
Read a JSON Web Token's header and payload and check its expiry.