%3A is a colon

%3A is a colon.

Character":"
NameColon
Encoded%3A
ReservedYes — 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

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.