%3A is a colon
%3A is a colon.
| Character | ":" |
|---|---|
| Name | Colon |
| Encoded | %3A |
| Reserved | Yes — it has a special meaning in a URL |
Why it breaks things
A colon has two real jobs in a URL. The first colon in the whole address separates the scheme from everything else — the : in https:// is doing that job, not decorating it. Later on, inside the authority, a colon can separate the host from a port number, as in example.com:8080. Both are structural spots the parser is specifically looking for.
Outside those two spots, a colon is ordinary punctuation. The URL specification allows a raw colon inside a path segment, which is why times like 12:30 and timestamps like 2026-08-12T14:30:00 work fine unencoded. This surprises people who assume every reserved character needs escaping — colon is one of the more forgiving ones.
The real trouble is a colon landing in the wrong structural spot. If a URL is built by inserting a value right after the host, expecting a port, and that value is not a number — https://example.com:staging/dashboard, say, where staging was meant to be an environment name — the URL is invalid. Browsers reject it outright, because a port has to be numeric.
Real examples
Without encoding
https://example.com:staging/dashboard
With encoding
https://staging.example.com/dashboard
After a host, a URL parser expects a colon to be followed by a number. staging is not a valid port, so the address is invalid — most URL parsers, including the one browsers use, reject it outright instead of treating it as part of the address.
Without encoding
https://example.com/events?start=2026-08-12T14:30:00
With encoding
https://example.com/events?start=2026-08-12T14%3A30%3A00
A colon inside a query value is read literally by nearly every server and does not need encoding. Encoding it anyway is harmless and removes any doubt if a stricter parser further down the chain treats it differently.
Decode something
Result
Breakdown
| Part | Value | Copy |
|---|
History
Nothing yet.
History stays in this browser. It is never sent to our server.
Common questions
- Do I need to encode times like 12:30 in a URL?
- No, not usually. A colon has no special meaning inside a path or query value — it only matters right after the scheme and right after a host, where it is looking for a port number. A time or timestamp elsewhere in the URL is safe unencoded.
- Why does https:// not need its colon encoded?
- Because that colon is doing its actual job — separating the scheme, https, from the rest of the address. It is not an exception to any rule; it is the one place a colon is required to be exactly where it is.
- Why did my URL with a made-up port fail to load?
- A colon straight after a host is read as the start of a port number, and a port has to be numeric. Something like example.com:staging is not a valid port, so the URL is rejected rather than read as a host followed by a literal word.
- Is %3A the same kind of character as %2F?
- Both are allowed unencoded inside a path segment, which surprises people who expect every reserved character to need escaping. The difference is where each one is actually structural: a slash always divides path segments, while a colon only does real work right after the scheme or right after a host.