สี่โหมดหลัก
แต่ละโหมดแลกช่วงอักขระกับความหนาแน่น โหมดตัวเลขรองรับเฉพาะตัวเลขแต่อัดได้สามหลักใน 10 บิต ส่วนโหมดไบต์รองรับไบต์ใดก็ได้แต่ใช้ 8 บิตต่อตัว
โหมดตัวอักษรและตัวเลขครอบคลุมชุดอักขระ 45 ตัว ได้แก่ ตัวเลข 0–9 ตัวอักษรพิมพ์ใหญ่ A–Z ช่องว่าง และสัญลักษณ์ $ % * + - . / กับเครื่องหมายทวิภาค ตัวอักษรพิมพ์เล็กไม่อยู่ในชุดนี้ นี่คือเหตุที่ URL ที่เป็นตัวพิมพ์ใหญ่ทั้งหมดทำให้โค้ดเล็กกว่า URL เดียวกันที่เป็นตัวพิมพ์เล็ก
- ตัวเลข: หลัก 0–9 ใช้ 10 บิตต่อ 3 หลัก
- ตัวอักษรและตัวเลข: 45 อักขระ ใช้ 11 บิตต่อ 2 อักขระ
- ไบต์: ค่า 8 บิตใดก็ได้ ใช้ 8 บิตต่อไบต์
- คันจิ: อักขระสองไบต์แบบ Shift JIS ตัวละ 13 บิต
ตัวบ่งชี้โหมดและเซกเมนต์
ข้อมูลแต่ละช่วงเริ่มด้วยตัวบ่งชี้โหมด 4 บิตและจำนวนอักขระ ซึ่งความยาวขึ้นกับโหมดและเวอร์ชัน โค้ดหนึ่งมีเซกเมนต์แบบนี้ได้หลายเซกเมนต์ เช่นใช้โหมดตัวเลขกับตัวเลขยาว ๆ และโหมดไบต์กับส่วนที่เหลือ ซึ่งอาจทำให้ผลลัพธ์เล็กลง
ตัวบ่งชี้ 4 บิตอื่นๆ ระบุฟีเจอร์ ไม่ใช่ชุดอักขระ ได้แก่ ECI สำหรับประกาศการเข้ารหัสอักขระ Structured Append สำหรับแบ่งข้อมูลข้ามหลายโค้ด และ FNC1 สำหรับ GS1 และรูปแบบข้อมูลอุตสาหกรรมอื่น ตัวปิดท้ายเป็นศูนย์สี่บิตสิ้นสุดข้อมูล
- ตัวเลข 0001 ตัวอักษรและตัวเลข 0010 ไบต์ 0100 คันจิ 1000
- ECI 0111 Structured Append 0011
- FNC1 ตำแหน่งแรก 0101 ตำแหน่งที่สอง 1001
- ตัวปิดท้าย 0000
โหมดไบต์และชุดอักขระ
การตีความเริ่มต้นของโหมดไบต์ตามมาตรฐานคือ ISO-8859-1 (Latin-1) แต่ตัวสร้างโค้ดส่วนใหญ่ในปัจจุบันเขียนเป็น UTF-8 เพื่อให้ตัวอักษรมีเครื่องหมาย อักษรอื่น และอีโมจิรอดอยู่ได้ เครื่องอ่านมักตรวจพบ UTF-8 ด้วยการตรวจสอบไบต์
ในกรณีที่ต้องระบุชุดอักขระอย่างไม่กำกวม ส่วนหัว ECI ประกาศให้ชัดเจนได้ ถ้าไม่มี เครื่องอ่านอาจเดาผิดเป็นบางครั้งและแสดงตัวอักษรเพี้ยน