A négy fő mód
Minden mód a karaktertartományt cseréli sűrűségre. A numerikus mód csak számjegyeket kezel, de hármat csomagol 10 bitbe, a bájtmód bármilyen bájtot kezel, de mindegyikre 8 bitet fordít.
Az alfanumerikus mód 45 karakteres készletet fed le: a 0–9 számjegyeket, az A–Z nagybetűket, a szóközt és a $ % * + - . / szimbólumokat, valamint a kettőspontot. A kisbetűk nincsenek a készletben, ezért egy csupa nagybetűs URL kisebb kódot adhat, mint ugyanaz az URL kisbetűkkel.
- Numerikus: 0–9 számjegyek, 3 számjegyenként 10 bit
- Alfanumerikus: 45 karakter, 2 karakterenként 11 bit
- Bájt: bármilyen 8 bites érték, bájtonként 8 bit
- Kandzsi: Shift JIS kétbájtos karakterek, egyenként 13 bit
Módjelzők és szegmensek
Az adatok minden szakasza 4 bites módjelzővel és karakterszámmal kezdődik, amelynek hossza a módtól és a verziótól függ. A kód több ilyen szegmenst is tartalmazhat, például numerikusat egy hosszú számjegysorhoz és bájtot a többihez, ami kisebbé teheti az eredményt.
Más 4 bites jelzők nem karakterkészletet, hanem szolgáltatásokat jeleznek: az ECI a karakterkódolás megadására, a strukturált hozzáfűzés az adatok több kód közötti felosztására, az FNC1 pedig a GS1 és más ipari adatformátumokra. Négy nullbites lezáró fejezi be az adatot.
- Numerikus 0001, alfanumerikus 0010, bájt 0100, kandzsi 1000
- ECI 0111, strukturált hozzáfűzés 0011
- FNC1 első pozíció 0101, második pozíció 1001
- Lezáró 0000
Bájtmód és karakterkészletek
A szabvány alapértelmezett értelmezése a bájtmódra az ISO-8859-1 (Latin-1), de a legtöbb generátor ma UTF-8-at ír, hogy az ékezetes betűk, más írásrendszerek és az emoji is megmaradjanak. Az olvasók általában a bájtok vizsgálatával ismerik fel az UTF-8-at.
Ahol a karakterkészletnek egyértelműnek kell lennie, egy ECI-fejléc kifejezetten megadhatja. Enélkül az olvasó olykor rosszul tippelhet, és torz karaktereket jeleníthet meg.