9. Barcodes and QR codes

Barcodes are drawn as sharp vector graphics at exactly the size of their box, so they scan reliably from laser, inkjet and thermal printers.

Barcode properties

Add a barcode

  1. Drag Barcode (or QR Code) from the Insert tab onto the page.
  2. In Properties → Barcode, choose the Format.
  3. Set Value, usually a binding: {{ orderNumber | SO-104412 }}.
  4. Turn Human-readable text on to print the value under the bars (1D formats).
  5. Resize the box. The barcode stretches to fill it exactly.

Which format to use

Format Encodes Typical supply-chain use
Code 128 Any text: letters, digits and symbols Order, BOL, PRO, tracking, LPN, SKU and location numbers. The default choice
GS1-128 GS1 Application Identifiers, e.g. (00) SSCC, (01) GTIN, (10) lot, (17) expiry, (420) ship-to postal code Shipping and pallet labels (SSCC), case labels
Code 39 Digits, CAPITAL letters, space and - . $ / + % Older systems, automotive (AIAG), some government labels
Code 93 Like Code 39, more compact Rare; logistics in some regions
EAN-13 / EAN-8 12/7 digits plus check digit Retail product barcodes (outside North America)
UPC-A / UPC-E 11/6 digits plus check digit Retail product barcodes (North America)
ITF-14 13 digits plus check digit (a GTIN-14) Corrugated shipping cases
Interleaved 2 of 5 An even number of digits Legacy warehouse and carton labels
Codabar Digits and - $ : / . + with start/stop letters A–D Libraries, blood banks, some legacy systems
QR Code Any text, including URLs, up to a few thousand characters Returns portals, tracking links, mobile scanning
Data Matrix Any text, very compact Small parts, electronics, healthcare
GS1 Data Matrix GS1 Application Identifiers Pharmaceutical and medical device serialization
PDF417 Lots of text in a stacked barcode Some carrier labels, ID documents
Aztec Any text, compact Transport tickets, some carrier labels

Check digits

Retail and GS1 barcodes end with a check digit, which scanners use to detect misreads.

SSCC labels (GS1-128)

The SSCC (Serial Shipping Container Code) identifies one carton or pallet. On a GS1-128 barcode, it is written with the Application Identifier 00 in parentheses:

(00){{ sscc | 006141411200458719 }}  →  (00)006141411200458719
  1. Add a Barcode and set Format to GS1-128.
  2. Set Value to (00){{ sscc | 006141411200458719 }}. The parentheses are required. They mark where each Application Identifier starts and are not encoded as characters.
  3. Turn Human-readable text off and add a separate text element below the bars, (00) {{ sscc | 006141411200458719 }}, in a 10–12 pt monospaced font such as Cousine. This matches the usual label layout.
  4. Make the box about 4 in wide by 1.25 in tall on a 4×6 label (at least 0.5 in tall).

Combine several Application Identifiers in one barcode by writing them one after another:

(01){{ gtin | 00084123015004 }}(17){{ formatDate(expiry, 'YYMMDD') | 270930 }}(10){{ lot | L26814 }}
(420){{ shipTo.zip | 43215 }}  →  (420)43215
AI Meaning Format
(00) SSCC 18 digits
(01) GTIN 14 digits
(02) GTIN of contained items 14 digits
(10) Batch / lot Up to 20 characters
(11) / (13) / (17) Production / packaging / expiry date YYMMDD
(37) Count of contained items Up to 8 digits
(400) Customer PO number Up to 30 characters
(420) Ship-to postal code Up to 20 characters

Sizing barcodes so they scan

Rule of thumb Why
Keep 1D barcodes at least 0.5 in (36 pt) tall, and 1 in or more on labels scanned from a distance Taller bars are easier to aim at
Leave a quiet zone, a blank margin, of at least 0.25 in (or 10× the narrowest bar) to the left and right of 1D barcodes Scanners need blank space to find the start and end. Turn on Quiet zone if the box touches other elements
Don't squeeze a long value into a narrow box The bars get too thin to print. Widen the box, shorten the value, or switch to Code 128 (more compact than Code 39)
QR and Data Matrix: at least 0.6 in (43 pt) square for phone scanning, 1 in or more for fixed scanners Each module must be printable
Print black bars on a white background Colored or low-contrast barcodes may not scan
On thermal printers, prefer bars that run in the print direction ("picket fence") Reduces smearing

Tip: Always test-scan a printed sample with the scanners used in the warehouse before going live, especially for new label stock or printers.

Worked example: a BOL number barcode

  1. In the BOL's Page Header, add a Barcode in the top-right corner, 2.5 in × 0.45 in.
  2. Format: Code 128. Value: {{ bolNumber | BOL2026102001 }}. Human-readable text: off.
  3. Above it, add a text element BOL #: {{ bolNumber | BOL2026102001 }}, bold, 9 pt, right-aligned.

Because it is in the page header, the barcode repeats on every page of the BOL.

In the designer

On the canvas, barcodes are drawn as a placeholder pattern so the designer stays fast. Preview PDF shows the real barcode, encoding the preview text, or a valid sample value if the preview text isn't valid for the format. The real render encodes the data.

← 8. Repeaters and labels10. Fonts and typography →