Skip to content

DotCode

Terry Burton edited this page Oct 24, 2026 · 22 revisions

DotCode

The DotCode symbology is a 2D matrix-style barcode that can encode any byte values.

Also known as: Ribbon Code.

Uses:

  • High-speed marking on production lines, such as by inkjet.
  • Unit packets of tobacco products under EU traceability Regulation (EU) 2018/574.

Variants:

Standards: AIM - ISS DotCode.

Data and Options

  • The data field can contain any byte values. The default interpretation of data by readers is in accordance with ISO/IEC 8859-1. When supported by the receiver, characters from other code pages can be encoded using Extended Channel Interpretation (ECI).
  • When the parse option is specified, any instances of ^NNN in the data field are replaced with their equivalent byte value. This is useful for specifying unprintable characters.
  • When the parsefnc option is specified, non-data function characters can be specified by escape sequences:
    • ^FNC1: FNC1. Recommendation: Consider GS1 DotCode for encoding GS1 AI syntax data.
    • ^FNC3: FNC3
    • ^ECI000000 to ^ECI999999: ECI indicators
    • ^FNC@: FNC1 in second position, written before an AIM application indicator of one letter or two digits at the start of the data or of a message segment that follows FNC3, e.g. ^FNC@T... or ^FNC@99.... See FNC1 in second position.
    • ECIs are not available with FNC1 in first or second position.
  • The readerinit option denotes that the symbol is used for programming the barcode reader, by placing FNC3 in the first position. It is not available with FNC1 in first or second position, nor with Structured Append.
  • The ratio option sets the width-to-height ratio of the symbol. The default is 1.5.
  • The columns and rows options are used to specify the size of the symbol, each from 5 to 200, with an odd sum. When these are not specified a symbol is generated that maintains the selected aspect ratio, except that a dimension that would exceed 200 is held at 200. Data that does not fit within 200 rows and 200 columns is refused.
  • The specification places no limit on the size of a symbol, so the limit of 200 rows and columns can be changed by defining dotcode.maxrows and dotcode.maxcols in the global context:
    /uk.co.terryburton.bwipp.global_ctx << /dotcode.maxrows 300 /dotcode.maxcols 1000 >> def
  • The mask option selects mask 0 to 3 instead of the best one.
  • Deprecated. The fast option is used to enable the optional high-speed symbol masking algorithm.
  • The sampos and samtotal options make the symbol one of a Structured Append sequence of 2 to 35 symbols, which a reader reassembles into a single message. Both are required:
    • sampos is the position of the symbol in the sequence, from 1 to samtotal.
    • samtotal is the number of symbols in the sequence.
    • The position and total are encoded at the end of the data, followed by FNC2.
    • Structured Append is not available with FNC3, for reader initialisation or symbol separation, nor for GS1 DotCode symbols.

Examples

A basic symbol:

Data:    This is DotCode
Options: inkspread=0.16
Encoder: dotcode

A symbol with custom aspect ratio:

Data:    Code 2.5
Options: ratio=2.5
Encoder: dotcode


Symbologies Reference

Point of Sale

GS1 DataBar

Supply Chain

Two-dimensional Symbols

One-dimensional Symbols

Postal Symbols

Pharmaceutical Symbols

Less-used Symbols

GS1 Composite Symbols

Raw Symbols

Partial Symbols

Clone this wiki locally