# DotCode

> Source: https://docs.barcoder.ai/docs/standards/dotcode
> research date 2026-06-03 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [ISS DotCode Symbology Specification 4.0 — AIM Global](https://web.aimglobal.org/external/wcpages/wcecommerce/eComItemDetailsPage.aspx?ItemID=650)
- [What is GS1 DotCode? — GS1](https://support.gs1.org/support/solutions/articles/43000734218-what-is-gs1-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 <sup>[1][1]</sup> <sup>[3][3]</sup>. 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 <sup>[1][1]</sup> <sup>[3][3]</sup>. 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 <sup>[1][1]</sup> <sup>[3][3]</sup>.

## 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 <sup>[1][1]</sup> <sup>[2][2]</sup>. The symbology is public domain and requires no licence <sup>[1][1]</sup>.

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** <sup>[6][6]</sup> <sup>[8][8]</sup>. 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 <sup>[8][8]</sup>. 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** <sup>[8][8]</sup>. 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 <sup>[1][1]</sup> <sup>[7][7]</sup>.

## 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 <sup>[1][1]</sup> <sup>[4][4]</sup>. 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 <sup>[1][1]</sup>.

**Error correction.** DotCode uses strong Reed–Solomon error correction; its message-encoding scheme is inspired by Code 128 <sup>[1][1]</sup>. In practice roughly one-third of the codewords in a symbol are error-correction codewords <sup>[5][5]</sup>.

**Data capacity.** DotCode can encode all ASCII and extended-ASCII characters — digits, lowercase and uppercase letters, punctuation, and special characters <sup>[1][1]</sup>. 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 <sup>[5][5]</sup>.

**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 <sup>[4][4]</sup>.

## 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 <sup>[4][4]</sup> <sup>[8][8]</sup>. 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 <sup>[1][1]</sup> <sup>[7][7]</sup>.

## Implementations

- **[Zint](https://github.com/zint/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 <sup>[3][3]</sup> <sup>[5][5]</sup>.
- **[BWIPP — Barcode Writer in Pure PostScript](https://github.com/bwipp/postscriptbarcode)** — PostScript; ~499 stars; active in 2026. Renders DotCode among its symbology set [[7b][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 <sup>[8][8]</sup>. 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 <sup>[1][1]</sup> <sup>[3][3]</sup>. 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 <sup>[7][7]</sup> <sup>[8][8]</sup>. Like Data Matrix, a DotCode can be read by a dedicated scanner or a camera-equipped smart device with a suitable reader <sup>[1][1]</sup>.

## 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 <sup>[1][1]</sup> <sup>[3][3]</sup>.
- 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 <sup>[4][4]</sup>.

## 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 <sup>[1][1]</sup> <sup>[2][2]</sup> <sup>[8][8]</sup>.

## Sources

[1]: https://www.scandit.com/products/barcode-scanning/symbologies/dotcode/
[2]: https://www.aim-na.org/press-releases/dotcode-symbology-specification-published
[3]: https://github.com/zint/zint
[4]: https://support.gs1.org/support/solutions/articles/43000734218-what-is-gs1-dotcode-
[5]: https://symbology.dev/reference/two-dimensional
[6]: https://eur-lex.europa.eu/eli/reg_impl/2018/574/oj/eng
[7]: https://www.dynamsoft.com/blog/insights/tobacco-carton-tracking-dotcode-datamatrix/
[7b]: https://github.com/bwipp/postscriptbarcode
[8]: https://health.ec.europa.eu/tobacco/product-regulation/systems-tobacco-traceability-and-security-features_en

[1] [DotCode Barcode Symbology](https://www.scandit.com/products/barcode-scanning/symbologies/dotcode/) — Scandit, 2026
[2] [DotCode Symbology Specification Published](https://www.aim-na.org/press-releases/dotcode-symbology-specification-published) — AIM North America, 2019
[3] [Zint barcode encoding library](https://github.com/zint/zint) — Zint Project / GitHub, 2026
[4] [What is GS1 DotCode?](https://support.gs1.org/support/solutions/articles/43000734218-what-is-gs1-dotcode-) — GS1, 2026
[5] [Two-Dimensional symbols — Symbology reference](https://symbology.dev/reference/two-dimensional) — symbology.dev, 2026
[6] [Commission Implementing Regulation (EU) 2018/574](https://eur-lex.europa.eu/eli/reg_impl/2018/574/oj/eng) — EUR-Lex / European Union, 2018
[7] [DotCode and Data Matrix Codes in the Tobacco Industry](https://www.dynamsoft.com/blog/insights/tobacco-carton-tracking-dotcode-datamatrix/) — Dynamsoft, 2026
[7b] [Barcode Writer in Pure PostScript (BWIPP)](https://github.com/bwipp/postscriptbarcode) — Terry Burton / GitHub, 2026
[8] [Systems for tobacco traceability and security features](https://health.ec.europa.eu/tobacco/product-regulation/systems-tobacco-traceability-and-security-features_en) — European Commission, 2026

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
