Neljä päätilaa
Jokainen tila vaihtaa merkkivalikoiman tiheyteen. Numeerinen tila käsittelee vain numeroita, mutta pakkaa kolme niistä 10 bittiin, kun taas tavutila käsittelee mitä tahansa tavua mutta käyttää jokaiseen 8 bittiä.
Aakkosnumeerinen tila kattaa 45 merkin joukon: numerot 0–9, isot kirjaimet A–Z, välilyönnin ja symbolit $ % * + - . / sekä kaksoispisteen. Pieniä kirjaimia ei ole joukossa, minkä vuoksi kokonaan isoin kirjaimin kirjoitettu URL voi tuottaa pienemmän koodin kuin sama URL pienin kirjaimin.
- Numeerinen: numerot 0–9, 10 bittiä kolmea numeroa kohden
- Aakkosnumeerinen: 45 merkkiä, 11 bittiä kahta merkkiä kohden
- Tavu: mikä tahansa 8-bittinen arvo, 8 bittiä tavua kohden
- Kanji: Shift JIS -kaksitavuiset merkit, 13 bittiä kukin
Tilatunnisteet ja segmentit
Jokainen datajakso alkaa 4-bittisellä tilatunnisteella ja merkkimäärällä, jonka pituus riippuu tilasta ja versiosta. Koodissa voi olla useita tällaisia segmenttejä, esimerkiksi numeerinen pitkälle numerojaksolle ja tavu loppuosalle, mikä voi pienentää tulosta.
Muut 4-bittiset tunnisteet ilmaisevat ominaisuuksia eivätkä merkistöjä: ECI merkistön ilmoittamiseen, jäsennelty liittäminen datan jakamiseen useaan koodiin ja FNC1 GS1- ja muille toimialan dataformaateille. Neljän nollabitin päätetunniste päättää datan.
- Numeerinen 0001, aakkosnumeerinen 0010, tavu 0100, kanji 1000
- ECI 0111, jäsennelty liittäminen 0011
- FNC1 ensimmäinen paikka 0101, toinen paikka 1001
- Päätetunniste 0000
Tavutila ja merkistöt
Standardin oletustulkinta tavutilalle on ISO-8859-1 (Latin-1), mutta useimmat generaattorit kirjoittavat nykyään UTF-8:aa, jotta aksenttikirjaimet, muut kirjoitusjärjestelmät ja emojit säilyvät. Lukijat tunnistavat UTF-8:n yleensä tarkastelemalla tavuja.
Kun merkistön täytyy olla yksiselitteinen, ECI-otsake voi ilmoittaa sen erikseen. Ilman sitä lukija voi toisinaan arvata väärin ja näyttää sekavia merkkejä.