Skip to content
UseQR
ESC

Jump to

MOVEOPEN50 places

Glossary

Byte mode

Byte mode is the QR encoding for arbitrary data at 8 bits per byte, used whenever a payload contains anything outside the numeric or alphanumeric sets, which means almost every real URL. The specification's default charset is ISO 8859-1, but universal practice is UTF-8, which every modern reader detects.

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

The default in practice

Numeric and alphanumeric modes are optimisations for restricted character sets; byte mode (indicator 0100) takes anything. One lowercase letter, ?, = or & in a payload lands the segment here, so ordinary URLs, WiFi credentials and vCards are byte mode almost without exception. Capacity tops out at 2,953 bytes at version 40-L, the lowest of the text ceilings in the capacity table, because 8 bits per character is the least compact packing.

Note the unit: bytes, not characters. In UTF-8, é costs 2 bytes and a kanji or emoji 3–4, so a code's character capacity shrinks with non-ASCII text.

The character-set wrinkle

ISO/IEC 18004 defines byte mode's default interpretation as ISO 8859-1 (Latin-1); a conforming encoder should announce anything else with an ECI header. Real life diverged years ago: virtually all generators write plain UTF-8 without ECI, and virtually all readers sniff the bytes and decode UTF-8 correctly: UseQR does the same, expanding text to UTF-8 octets before encoding. The residual risk sits with old or industrial decoders reading accented Latin-1-range text; the details and edge cases live in UTF-8 and Unicode in QR codes. When a payload carries non-ASCII text, decode it with the reader your audience will use before printing.

FAQ

What encoding does a QR code use for text?

Byte mode with UTF-8 in nearly all real generators, though the specification's nominal default is ISO 8859-1. Modern phone readers detect UTF-8 automatically, including emoji and non-Latin scripts.

Why does my QR code hold fewer characters than the advertised maximum?

The 2,953 ceiling counts bytes. UTF-8 spends 2–4 bytes on each non-ASCII character, and any error-correction level above L reduces the budget further.

Can a QR code contain emoji?

Yes: an emoji is simply 4 UTF-8 bytes in byte mode. Whether it displays depends on the scanning app, not the code.

Try it: free, no signup

  • Alphanumeric mode, Alphanumeric mode encodes a fixed 45-character set at 5.5 bits per character (two characters per 11 bits), with no lowercase letters in the set.
  • Numeric mode, Numeric mode packs three digits into ten bits (3.33 bits per digit) making all-digit payloads the densest thing a QR code can hold: 7,089 characters.
  • ECI (Extended Channel Interpretation), ECI is a mechanism for declaring which character set a QR code's byte data uses. Without it, byte mode has no declared encoding, and decoders simply guess…
  • Encoding mode, Encoding mode is how characters are packed into bits. QR codes support numeric (3.33 bits/char), alphanumeric (5.5), byte (8) and kanji (13), and a single…