GS1 Sunrise 2027 is a global project to transition from traditional one-dimensional (1D) EAN/UPC barcodes to two-dimensional (2D) barcodes to improve product transparency, traceability and security. By the end of 2027, retail, healthcare and other businesses around the world are expected to be required to implement new product identification standards at their points of sale (POS) and service (POC). Already in testing in 48 countries, covering 88% of global GDP, the Sunrise 2027 initiative is becoming the new norm for global trade.
VintaSoft, as the developer of a specialized tool for barcode recognition -
VintaSoft Barcode .NET SDK, views these changes as a strategic opportunity to modernize customers' business processes and expand the capabilities of the SDK in the new regulatory environment.
What is GS1 Sunrise 2027
Sunrise 2027 is a GS1 initiative officially announced in the 2020s, with the goal of ensuring that by 2027, retail and logistics systems around the world will be able to scan and interpret 2D barcodes alongside the familiar 1D ones. However, the main goal is to replace 1D formats with more versatile 2D ones, which are capable of not only identifying a product, but also transmitting additional data - expiration date, batch number, country of origin, quality certificates, etc.
Why the entire industry is switching
The old EAN/UPC format proved to be limited:
- It may contain only the product identifier (GTIN), but not the accompanying information.
- Takes up more space on packaging compared to 2D barcodes.
- Not suitable for growing demands in traceability, automation and digital ecosystems (e.g. smart checkouts).
2D barcodes such as GS1 DataMatrix and GS1 Digital Link QR solve these problems by allowing:
- Embed multiple parameters into one barcode.
- Improve the accuracy of logistics and trade operations.
- Integrate digital experiences for consumers, from confirming product authenticity to receiving instructions for use.
How will this affect market participants?
The transition to 2D barcodes initiated by GS1 will affect almost all participants in the commodity chain - from manufacturers to software developers. These changes cannot be considered a simple technical upgrade - we are talking about the restructuring of fundamental processes in logistics, retail and interaction with consumers.
Manufacturing companies will be among the first to feel the impact of the new standard. They will have to adapt production lines and packaging processes to print the new barcodes. Whereas previously it was enough to apply a linear barcode with GTIN to the packaging, now the 2D format will need to include much more information: expiration date, batch number, composition information, and sometimes even a link to a digital certificate or website. All this requires upgrading both the equipment and the IT infrastructure that ensures the generation and management of the new barcodes.
For retailers and logistics operators, the main challenge will be the need to adapt cash register and warehouse scanning devices. Although most modern scanners already support 2D barcodes, not all of them are optimized for GS1 standards. This means that not only will the equipment need to be updated, but also the software will need to be modified to correctly recognize and process new data fields.
Developers of software solutions, including those creating accounting systems, ERP, cash register applications and mobile solutions, must also prepare for the change in barcoding formats. It is necessary not only to add support for new symbol systems, but also to implement the correct interpretation of the data structure according to GS1 standards. This includes processing application identifiers (AI), parsing nested fields and, in the case of using the GS1 Digital Link format, interaction with external web services. Here, the accuracy of recognition is especially important, since an error in data interpretation can lead to failures in logistics, returns and even legal consequences.
What makes a 2D barcode special
2D barcodes are the next evolution in automatic identification systems. They not only replace linear barcodes, but also open up new opportunities for business, production and logistics due to their versatility and information richness.
Unlike 1D barcodes (e.g. EAN/UPC), which can only contain a basic product identifier (GTIN), 2D barcodes are capable of conveying a whole range of parameters required for modern supply chains and digital services.
The main advantages of 2D barcodes include:
- High information density. In one barcode, it is possible to encode not only GTIN, but also additional data: expiration date, batch number, serial number, country of origin and other attributes defined by the GS1 specification.
- Compact and flexible. 2D barcodes take up less space on packaging compared to multiple 1D barcodes, but contain more information.
- Increased reading reliability. Thanks to built-in error correction (e.g. in QR Code and Data Matrix), 2D barcodes can be recognized even if partially damaged or contaminated, which is critical for logistics, retail and healthcare.
- Integration with digital services: Some 2D formats, such as GS1 Digital Link, allow you to include hyperlinks to online resources, such as pages with instructions, authentication, or product reviews.
The transition to a new barcoding system encourages businesses not only to comply with standards, but also to build digital ecosystems that connect physical packaging and online experiences.
GS1 Sunrise 2027 implementation stages
Information and voluntary stage
Knowledge dissemination, pilot projects, adaptation of internal systems, testing of dual labeling (1D + 2D). Companies get time to modernize and test technologies.
Mandatory implementation by industry and region
Transition to mandatory use of 2D barcodes for certain product categories and territories. The main focus is updating POS equipment, training personnel, ensuring the compatibility of supply chains.
Full compliance and integration
By the end of 2027, all enterprises covered by the standard must completely switch to 2D barcodes - up to replacing classic EAN/UPC where possible. Constant updating of standards and their support.
Challenges and solutions during the transition
The transition from traditional linear barcodes to 2D formats is not only a technological upgrade, but also an organizational challenge. Companies face a number of practical, technical, and regulatory challenges, especially if their infrastructure is still dominated by legacy scanning, printing, or barcode processing solutions.
The most common difficulties include:
- Unprepared equipment. Many companies use cash register and warehouse scanners that do not support 2D barcodes. Replacing or upgrading such devices requires time and investment.
- Software limitations. Existing information systems often cannot interpret data from 2D barcodes, especially when it comes to GS1 coded attributes (AI: Application Identifiers). Without software adaptation, some information is lost or processed incorrectly.
- Lack of experience and understanding of GS1 standards. Developers, labelling engineers and IT specialists are not always familiar with the rules for encoding data into 2D formats (e.g. GS1 DataMatrix or Digital Link structure), which leads to errors during implementation.
- Supply chain complexity. The transition must be coordinated between manufacturers, logistics companies, distributors and retailers. Even if one participant is not ready, it can slow down the entire process.
Despite these challenges, proper planning and choosing the right tools can make the transition much easier.
Key solutions that are recommended to be applied in practice:
- Gradual integration of hybrid labeling. At the initial stage, packaging with two barcodes can be used: EAN/UPC and 2D (e.g. Data Matrix). This will ensure compatibility with current systems and allow for gradual training of personnel and adjustment of infrastructure.
- Use of universal SDKs and libraries. Solutions like VintaSoft Barcode .NET SDK support both 1D and 2D barcodes, including GS1 standards. This allows developers not to rewrite the system from scratch, but to add support for 2D barcodes step by step, in compliance with all specifications.
- Employee training and documentation. Investing in training technical staff and ensuring access to up-to-date GS1 materials is key to successful implementation. It is important to understand not only how to print and recognize barcodes, but also how to properly structure the data within them.
- Testing and pilot projects. Before a mass transition, it is worth running pilot programs in limited units - for example, in one warehouse or in several stores. This will help to identify technical and organizational problems without risking the entire system.
The transition to 2D barcodes is a project that requires a comprehensive approach, but with modern tools and partners, it becomes not only feasible, but also profitable in terms of business development prospects.
How VintaSoft Barcode .NET SDK helps businesses comply with GS1 Sunrise 2027
VintaSoft's product —
VintaSoft Barcode .NET SDK — solves problems of fast and accurate recognition of both one-dimensional and two-dimensional barcodes, including DataMatrix and QR Code barcodes. This allows companies to:
- Enable a smooth transition from 1D to 2D barcodes
- Ensure high speed and accuracy of real-time scanning at the checkout or warehouse
- Integrate processing of information from 2D barcodes into your own accounting systems, ERP and CRM
- Respond quickly to GS1 Sunrise requirements and legislative changes
The transition to GS1 Sunrise 2027 promotes digitalization, transparency and security in the modern supply chain. It is important to prepare for changes now, modernize marking and recognition tools - by investing in solutions such as
VintaSoft Barcode .NET SDK for efficient reading and processing of new 2D barcodes.
Here is a C# code that demonstrates how to generate a GS1 Digital Link barcode and recognize the generated barcode.
using System;
using System.Text;
using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Barcode.GS1;
using Vintasoft.Imaging;
/// <summary>
/// Test that shows how to encode the barcode data in GS1 Digital Link format,
/// create image with GS1 Digital Link barcode,
/// read GS1 Digital Link barcode from image and print data stored in GS1 format.
/// </summary>
class GS1DigitalLinkExample
{
/// <summary>
/// Runs the test (available barcode types QR, DataMatrix).
/// </summary>
public static void TestGS1DigitalLink(BarcodeType digitalLinkBarcodeType)
{
// GS1 Digital Link barcode
GS1DigitalLinkBarcodeSymbologySubset barcodeSubset;
if (digitalLinkBarcodeType == BarcodeType.QR)
barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkQR;
else if (digitalLinkBarcodeType == BarcodeType.DataMatrix)
barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkDataMatrix;
else
throw new NotSupportedException();
// form the GS1 Application identifiers
//
GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
GS1ApplicationIdentifier ai;
// 01 - Global Trade Item Number
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
// 310 - Net weight, kilograms
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
// 30 - Count of Items
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
// 90 - Company Internal Information
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");
// create GS1 value item
GS1DigitalLinkValueItem gs1DigitalLinkValue = new GS1DigitalLinkValueItem(new GS1DigitalLink("vintasoft.com", aiValues));
// create the barcode writer
using (BarcodeWriter writer = new BarcodeWriter())
{
// specify that writer must create output image as 24-bpp image
writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;
// encode GS1 Digital Link barcode
barcodeSubset.Encode(gs1DigitalLinkValue, writer.Settings);
// create image with barcode
using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
{
// delete aiValues array
aiValues = null;
// read barcode with GS1 value
// create barcode reader
using (BarcodeReader reader = new BarcodeReader())
{
// specify that reader must search for GS1 Digital Link barcodes only
reader.Settings.ScanBarcodeTypes = BarcodeType.None;
reader.Settings.ScanBarcodeSubsets.Add(barcodeSubset);
// read barcode from image
IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);
// gets GS1 value from barcode value
gs1DigitalLinkValue = (GS1DigitalLinkValueItem)(infos[0].ValueItems[0]);
// print barcode type
Console.WriteLine("Barcode Type: {0}", infos[0].BarcodeType);
Console.WriteLine();
// print GS1 Digital Link URI value
Console.WriteLine("GS1 Digital Link URI:\n{0}", gs1DigitalLinkValue.DigitalLink.DigitalLinkUri);
Console.WriteLine();
// gets a GS1 Application identifiers from barcode value
aiValues = gs1DigitalLinkValue.ApplicationIdentifierValues;
StringBuilder printableValue = new StringBuilder();
// print Application identifiers values
for (int i = 0; i < aiValues.Length; i++)
{
GS1ApplicationIdentifierValue aiValue = aiValues[i];
ai = aiValue.ApplicationIdentifier;
Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
Console.WriteLine(string.Format("Application identifier : {0}", ai.ApplicationIdentifier));
Console.WriteLine(string.Format("Value : {0}", aiValue.Value));
Console.WriteLine(string.Format("Data title : {0}", ai.DataTitle));
Console.WriteLine(string.Format("Data content : {0}", ai.DataContent));
Console.WriteLine(string.Format("Format : {0}", ai.Format));
Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
Console.WriteLine(string.Format("Is variable length : {0}", ai.IsVariableLength));
Console.WriteLine();
printableValue.Append(aiValue.ToString());
}
// print GS1 printable value
Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
}
}
}
}
}