Reference tables
QR character set reference: modes, values and indicators
Alphanumeric mode covers exactly 45 characters with values 0–44. Digits 0–9 map to values 0–9, letters A–Z to 10–35, then space, $, %, *, +, -, ., / and : take 36–44. Lowercase letters are not in the set, so one lowercase character pushes the whole segment into byte mode.
The alphanumeric table, values 0–44
Each character has a numeric value. Characters are taken in pairs: the pair encodes as 45 × (first value) + (second value), an 11-bit number. A trailing single character takes 6 bits alone.
| Value | Char | Value | Char | Value | Char |
|---|---|---|---|---|---|
| 0 | 0 |
15 | F |
30 | U |
| 1 | 1 |
16 | G |
31 | V |
| 2 | 2 |
17 | H |
32 | W |
| 3 | 3 |
18 | I |
33 | X |
| 4 | 4 |
19 | J |
34 | Y |
| 5 | 5 |
20 | K |
35 | Z |
| 6 | 6 |
21 | L |
36 | space |
| 7 | 7 |
22 | M |
37 | $ |
| 8 | 8 |
23 | N |
38 | % |
| 9 | 9 |
24 | O |
39 | * |
| 10 | A |
25 | P |
40 | + |
| 11 | B |
26 | Q |
41 | - |
| 12 | C |
27 | R |
42 | . |
| 13 | D |
28 | S |
43 | / |
| 14 | E |
29 | T |
44 | : |
Worked example: QR = 45 × 27 + 28 = 1243 = 10011011011 in 11 bits.
Note what is missing: lowercase letters, ?, =, &, #, _, ~ and @. A URL
with a query string cannot stay in alphanumeric mode past the first =, which is why
HTTPS://EXAMPLE.COM/ABC encodes ~31% smaller than its lowercase twin but a tracking URL
gains nothing. Details in data encoding modes.
Numeric mode
Digits 0-9 only. Groups of 3 digits → 10 bits; a trailing pair takes 7 bits and a
trailing single digit 4 bits. That is 3.33 bits per digit against 8 in byte mode: the
reason a numeric-only payload reaches
7,089 characters while bytes stop at 2,953.
One stray character (a + before a phone number, a space) disqualifies the whole segment.
Byte mode
8 bits per byte, any value. The ISO/IEC 18004 default interpretation is ISO 8859-1 (Latin-1), but near-universal practice is to store UTF-8 and rely on the decoder to detect it: every mainstream phone does. A strictly conforming encoder would announce UTF-8 with an ECI header, yet ECI itself confuses some older readers, so most generators (UseQR included) write plain UTF-8 bytes with no ECI. See UTF-8 and Unicode in QR codes.
Kanji mode
13 bits per character, for double-byte Shift-JIS characters in the ranges 0x8140–0x9FFC and 0xE040–0xEBBF. A compaction of Shift-JIS, not of Unicode: see kanji mode explained.
Mode indicators and count field widths
Every segment starts with a 4-bit mode indicator, then a character count whose width depends on the version:
| Mode | Indicator | Count bits v1–9 | v10–26 | v27–40 |
|---|---|---|---|---|
| Numeric | 0001 |
10 | 12 | 14 |
| Alphanumeric | 0010 |
9 | 11 | 13 |
| Byte | 0100 |
8 | 16 | 16 |
| Kanji | 1000 |
8 | 10 | 12 |
| ECI | 0111 |
n/a | n/a | n/a |
| Structured append | 0011 |
n/a | n/a | n/a |
| Terminator | 0000 |
n/a | n/a | n/a |
A single code may switch modes mid-stream, encoders segment the input and use the cheapest mode for each run. To see which mode a real code ended up in, decode it and read the reported mode, or start from a plain text code and vary the characters.
FAQ
What characters can a QR code contain?
Anything: byte mode stores arbitrary 8-bit data, in practice UTF-8, so all of Unicode is representable. The numeric and alphanumeric modes are optimisations for restricted character sets, not limits on what QR codes can hold.
Does a QR code support lowercase letters?
Yes, via byte mode at 8 bits per character. Only the 45-character alphanumeric set (digits, uppercase A–Z and nine symbols) qualifies for the cheaper 5.5-bit encoding.
What is the QR alphanumeric character set?
Exactly 45 characters: 0–9 (values 0–9), A–Z (10–35), space (36), then $, %, *, +, -, ., / and : (37–44). Pairs encode as 45 × first + second in 11 bits.
Why does an uppercase URL make a smaller QR code?
Uppercase letters sit in the alphanumeric set, so the segment encodes at 5.5 bits per character instead of 8. Schemes and hostnames are case-insensitive, making HTTPS://EXAMPLE.COM safe; paths are frequently case-sensitive, so leave them alone.
Try it: free, no signup
Related
- QR code data capacity table, The maximum a QR code can hold is 7,089 digits, 4,296 uppercase alphanumeric characters, 2,953 bytes or 1,817 kanji: all at version 40, error-correction…
- QR code data encoding modes: numeric, alphanumeric, byte, kanji, Numeric packs 3.33 bits per character, alphanumeric 5.5, byte 8, kanji 13. Mode choice is why HTTPS://USEQR.APP makes a smaller code than the lowercase URL.
- UTF-8 and Unicode in QR codes: emoji, CJK and the legacy trap, QR byte mode carries raw octets, so Unicode works by encoding UTF-8. It scans everywhere modern, but each emoji costs 4 bytes and old readers assume Shift-JIS.
- Kanji mode explained: 13 bits per character, Kanji mode packs double-byte Shift-JIS characters into 13 bits (46% denser than UTF-8 byte mode), but few generators emit it and UTF-8 rules in practice.