What you're using right now
- 100+ barcode & QR symbologies
- Live preview & customization
- PNG & SVG export, no login
- Copy to clipboard
Loading Barcode Mint…
Free Online Barcode & QR Code Generator
Code 128 subset A locks the encoder to uppercase letters, digits, and control codes, giving you a predictable character set for systems that don't expect lowercase.
Open the generator ↓Turn a CSV — or a numbered sequence — into hundreds of barcodes at once, exported as a ZIP of images or a print-ready PDF sheet. Launching with Pro.
The browser generator stays free forever. Paid plans are for teams who need bulk output and developers who need the REST API at scale — commercial license included. Tell us what you'd use; early-list members get first access and launch pricing.
What you're using right now
For designers & teams
Priced by requests. Commercial license and self-serve keys included; usage dashboard at launch.
Code 128 A is the character-set-A variant of the Code 128 symbology, restricted to uppercase letters (A–Z), digits (0–9), standard punctuation and symbols, and ASCII control characters such as carriage return or line feed. Unlike plain Code 128 — which auto-selects whichever subset produces the shortest barcode — Code 128 A forces the encoder to stay in this single character set for the entire symbol. That predictability matters when a receiving system, database field, or legacy scanner configuration is built to expect only uppercase alphanumeric input and would choke on an unexpected subset switch or lowercase character.
Structurally, Code 128 A shares the exact same bar-and-space geometry, start/stop patterns, and modulo-103 check digit calculation as standard Code 128. The only difference is which characters are available to encode.
The Code 128 standard defines three character sets that share one underlying symbology:
Choose subset A specifically when your data is guaranteed to be uppercase-only and you need the option to embed control characters — for example, encoding a record separator or line-feed character as part of a structured data string that a legacy terminal or industrial scanner parses directly. If your data might include lowercase text, subset B is the correct choice instead; auto Code 128 will pick subset B for you automatically in that case.
Because it's a narrower-purpose variant, Code 128 A shows up in more specialized contexts than general Code 128:
Code 128 A is defined by ISO/IEC 15417, the same standard governing all three Code 128 subsets. Its character set covers uppercase letters A–Z, digits 0–9, standard punctuation and symbols, and ASCII control characters 0x00–0x1F plus a handful more, for 64 encodable values total. Each character is built from 11 modules across 3 bars and 3 spaces, plus a unique stop pattern. Length is variable — Code 128 A can encode as many characters as your label allows, with no fixed maximum defined by the standard itself, though practical label width imposes its own limit. A single mandatory check digit, calculated with a modulo-103 weighted sum of the encoded values (including the start character), is appended automatically; there is no optional or omittable checksum as with Code 39.
In Barcode Mint, select Code 128 A from the symbology list — it's listed separately from plain Code 128 so you can force subset A explicitly rather than relying on auto-detection. Enter your data (uppercase letters, digits, and symbols); if you type a lowercase character, remember it falls outside subset A and won't encode correctly, so switch to Code 128 B or convert your text to uppercase first.
Need a run of sequential asset tags or part numbers? Use the batch/sequence generator to produce a numbered series automatically. For larger jobs, upload a spreadsheet through the bulk CSV → ZIP/PDF tool to generate every label in one pass. Developers integrating label generation into internal systems can call the REST API directly with /barcode?type=code128a&data=YOURDATA.
Because Code 128 A inherits the same dense bar structure as standard Code 128, the same print-quality rules apply, with a few subset-specific notes:
Against Code 128 B, subset A trades away lowercase letters for the ability to embed ASCII control characters — pick A only when your data is genuinely uppercase-only or needs those control codes, otherwise B (or auto Code 128) is the safer default. Against Code 128 C, subset A is far less dense for numeric strings, since C packs two digits per symbol character versus one for A. Against Code 39, subset A covers a similar uppercase-plus-symbols range but is meaningfully more compact and carries a mandatory check digit, whereas Code 39's checksum is optional. If your system needs to auto-detect and switch subsets rather than lock to one, plain Code 128 (not a fixed subset) is the better choice.
No. Subset A does not include lowercase letters. If your data contains lowercase characters, use Code 128 B or plain Code 128, which auto-selects the correct subset.
Choose subset A when a receiving system expects a fixed, predictable character set with no subset switching, or when you need to embed ASCII control characters that other subsets don't support.
Yes, use the batch/sequence tool for numbered series or the bulk CSV → ZIP/PDF uploader to generate labels for an entire list of uppercase values at once.