zplCloud Blog
GS1 Sunrise 2027: 2D Barcodes at the Checkout – What ZPL Labels Need Now
By the end of 2027, retail checkouts worldwide are meant to read GS1 DataMatrix and QR Codes with GS1 Digital Link. The EAN-13 stays. Every rule with its source, tested ZPL examples for ^BQ and ^BX, and a way to migrate existing templates automatically.
By the end of 2027 the checkout learns 2D
By the end of 2027, retail checkout scanners worldwide are meant to read three 2D barcodes in addition to EAN/UPC: GS1 DataMatrix, QR Code with GS1 Digital Link and Data Matrix with GS1 Digital Link. GS1 US calls it "Sunrise 2027", GS1 globally calls it "Ambition 2027". The EAN-13 stays, and nobody is obliged to print a 2D code. If you do add one, it goes next to the linear barcode with the same GTIN, and it follows the X-dimension, quiet zone and placement rules of the GS1 General Specifications. This post lists every rule with its source and gives tested ZPL examples for ^BQ and ^BX, a before/after label, and a way to check and migrate existing templates automatically.
In short: 2027 is a target for retail scanners, not a switch-off date for the EAN. During the transition a 2D code is added to the pack, never used instead of the linear barcode. For ZPL at 203 dpi that means: module size 4 to 7 dots, a quiet zone of 4 modules around the QR Code, and no more than 50 mm from the centre of the EAN.
What Sunrise 2027 is and what it is not
The clearest wording is on GS1's scanner readiness page: industry has set a goal that, by the end of 2027, all retail point-of-sale (POS) systems should be capable of reading and processing a defined set of 2D barcodes with GS1 standards, in addition to existing linear barcodes. The global implementation guideline (Release 1.1.0, December 2025) spells out the minimum: the POS must identify and decode the GTIN from any GS1-compliant linear or 2D barcode, beep once and transmit that one GTIN. That is scanning Mode 1, the minimum requirement for 2027.
Exactly three 2D barcodes are approved for the checkout:
| 2D barcode | Content (syntax) | Symbology identifier |
|---|---|---|
| GS1 DataMatrix | GS1 element string syntax with FNC1, e.g. (01)…(17)…(10)… | ]d2 |
| QR Code with GS1 Digital Link | Web address following the GS1 Digital Link URI syntax | ]Q1 |
| Data Matrix with GS1 Digital Link | Web address following the GS1 Digital Link URI syntax | ]d1 |
What Sunrise 2027 does not mean:
- The EAN-13 does not disappear. The global guideline says linear barcodes such as EAN/UPC and GS1 DataBar "will not go away and will coexist with 2D barcodes for as long as there are uses for them". GS1 Germany, GS1 Austria and GS1 Switzerland say the same.
- Nobody has to print a 2D code in 2027. GS1 Germany states that companies that want to stay with the linear barcode do not need to add a 2D code. GS1 US stresses that "it is not necessary to implement all the capabilities of 2D by that date".
- 2D does not replace the linear barcode yet. GS1 General Specifications 26.0, section 4.15.4: a GS1 DataMatrix, QR Code or Data Matrix with Digital Link SHALL be used in addition to the EAN/UPC or GS1 DataBar. The guideline names the threshold: only when 90 % of POS scanning solutions can process GS1-compliant 2D barcodes may the linear barcode be dropped. There is no date for that.
- It is not a law. GS1 develops standards for voluntary adoption. Obligations only come from retailer requirements or from regulation of their own, for example in healthcare.
An older FAQ PDF from GS1 Germany (dated November 2022) still said that from 2028 brand owners would choose between EAN and a 2D code. Today's texts tie dropping the linear barcode to the 90 % threshold, not to a year. The General Specifications 26.0 and guideline 1.1 are the reference.
Timeline and milestones
| When | What | Source |
|---|---|---|
| 2021 | GS1 Global General Assembly decision on the 2D migration at POS | GS1 Switzerland, FAQ |
| Feb 2022 | German-language guide "Migration auf 2D Codes am POS", edition 1.1 (GS1 AT and GS1 DE) | GS1 Austria |
| Nov 2025 | German translation of the implementation guideline, edition 1.1 | GS1 Germany |
| Dec 2025 | 2D Barcodes at Retail Point-of-Sale Implementation Guideline, Release 1.1.0 | GS1 |
| Jan 2026 | GS1 General Specifications Release 26.0 with Table 5-46 for 2D at POS | GS1 |
| Jul 2026 | Position paper 2.0.0: single 2D barcode for private label and in-store labelled products | GS1 |
| Aug 2026 | GS1 Digital Link URI Syntax 1.7.0 | GS1 |
| End of 2027 | Goal: POS reads the GTIN from all three 2D barcodes (at least Mode 1) | GS1 |
| After that | 2D only on branded products not before 90 % of POS scanning solutions are 2D-capable | GS1 guideline 1.1, section 4.1 |
GS1 keeps a continually updated list in which makers of scanners, verifiers, printers and barcode software report their status against the "2D capable" criteria; at the time of writing it was dated 8 October 2026. The printer makers listed there include Zebra and TSC.
Regional status: US, DACH and the rest of the world
United States. GS1 US runs the topic as "Sunrise 2027" and recommends a crawl-walk-run approach. For brands: add 2D barcodes to existing packaging and update existing QR codes to GS1 Digital Link with the GTIN; then add data such as variants and production or expiration dates; finally use 2D for consumer engagement. For retailers: install Sunrise-capable scanners that read 2D and extract the GTIN at POS; then add 2D to private brands; finally optimise safety, traceability and inventory. In a 2025 GS1 US consumer survey, 79 % said they are more likely to buy products with a scannable QR code that provides additional product information.
Germany. GS1 Germany calls dual marking during the transition "in der Regel sinnvoll beziehungsweise erforderlich" (generally sensible or required) because not all checkout systems process 2D yet. It names dm and Beiersdorf as the first POS case. A 5-point checklist from GS1 Germany advises starting with one use case and one product group and testing printing, scannability and system integration regularly.
Austria. GS1 Austria writes that 2D codes will complement the classic linear barcode, not replace it, and that during the current transition phase a 1D barcode is required next to a 2D code. 2D codes can only be read by image-based scanners; classic laser scanners cannot.
Switzerland. GS1 Switzerland states that EAN/UPC barcodes will remain in retail long after 2027. On checkout technology it says most POS systems in Switzerland can already scan 2D codes and a software update is often enough.
Other regions. GS1 notes that the transition unfolds progressively on different timelines across the globe. Its case studies include Woolworths in Australia, the delicatessen Parla Deli in Brazil and 7-Eleven in Thailand.
Who is affected
| Who | What to do |
|---|---|
| Brand owners | Decide whether and which 2D barcode goes on which products, set the Digital Link domain, adapt packaging and labels. |
| Retailers | Configure scanner software for one of the Modes 1 to 3, prepare POS software for extra data, one beep per item when two barcodes are present. |
| Label printing and IT | ZPL templates, scale and fresh-food labels, printer resolution, data sources for batch and dates. |
| Software and printer vendors | GS1 "2D capable" criteria: ]d2, ]d1, ]Q1, X-dimension, quiet zone and print quality per the symbol specification tables. |
| Healthcare and pharma | Stays with GS1 DataMatrix, see below. |
In-store labelled goods are the fastest lever. GS1's position paper of July 2026 names deli and bakery products and private label as areas where a retailer can already work with a single 2D barcode, because it controls label, scanner and POS itself. The prerequisite is at least scanning Mode 2. These labels often come from scales and label printers, frequently as ZPL.
Healthcare. Here the industry chose GS1 DataMatrix as the single 2D barcode back in the early 2000s; according to the guideline it is also the 2D barcode of choice for healthcare products scanned at the retail checkout. GS1 Digital Link is not encoded in a 2D barcode in healthcare. In the US, the FDA requires a UDI for medical devices, made of a device identifier and a production identifier (lot, serial number, expiration or manufacturing date), in plain text and in machine-readable form. For prescription drugs, the DSCSA prescribes a product identifier (an NDC-based number with serial number, lot and expiration date), carried on the package in a 2D data matrix barcode. Sunrise 2027 does not change any of these obligations.
What 2D brings to the checkout
The EAN-13 carries the GTIN only. A 2D barcode can also carry batch/lot, expiration or best-before date and serial number. Among the use cases the GS1 guideline lists:
- Stopping the sale of expired products at the checkout, because the expiry date is in the barcode.
- Targeted recalls at batch level instead of whole products.
- Less food waste and automatic date-based markdowns. According to GS1 Germany, Woolworths reports up to 40 % less food waste.
- Information for consumers: a QR Code with GS1 Digital Link opens a web page with the standard phone camera and scans at the checkout at the same time.
- Digital Product Passport: according to the European Commission, a data carrier such as a QR code links the physical product to its DPP; for certain batteries the DPP becomes mandatory on 18 February 2027, and the delegated acts for textiles, aluminium and tyres are planned for 2027, followed by a transition period of at least 18 months. More in our post GS1 QR Code and the Digital Product Passport.
How a GS1 Digital Link URI is built
https://example.com/01/09506000134352/10/L2610A?15=271231
└──────┬──────────┘└──────┬─────────┘└───┬────┘└───┬────┘
domain (+ path) primary key qualifier attribute
(01) GTIN-14 (10) batch (15) best before
The rules from GS1 Digital Link URI Syntax 1.7.0 (August 2026):
- Any domain. Any number of your own path segments may sit between the domain and
/01/, for examplehttps://example.com/gs1/01/…. GS1 recommends brand owners use their own domain;https://id.gs1.orgis GS1's reference domain. - The GTIN always has 14 digits. Since version 1.4.0 a GTIN-13 is padded with a leading zero: EAN
9506000134352becomes/01/09506000134352. - Key qualifiers go in the path, in a fixed order: for the GTIN
/22/(consumer product variant),/10/(batch/lot),/21/(serial number)./21/…/10/…is invalid. - Attributes go in the query string: dates such as
15(best before) or17(expiration) appear as?15=271231. - No short forms. "Convenience alphas" such as
/gtin/instead of/01/were removed in version 1.3.0. - Uncompressed. At the checkout the URI must use the uncompressed form, per Table 5-46 of the General Specifications.
| URI | Valid? |
|---|---|
https://example.com/01/09506000134352 | Yes, GTIN only |
https://example.com/gs1/01/09506000134352/10/L2610A?15=271231 | Yes, own path, batch, best before |
https://example.com/01/9506000134352 | No, GTIN has only 13 digits |
https://example.com/01/09506000134352/21/0001/10/L2610A | No, batch must come before the serial number |
https://example.com/gtin/09506000134352 | No, short form removed |
A tip from the GS1 guideline: digits and upper-case letters take less space in a QR Code than lower-case letters and special characters. If you assign batch numbers yourself, keep them numeric or upper case.
GS1 DataMatrix, Data Matrix or QR Code?
All three barcodes above carry GTIN, batch and best-before date, printed with 4 dots per module at 203 dpi (0.50 mm). The GS1 DataMatrix measures 18 × 18 modules, i.e. 9.0 mm. The Data Matrix with Digital Link needs 26 × 26 modules (13.0 mm), the QR Code 33 × 33 modules (16.5 mm). We rendered every barcode in this post with zplCore and with Labelary and decoded it with ZXing; both renderers return the same data and positions.
| Criterion | GS1 DataMatrix | QR Code + Digital Link | Data Matrix + Digital Link |
|---|---|---|---|
| Phone camera opens a web page | No, app needed | Yes | No, app needed |
| Size for the same content | smallest | largest | small |
| Healthcare | approved globally | not applicable | not applicable |
| POS scanners | often only needs enabling | software update required | software update required |
The upshot: QR Code with Digital Link when consumers should scan. GS1 DataMatrix when space is tight, no web link is needed or the product is a healthcare item. Data Matrix with Digital Link is the middle ground for small packs that need a web link.
Print quality: X-dimension, quiet zone, placement, HRI
The dimensions are in the GS1 General Specifications, Release 26.0 (January 2026), section 5.12.3.1, Table 5-46 "Symbol specification table 1 addendum 2 for 2D barcodes". It applies to trade items scanned at retail POS:
| 2D barcode | X-dimension min | Target | Max | Quiet zone | Minimum quality |
|---|---|---|---|---|---|
| GS1 DataMatrix (ECC 200) | 0.396 mm | 0.495 mm | 0.990 mm | 1X on all four sides | 1.5/12/660 |
| Data Matrix (GS1 Digital Link URI) | 0.396 mm | 0.495 mm | 0.990 mm | 1X on all four sides | 1.5/12/660 |
| QR Code (GS1 Digital Link URI) | 0.396 mm | 0.495 mm | 0.990 mm | 4X on all four sides | 1.5/12/660 |
2D modules are therefore 1.5 times the X-dimension of the linear barcodes. For items that are also scanned in general distribution, Table 5-49 (symbol specification table 3 addendum 1) applies, with 0.743 to 0.990 mm.
In ZPL the X-dimension is a whole number of dots. That gives these permitted module sizes (parameter 3 of ^BQ, parameter 2 of ^BX):
| Printer resolution | 1 dot | Permitted module size | Close to the 0.495 mm target |
|---|---|---|---|
| 203 dpi (8 dots/mm) | 0.125 mm | 4 to 7 dots | 4 dots = 0.500 mm |
| 300 dpi (12 dots/mm) | 0.085 mm | 5 to 11 dots | 6 dots = 0.508 mm |
| 600 dpi (24 dots/mm) | 0.042 mm | 10 to 23 dots | 12 dots = 0.508 mm |
A common mistake hides in the linear barcode next to it: Table 5-44 sets the EAN-13 minimum at 0.264 mm. ^BY2 at 203 dpi gives only 0.250 mm, below that minimum; ^BY3 (0.375 mm) is the first that fits. At 300 dpi ^BY3 (0.254 mm) is too narrow and ^BY4 (0.339 mm) fits. The minimum bar height scales with it: 22.85 mm at 0.330 mm, so about 26 mm or 208 dots with ^BY3 at 203 dpi.
More rules:
- Quiet zone: 1 module around a Data Matrix, 4 modules around a QR Code. ZPL does not draw the quiet zone, so it must stay free of text and boxes.
- Placement: GS1 testing showed the 2D barcode should be within 50 mm of the centre of the linear barcode for the checkout to reach 40 to 70 items per minute.
- Same GTIN: all barcodes on an item must encode the same GTIN (section 4.15.1).
- HRI: a 2D barcode next to an EAN-13 with HRI needs none of its own (section 4.14.2). If it is the only barcode, it shows
(01)and the 14-digit GTIN. - Verification: quality is measured per ISO/IEC 15415.
1.5/12/660means an overall grade of at least 1.5, aperture reference number 12 (0.30 mm) and a wavelength of 660 nm.
ZPL examples, tested with zplCore and Labelary
QR Code with GS1 Digital Link (^BQ)
^XA
^PW406
^LL406
^FO40,40^BQN,2,4^FDMA,https://example.com/01/09506000134352/10/L2610A?15=271231^FS
^XZ
^BQN,2,4 means normal orientation, QR model 2, 4 dots per module (0.50 mm at 203 dpi). The first two characters in ^FD are the error correction level (M = 15 %) and the input mode (A = automatic). Higher error correction makes the symbol larger; GS1 leaves the choice to the use case. The symbol decodes with symbology identifier ]Q1 and exactly this URI. A note on position: in zplCore and Labelary the QR Code starts the current ^BY bar height (10 dots without ^BY) below the ^FO coordinate, so allow for that when you place it.
GS1 DataMatrix with FNC1 (^BX)
^XA
^PW406
^LL406
^FO40,40^BXN,4,200,,,,_^FD_101095060001343521527123110L2610A^FS
^XZ
^BXN,4,200,,,,_ means 4 dots per module, quality 200 (ECC 200, required for GS1) and _ as the escape character. _1 at the start produces the FNC1 that turns a Data Matrix into a GS1 DataMatrix. Decoded: ]d2 with (01)09506000134352(15)271231(10)L2610A.
The order is deliberate. GTIN (01) and date (15) have a predefined length and need no separator. The batch (10) has a variable length and comes last, so it needs no separator either. If a variable-length field sits in the middle, an _1 follows it as the separator:
^FO40,40^BXN,4,200,,,,_^FD_1010950600013435210L2610A_115271231^FS
That gives the same data but a 20 × 20 instead of an 18 × 18 module symbol. A mistake we made ourselves while testing: writing _10L2610A right after the GTIN yields FNC1 plus "0L2610A" instead of the batch. Predefined-length fields are never followed by an FNC1.
Without the quality parameter 200, ^BX produces the old ECC 000 type, which is wrong for GS1. A Data Matrix with Digital Link (]d1) needs no FNC1 at all: ^BXN,4,200^FDhttps://example.com/01/…^FS.
Before and after: the same label with 2D
The original label, 4 × 2 in at 203 dpi, with an EAN-13 only:
^XA
^CI28
^PW812
^LL406
^FO40,28^A0N,26,26^FDACME FOODS^FS
^FO40,60^A0N,48,48^FDOat Drink Barista 1 L^FS
^FO40,118^A0N,28,28^FDLOT L2610A BEST BEFORE 31.12.2027^FS
^FO60,150^BY3,3,1^BEN,208,Y,N^FD950600013435^FS
^XZ
After the migration with zplCore (command below) a QR Code with GS1 Digital Link sits to the right of the EAN-13, with the same GTIN plus batch and best-before date:
^FO60,150^BY3,3,1^BEN,208,Y,N^FD950600013435^FS
^FX zplCore GS1 2D migration
^BY3,3,10^FO394,243^BQN,2,4^FDMA,https://example.com/01/09506000134352/10/L2610A?15=271231^FS^BY3,3,1
The QR Code is 16.5 mm square, with 4 dots (0.500 mm) per module and a 16-dot quiet zone. Its centre is about 33 mm from the centre of the EAN-13, well within 50 mm. In zplCore and Labelary both barcodes return the same GTIN 09506000134352. GTIN 9506000134352 is a GS1 example GTIN and example.com is a reserved placeholder.
Check and migrate templates with zplCore
zplCore is the ZPL engine behind zplCloud. It comes with two tools for Sunrise 2027: a pre-check against the GS1 rules and a migration assistant that adds the 2D barcode to existing ZPL labels. Both render the label and measure the printed geometry rather than just reading the text. The documentation is at Compliance pre-check and GS1 Digital Link & Sunrise 2027 migration.
Pre-check on the command line
A deliberately broken label: EAN-13 with ^BY2, QR Code with 3 dots per module, a 13-digit GTIN and the serial number before the batch:
^FO60,150^BY2,3,1^BEN,150,Y,N^FD950600013435^FS
^FO330,170^BQN,2,3^FDMA,https://example.com/01/9506000134352/21/0001/10/L2610A^FS
The pre-check finds:
$ zplcore comply bad.zpl --pack sunrise --dpi 203
bad.zpl:8:1: error ZPL3210: label 1 ^BE: ^BE encodes GTIN 09506000134352, ^BQ encodes 9506000134352. [GS1 General Specifications 26.0 §4.15.1 rules 2 and 8]
bad.zpl:9:1: error ZPL3202: label 1 ^BQ: Digital Link URI "https://example.com/01/9506000134352/21/0001/10/L2610A": key qualifiers of (01) must be in the order /22, /10, /21 or /235 (each optional, alternatives not mixed). [GS1 Digital Link URI Syntax 1.7.0 (gs1path grammar, qualifier order, 14-digit GTIN, percent-encoding); GS1 General Specifications 26.0 §3, §7.9]
bad.zpl:9:1: error ZPL3202: label 1 ^BQ: Digital Link URI "https://example.com/01/9506000134352/21/0001/10/L2610A": the GTIN has 13 digits; a GS1 Digital Link URI needs 14 (pad GTIN-8/12/13 with leading zeros). [GS1 Digital Link URI Syntax 1.7.0 (gs1path grammar, qualifier order, 14-digit GTIN, percent-encoding); GS1 General Specifications 26.0 §3, §7.9]
bad.zpl:9:1: error ZPL3207: label 1 ^BQ: QR Code (Digital Link) X-dimension 0.375 mm (3 dots at 203 dpi) is outside 0.396–0.99 mm. [GS1 General Specifications 26.0 §5.12.3.1 Table 5-46]
fix: Use a module size of 4–7 dots at 203 dpi.
1 label(s) at 203 dpi, packs sunrise GenSpecs 26.0 / DL 1.7.0: 4 error(s), 0 warning(s), 0 info(s). Pre-check only, not a certification.
The sunrise pack does not report the too-narrow EAN-13 because it checks the 2D side; Table 5-44 covers the linear barcode (see above). With --annotate, zplCore draws the findings right onto the label:
The sunrise pack covers 13 rules, among them: a 2D carrier with the GTIN is present, Digital Link syntax, ECC 200, X-dimension per Table 5-46, quiet zone, linear barcode still present, the same GTIN in all barcodes, and clipped or overprinted symbols. The before label above reports one error, by the way (ZPL3201, no 2D carrier), because the pack checks 2D readiness. A label with only an EAN-13 is still valid under GS1 rules. With --format sarif the findings go to GitHub code scanning, and exit code 1 stops the CI pipeline.
Migration on the command line
$ zplcore gs1 migrate before.zpl --domain https://example.com --add 10=L2610A --add 15=271231 -o after.zpl
label 1: migrated – added a QR Code with GS1 Digital Link URI with GTIN 09506000134352 right of the EAN-13 (^BE, line 8), bottom-aligned
source: EAN-13 ^BE (line 8), GTIN 09506000134352
added: QR Code with GS1 Digital Link URI at x=394 y=253 dots (49.3 / 31.7 mm), 132 × 132 dots (16.5 × 16.5 mm), module 4 dots = 0.500 mm, quiet zone 16 dots
placement: right of the EAN-13 (^BE, line 8), bottom-aligned
uri: https://example.com/01/09506000134352/10/L2610A?15=271231
data: (01)09506000134352(15)271231(10)L2610A
zpl: ^BY3,3,10^FO394,243^BQN,2,4^FDMA,https://example.com/01/09506000134352/10/L2610A?15=271231^FS^BY3,3,1
sunrise pre-check of the migrated ZPL: 0 error(s), 0 warning(s), 0 info(s)
result: ok – 1 of 1 label(s) migrated, 0 counting sunrise error(s)
GS1 2D migration assistant (pre-check, not a certification): verify the printed label with a barcode verifier and your GS1 Member Organisation or retailer.
The assistant reads the GTIN from the EAN-13. On this label batch and best-before date are printed as text only, so they are added with --add; from a GS1-128 or GS1 DataBar Expanded it takes them over by itself. If it finds no free area with the quiet zone, it changes nothing and reports the space needed; --extend-label makes the label longer instead. --carrier datamatrix adds a GS1 DataMatrix instead of the QR Code.
The same in the C# SDK
using ZplCore.Barcodes;
using ZplCore.Compliance;
using ZplCore.Tools;
var report = ZplCompliance.Check(zpl, CompliancePacks.Sunrise2027, new ComplianceOptions { Dpi = 203 });
foreach (var f in report.Findings)
Console.WriteLine(f); // label 1: ZPL3201 error: No GS1 DataMatrix or QR Code / Data Matrix with GS1 Digital Link URI carrying the GTIN.
var options = new Gs1MigrationOptions
{
Carrier = Gs1MigrationCarrier.QrCodeDigitalLink, // or DataMatrixElementString
DigitalLinkStem = "https://example.com", // your domain, otherwise https://id.gs1.org
Dpi = 203,
};
options.AdditionalElements.Add(new Gs1Element("10", "L2610A"));
options.AdditionalElements.Add(new Gs1Element("15", "271231"));
var migration = ZplGs1Migration.Migrate(zpl, options);
File.WriteAllText("after.zpl", migration.MigratedZpl);
Console.WriteLine(migration.ToText()); // placement and the sunrise pre-check of the result
We ran this snippet against the before label; its output matches the command line above.
Important: zplCore provides a pre-check and a migration assistant, not a certification. An empty report only means that no rule fired. A barcode verifier measures the print quality of the finished label; approval comes from the retailer or your GS1 Member Organisation.
In zplCloud without code
Without installing anything, the free Sunrise 2027 Migration tool does the same in the browser: paste a ZPL label with EAN/UPC, GS1-128, ITF-14 or GS1 DataBar, and the GTIN, plus batch, expiry date and serial number, goes into a QR Code with GS1 Digital Link or a GS1 DataMatrix. The tool places the code in a free area with its quiet zone, checks the result again against the Sunrise 2027 rules and shows before and after side by side.
In the zplCloud designer every barcode element has a GS1 section: pick application identifiers, bind values, choose Digital Link for the QR Code; the editor places the separators itself. For single barcodes there are the free tools GS1 AI QR Code to ZPL and GS1 AI DataMatrix to ZPL, and Check barcode checks printed ones. Every application identifier with its format and meaning is in the GS1 AI database.
Checklist for teams
- Take stock: which templates carry an EAN/UPC (
^BE,^BU,^B8,^B9) or GS1 DataBar (^BR)? On which printers and at which resolution are they printed? - Pick a use case: consumer information (QR Code with Digital Link), expiry and batch at the checkout (GS1 DataMatrix or QR), little space (GS1 DataMatrix). Start with one product group.
- Define the Digital Link: your own domain and path, redirecting to an existing product page. 14-digit GTIN, order 22/10/21, dates in the query string, uncompressed.
- Sort out the data: do batch and dates come from the ERP, the scale or the line at print time? Variable data means printing on the line or on the label printer, not on pre-printed packaging.
- Dimensions per Table 5-46: 2D module 0.396 to 0.990 mm (203 dpi: 4 to 7 dots). EAN-13 at least 0.264 mm (203 dpi:
^BY3or wider). - Check the layout: quiet zone 1X or 4X, within 50 mm of the EAN centre, the same GTIN, HRI per section 4.14.2.
- Pre-check automatically:
zplcore comply --pack sunrisein CI,zplcore gs1 migratefor existing templates. - Measure the print: a barcode verifier per ISO/IEC 15415, target 1.5/12/660 or better; the GS1 test suite and your trading partner's real checkout scanners.
- Retailers: set the scanner mode (at least Mode 1), one beep for two barcodes, POS software for extra data; private label and deli as the pilot.
- Align: with trading partners and your GS1 Member Organisation.
Frequently asked questions
Do I have to print a 2D barcode on my products by the end of 2027?
No. Sunrise 2027 is a target for what checkouts can read. GS1 Germany says explicitly that companies that want to stay with the linear barcode do not need to add a 2D code. Individual retailers may set their own requirements.
Is the EAN-13 being abolished?
No. GS1 Germany, GS1 Austria and GS1 Switzerland make that clear, and so does the global guideline. Linear barcodes stay as long as there are uses for them.
Can I replace the EAN-13 with a QR Code?
Not on branded products for now. The General Specifications 26.0 require the 2D barcode in addition to the EAN/UPC or GS1 DataBar until 90 % of POS scanning solutions can process 2D. The exception is a retailer's closed loop: according to GS1's position paper, private label and in-store labelled products can carry a single 2D barcode if the retailer's own checkouts support at least Mode 2.
Do I need my own domain for GS1 Digital Link?
The syntax allows any domain with any path in front, and GS1 recommends your own. A sub-path on the company domain with a redirect is enough. Our Digital Product Passport post shows how without a new server.
Which error correction level should the QR Code use?
GS1 does not prescribe one: higher error correction is more robust but makes the symbol larger. An example in the GS1 guideline uses level M (15 %), and so do our examples. What matters is that the module size stays within Table 5-46.
Can a 203 dpi printer print Sunrise-compliant barcodes?
Yes. At 203 dpi, 4 to 7 dots per module are permitted, and 4 dots give 0.500 mm, almost exactly the 0.495 mm target. The bottleneck is more likely the EAN-13 next to it, which needs at least ^BY3 at 203 dpi.
Does the QR Code need its own human-readable text?
Not if it sits next to an EAN-13 with HRI. If the 2D barcode is the only barcode, it shows (01) followed by the 14-digit GTIN (General Specifications, section 4.14.2).
What about pharmaceuticals and medical devices?
They stay with GS1 DataMatrix and element strings and with existing obligations such as UDI or DSCSA. GS1 Digital Link is not encoded in the 2D barcode in healthcare.
Is the zplCore check a GS1 certification?
No. It is a pre-check against published rules and an assistant for the migration. Acceptance depends on the verifier, the retailer and your GS1 Member Organisation.
Sources
All sources accessed on 19 October 2026.
- GS1 US: What is GS1 Sunrise 2027?
- GS1: Compliance for 2D barcodes at Point of Sale (POS), updated 8 October 2026
- GS1: GS1 2D barcodes in Retail
- GS1: 2D Barcodes at Retail Point-of-Sale Implementation Guideline, Release 1.1.0, December 2025
- GS1: GS1 General Specifications Standard, Release 26.0, January 2026 (sections 4.14.2, 4.15, 5.12.3.1 with Tables 5-44 and 5-46, 5.12.3.3 with Table 5-49)
- GS1: GS1 Digital Link and GS1 Digital Link Standard: URI Syntax, Release 1.7.0, August 2026
- GS1: Migration to a single GS1 conformant 2D barcode for retailer private label and in-store labelled products, Release 2.0.0, July 2026
- GS1 Germany: Zukunft 2D-Code
- GS1 Germany: Implementierungsleitfaden für 2D Codes am Point-of-Sale des Einzelhandels, edition 1.1, November 2025
- GS1 Germany: 5-Punkte-Checkliste für die Implementierung von 2D-Codes am POS
- GS1 Germany: Globales Programm 2D Migration, Grundlegende Fragen (FAQ), November 2022
- GS1 Austria: 2D Codes
- GS1 Austria and GS1 Germany: Leitfaden für eine Migration auf 2D Codes am Point-of-Sale des Einzelhandels, edition 1.1, February 2022
- GS1 Switzerland: 2D-Codes and 2D-Codes am Point of Sale
- U.S. FDA: UDI Basics
- 21 U.S.C. § 360eee and § 360eee-1 (DSCSA, product identifier)
- European Commission: Digital Product Passport
GS1, GS1 DataMatrix and GS1 Digital Link are trademarks of GS1 AISBL and are used here descriptively only. zplCloud and zplCore are not GS1 products.