%7C is a pipe

%7C is a pipe, also called a vertical bar.

Character"|"
NamePipe
Encoded%7C
ReservedNo

Why it breaks things

A pipe has no job in the URL specification. It sits outside both the reserved and unreserved sets — an older URI spec grouped it with the backslash, the brackets and the backtick as characters excluded outright, since gateways were known to mangle them.

That history still shows up today. Some API gateways, proxies and firewalls reject or strip a request the moment they see a raw pipe in it, the same way they treat other shell-related punctuation. A URL that loads fine in a browser can still fail once it passes through infrastructure like that.

Its most common legitimate use is as a separator inside one value, the same job a comma does — ?fields=id|name|email asks for three fields through one parameter. That works in ordinary browsing, but pasted unquoted into a terminal, the pipe is read by the shell itself, splitting one command into several.

Real examples

Without encoding

https://example.com/export?fields=id|name|email

With encoding

https://example.com/export?fields=id%7Cname%7Cemail

Most servers accept the raw pipe here without complaint, but it sits outside the character set a URL is officially allowed to use unencoded, so some API gateways and firewalls block the request outright rather than pass it through.

Without encoding

https://example.com/dashboard?tags=news|sports|weather

With encoding

https://example.com/dashboard?tags=news%7Csports%7Cweather

This works fine typed into a browser, but paste the raw link into a terminal to test it with curl and bash reads the unquoted pipe as its own operator, splitting one command into three instead of making one request. Encoding the pipe first makes the link safe to paste anywhere, quoted or not.

Decode something

History

    Nothing yet.

    History stays in this browser. It is never sent to our server.

    Common questions

    Is a pipe officially allowed in a URL?
    Not really. It is not part of the reserved set, which has defined jobs, or the unreserved set, which is always safe literally. Many servers tolerate a raw pipe in practice, but nothing guarantees it.
    Why did my API request get rejected by a gateway when the URL had a pipe in it?
    Some gateways and firewalls specifically block raw pipe characters as a defensive measure, since a pipe is associated with shell command injection. Percent-encoding it as %7C avoids the block.
    Is %7C the same kind of separator as %2C?
    Both are used as informal separators inside one parameter value by convention only — neither has a meaning defined by the URL standard itself. Whichever API you are calling decides if the character means anything at all.
    Why does my pasted link break when I run it with curl?
    If the URL contains a raw pipe and is pasted into a terminal without quotes, the shell reads it as its own pipe operator instead of part of the address, splitting one command into several.