%3D in a URL
The percent-encoded equals sign (=).
Short answer
%3D is the percent-encoded equals sign (=). In a query string, = separates a parameter's name from its value, so an equals sign that belongs to a value must be encoded or it may be read as that separator.
- Character
- =
- Percent-encoded
- %3D
- Byte value
- 0x3D = 61
- RFC 3986 class
- sub-delim
- UTF-8 bytes
- 1
Where you will see it
- Base64 padding in URLs: dGVzdA%3D%3D.
- A query string nested inside a value: filter=a%3D1%26b%3D2.
- Output of encodeURIComponent; encodeURI leaves = alone.
What goes wrong
- Standard Base64 ends with one or two = padding characters. When a library percent-encodes that value they become %3D or %3D%3D. Decode the percent-encoding first, then Base64-decode.
- Some servers accept a raw = inside a value because they split on the first = only; others do not. Encoding it is the safe choice.
Decoded examples
| Encoded | Decodes to | What it is | Open in the decoder |
|---|---|---|---|
| dGVzdA%3D%3D | dGVzdA== | A Base64 value whose padding was percent-encoded. | Open in decoder |
| filter=a%3D1%26b%3D2 | filter=a=1&b=2 | A query string stored inside another parameter. | 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 | %3D |
| JavaScript | encodeURI | kept |
| JavaScript | URLSearchParams | %3D |
| JavaScript | escape (deprecated) | %3D |
| Python | quote (default safe='/') | %3D |
| Python | quote (safe='') | %3D |
| Python | quote_plus | %3D |
| C# | Uri.EscapeDataString | %3D |
| C# | WebUtility.UrlEncode | %3D |
| C# | HttpUtility.UrlEncode | %3d |
Questions
Why does my Base64 string end in %3D%3D?
Base64 pads its output with = characters. When the string is placed in a URL and encoded, each = becomes %3D. Decode the percent-encoding first and the padding is restored.
Can a query parameter value contain =?
Many parsers accept it because they split a parameter on the first = only, but not all do. Encode it as %3D to be safe.
Decode or encode your own text
Paste anything containing %3D. It runs in your browser; nothing is uploaded.
Related characters
%26
ampersand
%26 is the percent-encoded ampersand (&).
%2B
plus sign
%2B is the percent-encoded plus sign (+).
%3F
question mark
%3F is the percent-encoded question mark (?).
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.