This tool runs entirely in your browser. Nothing you paste is uploaded.
How you can check →URL Encoding Table — Percent Encoding Chart
Every printable character, and how each of the four URL encoding modes handles it — the column no other encoding table on the web has.
| Char | Code point | encodeURIComponent | encodeURI | Form (+) | Strict RFC 3986 | Copy |
|---|---|---|---|---|---|---|
| (space) | U+0020 | %20 | %20 | + | %20 | |
| ! | U+0021 | ! | ! | %21 | %21 | |
| " | U+0022 | %22 | %22 | %22 | %22 | |
| # | U+0023 | %23 | # | %23 | %23 | |
| $ | U+0024 | %24 | $ | %24 | %24 | |
| % | U+0025 | %25 | %25 | %25 | %25 | |
| & | U+0026 | %26 | & | %26 | %26 | |
| ' | U+0027 | ' | ' | %27 | %27 | |
| ( | U+0028 | ( | ( | %28 | %28 | |
| ) | U+0029 | ) | ) | %29 | %29 | |
| * | U+002A | * | * | * | %2A | |
| + | U+002B | %2B | + | %2B | %2B | |
| , | U+002C | %2C | , | %2C | %2C | |
| - | U+002D | - | - | - | - | |
| . | U+002E | . | . | . | . | |
| / | U+002F | %2F | / | %2F | %2F | |
| 0 | U+0030 | 0 | 0 | 0 | 0 | |
| 1 | U+0031 | 1 | 1 | 1 | 1 | |
| 2 | U+0032 | 2 | 2 | 2 | 2 | |
| 3 | U+0033 | 3 | 3 | 3 | 3 | |
| 4 | U+0034 | 4 | 4 | 4 | 4 | |
| 5 | U+0035 | 5 | 5 | 5 | 5 | |
| 6 | U+0036 | 6 | 6 | 6 | 6 | |
| 7 | U+0037 | 7 | 7 | 7 | 7 | |
| 8 | U+0038 | 8 | 8 | 8 | 8 | |
| 9 | U+0039 | 9 | 9 | 9 | 9 | |
| : | U+003A | %3A | : | %3A | %3A | |
| ; | U+003B | %3B | ; | %3B | %3B | |
| < | U+003C | %3C | %3C | %3C | %3C | |
| = | U+003D | %3D | = | %3D | %3D | |
| > | U+003E | %3E | %3E | %3E | %3E | |
| ? | U+003F | %3F | ? | %3F | %3F | |
| @ | U+0040 | %40 | @ | %40 | %40 | |
| A | U+0041 | A | A | A | A | |
| B | U+0042 | B | B | B | B | |
| C | U+0043 | C | C | C | C | |
| D | U+0044 | D | D | D | D | |
| E | U+0045 | E | E | E | E | |
| F | U+0046 | F | F | F | F | |
| G | U+0047 | G | G | G | G | |
| H | U+0048 | H | H | H | H | |
| I | U+0049 | I | I | I | I | |
| J | U+004A | J | J | J | J | |
| K | U+004B | K | K | K | K | |
| L | U+004C | L | L | L | L | |
| M | U+004D | M | M | M | M | |
| N | U+004E | N | N | N | N | |
| O | U+004F | O | O | O | O | |
| P | U+0050 | P | P | P | P | |
| Q | U+0051 | Q | Q | Q | Q | |
| R | U+0052 | R | R | R | R | |
| S | U+0053 | S | S | S | S | |
| T | U+0054 | T | T | T | T | |
| U | U+0055 | U | U | U | U | |
| V | U+0056 | V | V | V | V | |
| W | U+0057 | W | W | W | W | |
| X | U+0058 | X | X | X | X | |
| Y | U+0059 | Y | Y | Y | Y | |
| Z | U+005A | Z | Z | Z | Z | |
| [ | U+005B | %5B | %5B | %5B | %5B | |
| \ | U+005C | %5C | %5C | %5C | %5C | |
| ] | U+005D | %5D | %5D | %5D | %5D | |
| ^ | U+005E | %5E | %5E | %5E | %5E | |
| _ | U+005F | _ | _ | _ | _ | |
| ` | U+0060 | %60 | %60 | %60 | %60 | |
| a | U+0061 | a | a | a | a | |
| b | U+0062 | b | b | b | b | |
| c | U+0063 | c | c | c | c | |
| d | U+0064 | d | d | d | d | |
| e | U+0065 | e | e | e | e | |
| f | U+0066 | f | f | f | f | |
| g | U+0067 | g | g | g | g | |
| h | U+0068 | h | h | h | h | |
| i | U+0069 | i | i | i | i | |
| j | U+006A | j | j | j | j | |
| k | U+006B | k | k | k | k | |
| l | U+006C | l | l | l | l | |
| m | U+006D | m | m | m | m | |
| n | U+006E | n | n | n | n | |
| o | U+006F | o | o | o | o | |
| p | U+0070 | p | p | p | p | |
| q | U+0071 | q | q | q | q | |
| r | U+0072 | r | r | r | r | |
| s | U+0073 | s | s | s | s | |
| t | U+0074 | t | t | t | t | |
| u | U+0075 | u | u | u | u | |
| v | U+0076 | v | v | v | v | |
| w | U+0077 | w | w | w | w | |
| x | U+0078 | x | x | x | x | |
| y | U+0079 | y | y | y | y | |
| z | U+007A | z | z | z | z | |
| { | U+007B | %7B | %7B | %7B | %7B | |
| | | U+007C | %7C | %7C | %7C | %7C | |
| } | U+007D | %7D | %7D | %7D | %7D | |
| ~ | U+007E | ~ | ~ | %7E | ~ | |
| é | U+00E9 | %C3%A9 | %C3%A9 | %C3%A9 | %C3%A9 | |
| ñ | U+00F1 | %C3%B1 | %C3%B1 | %C3%B1 | %C3%B1 | |
| ü | U+00FC | %C3%BC | %C3%BC | %C3%BC | %C3%BC | |
| ß | U+00DF | %C3%9F | %C3%9F | %C3%9F | %C3%9F | |
| € | U+20AC | %E2%82%AC | %E2%82%AC | %E2%82%AC | %E2%82%AC | |
| £ | U+00A3 | %C2%A3 | %C2%A3 | %C2%A3 | %C2%A3 | |
| © | U+00A9 | %C2%A9 | %C2%A9 | %C2%A9 | %C2%A9 | |
| 😀 | U+1F600 | %F0%9F%98%80 | %F0%9F%98%80 | %F0%9F%98%80 | %F0%9F%98%80 |
No character matches that filter.
Reserved, unreserved, and sub-delimiters
RFC 3986 splits URI characters into a few groups. Unreserved characters
— letters, digits, and - _ . ~ — never need escaping anywhere in a
URI, so every encoding mode leaves them alone. Reserved characters like
: / ? # [ ] @ are structural: a / in a path is a segment
separator, so a literal / that is meant as data, not structure, has to be
escaped to %2F or it will be read as a boundary. Sub-delimiters
like ! $ & ' ( ) * + , ; = carry meaning inside a specific component, most
often a query string, where & separates parameters and =
separates a key from its value.
Why the four columns differ
encodeURIComponent is built for encoding a single value that will sit inside
a larger URI — a query parameter, for example — so it escapes every reserved
and sub-delimiter character except ! ' ( ) *. encodeURI is built
for encoding a whole URI that may already contain structural characters, so it leaves the
reserved set untouched and only escapes characters that are never valid anywhere in a URI.
Form encoding follows application/x-www-form-urlencoded, the rules a browser
uses to submit an HTML form, which is why it turns a space into + rather than
%20. Strict RFC 3986 is the specification's own minimal safe set, with no
exceptions for the five sub-delimiters encodeURIComponent leaves alone —
which is exactly why signature schemes like OAuth 1.0 and AWS SigV4 reject a naive
encodeURIComponent call. The URL Encoder /
Decoder names all four modes for the situation they fit, not just the function that
implements them.
How this table is generated
Every value here comes from calling the exact same encoding function the URL Encoder / Decoder uses, so this table cannot drift out of sync with the tool. It covers every printable ASCII character plus a small, curated set of common non-ASCII characters — not a full sweep of Unicode, since a page per character is exactly the doorway-page shape this site avoids. Pasting a whole string instead of a single character? Use the encoder directly, or the URL Parser to split a full URL into its parts.
Frequently asked questions
- Why do the four columns differ for the same character?
- "URL encode" isn't one operation — encodeURI, encodeURIComponent, form encoding (URLSearchParams) and strict RFC 3986 each leave a different set of characters unescaped. A character like * is left alone by encodeURIComponent and form encoding but escaped by strict RFC 3986, so which column is "correct" depends on where the encoded value is going.
- What's the difference between reserved and unreserved characters?
- Unreserved characters (letters, digits, - _ . ~) never need escaping anywhere in a URI. Reserved characters (: / ? # [ ] @) and sub-delimiters (! $ & ' ( ) * + , ; =) have special meaning in specific parts of a URL — a / in a path is a separator, but a literal / inside a path segment needs escaping to avoid being read as one.
- Why is space encoded as + in one column but %20 in the others?
- The form column follows application/x-www-form-urlencoded, the encoding query strings and form bodies use, where + means space. Everywhere else in a URI, %20 is the only correct encoding for a space, and a literal + means a literal plus sign.
- Does this table match what the URL Encoder tool produces?
- Yes — every value in this table is generated by calling the same encoding function the URL Encoder / Decoder tool uses, so the two can never disagree.