Bốn chế độ chính
Mỗi chế độ đánh đổi giữa phạm vi ký tự và mật độ. Chế độ số chỉ xử lý chữ số nhưng nén ba chữ số vào 10 bit, còn chế độ byte xử lý mọi byte nhưng tốn 8 bit cho mỗi byte.
Chế độ chữ và số bao gồm bộ 45 ký tự: các chữ số 0–9, các chữ cái in hoa A–Z, dấu cách và các ký hiệu $ % * + - . / cùng dấu hai chấm. Chữ cái thường không có trong bộ này, đó là lý do một URL viết hoa toàn bộ có thể cho mã nhỏ hơn cùng URL đó viết thường.
- Số: chữ số 0–9, 10 bit cho 3 chữ số
- Chữ và số: 45 ký tự, 11 bit cho 2 ký tự
- Byte: mọi giá trị 8 bit, 8 bit mỗi byte
- Kanji: ký tự hai byte Shift JIS, 13 bit mỗi ký tự
Chỉ báo chế độ và các đoạn
Mỗi đoạn dữ liệu bắt đầu bằng chỉ báo chế độ 4 bit và số lượng ký tự, độ dài của số này phụ thuộc vào chế độ và phiên bản. Một mã có thể chứa nhiều đoạn như vậy, ví dụ chế độ số cho dãy chữ số dài và chế độ byte cho phần còn lại, nhờ đó kết quả có thể nhỏ hơn.
Các chỉ báo 4 bit khác báo hiệu tính năng chứ không phải bộ ký tự: ECI để khai báo bảng mã, nối cấu trúc để chia dữ liệu qua nhiều mã, và FNC1 cho GS1 và các định dạng dữ liệu công nghiệp khác. Một bộ kết thúc gồm bốn bit 0 khép lại dữ liệu.
- Số 0001, chữ và số 0010, byte 0100, kanji 1000
- ECI 0111, nối cấu trúc 0011
- FNC1 vị trí thứ nhất 0101, vị trí thứ hai 1001
- Bộ kết thúc 0000
Chế độ byte và bộ ký tự
Cách diễn giải mặc định của chế độ byte theo tiêu chuẩn là ISO-8859-1 (Latin-1), nhưng hầu hết trình tạo mã ngày nay ghi UTF-8 để các chữ có dấu, chữ viết khác và emoji không bị hỏng. Đầu đọc thường nhận ra UTF-8 bằng cách kiểm tra các byte.
Khi bộ ký tự cần rõ ràng tuyệt đối, phần đầu ECI có thể khai báo tường minh. Nếu không có, đầu đọc đôi khi đoán sai và hiển thị ký tự loạn.