Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

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.

View as MarkdownPaste this page into any AI assistant — it is plain, portable Markdown.

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
Structured append 0011
Terminator 0000

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