%3D is the URL-encoded equals sign (=).

In a URL, %3D stands for the equals sign (=). Here is when to encode it, what it does in each part of a URL, and what every major language outputs.

Quick facts

Character=
NameEquals sign
UnicodeU+003D
UTF-8 bytes3D (1 byte)
Percent-encoded%3D
Lowercase form%3d — identical meaning
Double-encoded%253D
HTML form encoding%3D
RFC 3986 classReserved — sub-delimiter

What it means in a URL

The equals sign separates a query key from its value. Inside a value it should be encoded as %3D. Base64 padding (==) is the most common source of raw equals signs in URLs.

RFC 3986 class: Reserved — sub-delimiter. RFC 3986 allows it raw in paths and queries, but some schemes and servers give it meaning, so encoding it as data is the safe choice.

When to encode it

Where it appearsWhat to do
Path segmentAllowed raw (encoding is also fine)
Query valueEncode — it separates parameters
FragmentAllowed raw
Form bodyEncode

The mistake to watch for

Passing Base64 in a query string without encoding: the trailing = padding may be mangled. Encode it, or use Base64url without padding.

What each language produces

Left as-is by JavaScript encodeURI(s), Go url.PathEscape(s); every other function in the table encodes it. Output for the single character, UTF-8 input, tested against the real runtimes (see the encoding comparator for your own strings).

FunctionOutput
JavaScript encodeURIComponent(s)%3Dencoded
JavaScript encodeURI(s)=kept
JavaScript URLSearchParams%3Dencoded
Python urllib.parse.quote(s)%3Dencoded
Python quote(s, safe="")%3Dencoded
Python urllib.parse.quote_plus(s)%3Dencoded
PHP rawurlencode($s)%3Dencoded
PHP urlencode($s)%3Dencoded
Java URLEncoder.encode(s, UTF_8)%3Dencoded
Go url.QueryEscape(s)%3Dencoded
Go url.PathEscape(s)=kept
Ruby URI.encode_www_form_component(s)%3Dencoded
Ruby ERB::Util.url_encode(s)%3Dencoded
C# / .NET Uri.EscapeDataString(s)%3Dencoded

Decoding it

decodeURIComponent('%3D') returns the equals sign (=). Python: urllib.parse.unquote('%3D'); PHP: rawurldecode('%3D'). Paste any string into the URL decoder to decode it in your browser.

← %3C Less-than sign  ·  Full URL encoding table  ·  %3E Greater-than sign →

Common questions.

%3D is the percent-encoded form of the equals sign (=), whose byte value is 0x3D. Decoding the URL turns it back into the character.

Yes. Hex digits in percent-encoding are case-insensitive, so %3d and %3D mean the same thing. RFC 3986 recommends uppercase, and mixing cases can make caches and analytics count one URL as two.

Use your language’s encoder on the value: encodeURIComponent in JavaScript gives %3D, Python’s quote(s, safe="") gives %3D, PHP’s rawurlencode gives %3D.

More from the toolkit.

About this page. Written and maintained by Sri Murugan Systems, the developer of urlencodedecode.com. Character classes follow RFC 3986 §2; language outputs were generated by running each function in its real runtime.