Standards/dotcode
DotCode
Overview
DotCode is a two-dimensional matrix barcode symbology made up of disconnected round dots distributed on a white background, rather than the continuous bars or contiguous square modules used by most other 2D codes [1] [3]. The dot-based structure is its defining feature: it was designed specifically to be printed and read reliably when applied with high-speed inkjet or laser dot-marking equipment, where continuous lines are difficult to reproduce cleanly at speed [1] [3]. DotCode is a public-domain symbology defined by AIM (Association for Automatic Identification and Mobility) and is widely deployed for tobacco track-and-trace under EU regulation [1] [3].
History
DotCode is standardised by AIM as the ISS (International Symbology Specification) DotCode specification. The current edition, version 4.0, was ratified in July 2019 and expanded the symbology-specific print-quality (verification) parameters onto a more granular scale [1] [2]. The symbology is public domain and requires no licence [1].
DotCode's most significant deployment driver is European tobacco traceability. Commission Implementing Regulation (EU) 2018/574 (of 15 December 2017) lays down the technical standards for the traceability system required under Article 15 of the Tobacco Products Directive 2014/40/EU [6] [8]. That regulation permits several optical data carriers — Data Matrix, QR Code, DotCode, and Code 128 — for the unique identifier; DotCode in particular is permitted for unit packets, while aggregated-packaging carriers are limited to Data Matrix, QR Code, and Code 128 [8]. The traceability system became mandatory for cigarettes and roll-your-own tobacco from 20 May 2019 and for all other tobacco products from 20 May 2024 [8]. DotCode was adopted by major tobacco manufacturers because it can be applied at speeds exceeding 1,000 codes per minute on high-speed production lines [1] [7].
Technical specification
Dot-matrix structure. A DotCode symbol is a grid of typically black, disconnected dots on a white background; the symbol as a whole is rectangular [1] [4]. The minimum height is seven dots, and rectangular DotCodes of virtually any size and width-to-height proportion can be produced, with practical widths up to roughly 124 dots [1].
Error correction. DotCode uses strong Reed–Solomon error correction; its message-encoding scheme is inspired by Code 128 [1]. In practice roughly one-third of the codewords in a symbol are error-correction codewords [5].
Data capacity. DotCode can encode all ASCII and extended-ASCII characters — digits, lowercase and uppercase letters, punctuation, and special characters [1]. Reported maximum capacity is on the order of approximately 450 characters or about 900 numeric digits in a single symbol, and it supports ECI encoding and GS1-formatted data [5].
GS1 DotCode. The variant used by the GS1 System is called GS1 DotCode; a symbol whose data begins with two digits encodes GS1-formatted data, and a default FNC1 mode enables encoding of GS1 Application Identifiers [4].
Use cases
DotCode's principal use case is high-speed industrial marking where the carrier must be applied by inkjet or laser at production-line speed. Its flagship deployment is EU tobacco track-and-trace: GS1 DotCode is used to meet the unique-identifier requirements of EU regulation 2018/574 to combat illicit trade in tobacco products, carried on cigarette and other tobacco unit packets [4] [8]. Beyond tobacco, the dot-based, high-speed-printable nature of DotCode has been examined for the beverage, distribution, and FMCG (fast-moving consumer goods) markets where direct marking at line speed is required [1] [7].
Implementations
- Zint — C; ~771 stars; active in 2026. The Zint library lists DotCode among its supported 2D symbologies, with adjustable symbol width, ECI and GS1 support, and roughly one-third of codewords devoted to error correction [3] [5].
- BWIPP — Barcode Writer in Pure PostScript — PostScript; ~499 stars; active in 2026. Renders DotCode among its symbology set [7b].
Comparison
DotCode and Data Matrix are the two carriers most commonly weighed for tobacco and high-speed FMCG marking, and both are permitted by EU 2018/574 [8]. The key difference is print technology: Data Matrix relies on contiguous square modules, which are well suited to thermal-transfer and label printing, whereas DotCode's disconnected dots are explicitly designed for high-speed inkjet and laser dot marking, where rendering continuous, abutting modules cleanly at 1,000+ items per minute is difficult [1] [3]. DotCode therefore tends to win where the code is jetted directly onto packaging at line speed, while Data Matrix remains the default for pre-printed labels and aggregated packaging [7] [8]. Like Data Matrix, a DotCode can be read by a dedicated scanner or a camera-equipped smart device with a suitable reader [1].
Fun facts
- DotCode is built from individual dots precisely because round inkjet droplets, not crisp rectangular modules, are what high-speed marking heads naturally produce — the symbology embraces the printer's physics instead of fighting it [1] [3].
- Although best known for cigarette packs, DotCode is a fully general ASCII/GS1 carrier; the "two leading digits ⇒ GS1 data" convention is the same FNC1 trick used to make a GS1 symbol out of a generic one [4].
Status
Active and current. DotCode is defined by the AIM ISS DotCode Symbology Specification version 4.0 (2019), is public domain, and is an approved data carrier under EU tobacco-traceability regulation 2018/574 [1] [2] [8].
Sources
1 DotCode Barcode Symbology — Scandit, 2026 2 DotCode Symbology Specification Published — AIM North America, 2019 3 Zint barcode encoding library — Zint Project / GitHub, 2026 4 What is GS1 DotCode? — GS1, 2026 5 Two-Dimensional symbols — Symbology reference — symbology.dev, 2026 6 Commission Implementing Regulation (EU) 2018/574 — EUR-Lex / European Union, 2018 7 DotCode and Data Matrix Codes in the Tobacco Industry — Dynamsoft, 2026 7b Barcode Writer in Pure PostScript (BWIPP) — Terry Burton / GitHub, 2026 8 Systems for tobacco traceability and security features — European Commission, 2026
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal