# 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 — usually UTF-8 on phones, sometimes ISO-8859-1 on industrial scanners.

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

---

## The problem it solves

The original specification defined byte mode as ISO-8859-1. In practice, essentially every
modern generator emits UTF-8 and essentially every phone camera assumes UTF-8, so the world
converged on an undeclared convention.

ECI makes it explicit: an ECI header carries an assignment number — `\000026` for UTF-8,
`\000003` for ISO-8859-1 — before the data.

## Why it is used less than you would expect

Older and industrial scanners sometimes fail on an ECI header they do not understand,
which makes adding it a compatibility risk rather than a compatibility fix. The pragmatic
approach for phone-scanned codes is plain UTF-8 with no ECI.

If a code must be read by warehouse hardware, restrict the payload to ASCII and the
question disappears entirely.
