ארבעת המצבים העיקריים
כל מצב מחליף טווח תווים בצפיפות. המצב המספרי מטפל רק בספרות אבל דוחס שלוש מהן ל-10 ביטים, ואילו מצב הבתים מטפל בכל בית אבל מוציא 8 ביטים על כל אחד.
המצב האלפאנומרי מכסה קבוצה של 45 תווים: הספרות 0–9, האותיות הגדולות A–Z, הרווח והסימנים $ % * + - . / ונקודתיים. אותיות קטנות אינן בקבוצה, ולכן כתובת כולה באותיות גדולות יכולה ליצור קוד קטן יותר מאותה כתובת באותיות קטנות.
- מספרי: ספרות 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 יכולה להצהיר עליה במפורש. בלעדיה, קורא עלול לעיתים לנחש לא נכון ולהציג תווים משובשים.