# 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.

Source: https://useqr.app/glossary/byte-mode · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The default in practice

[Numeric](/glossary/numeric-mode) and [alphanumeric](/glossary/alphanumeric-mode) 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](/wifi-qr-code) 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](/docs/reference/qr-code-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](/glossary/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](/docs/spec/utf-8-and-unicode-in-qr-codes). When a payload
carries non-ASCII text, [decode it](/validate) 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

- https://useqr.app/url
- https://useqr.app/text
- https://useqr.app/wifi
- https://useqr.app/validate
