Barcode UPC-A Explained

Code UPC-A Example

Code UPC-A encodes eleven digits plus a mandatory check digit. UPC is short for Universal Product Code. An UPC-A barcode is easily recognized. It always starts and ends with two thin bars. It also has two thin bars right in the center of the symbol. Ten digits in two groups of five each are placed under the symbol, two digits are placed outside the symbol on each side. The outer two digits define the so called "quiet zone", this space has to be kept free of other graphical elements. Per convention the outer digits are at 2/3 (two thirds) size of the inner digits.

UPC-A is exclusively used in retail in the US and Canada. It is not used elsewhere in the world. Data encoded in a UPC-A symbol can be compressed to create a smaller symbol, known as UPC-E.

UPC-A vs GTIN-12, GTIN-13, GTIN-14

Originally the 12 digit UPC number and the 12 digit UPC barcode were both referred to as UPC-A. Unifying the separate UPC and EAN standards under the GS1 umbrella introduced the GTIN (from Global Trade Item Number) to the world. The previous 12 digit UPC number became the GTIN-12 - another name but the same data content. With the introduction of new barcode symbologies (namely Code 128 GS1 and Data Matrix GS1) the UPC-A barcode is now just one of several barcode symbologies that can be used to create a machine-readable representation of a GTIN-12.

Any GTIN-12 can be converted into "higher" GTINs by prepending zeroes to the number. Adding one zero makes it a GTIN-13 (for example to encode it into an EAN 13 barcode). Adding two zeroes results in a GTIN-14 which can be encoded into Code 128 GS1, Data Matrix GS1 or ITF-14 barcodes.

UPC-A vs EAN 13

EAN 13 is derived from UPC-A; the additional digit enlarges the available number pool tenfold. For more differences see EAN 13 vs UPC-A.

UPC-A Data Content

UPC-A encodes eleven digits plus a mandatory check digit. The twelve digits of a UPC-A encode the following content:

Digit 1: Number system, usually "0" or "1"

Digit 2-6: Manufacturer identifier as assigned by the GS1

Digit 7-11: Article number / Product code

Digit 12: Check digit

UPC-A Add-on Barcodes

UPC-A can carry an add-on barcode, sometimes also called a satellite code. The add-on can encode another two or five digits of data.

Example of a UPC-A code with two digit add-on, aka "UPC-2":

Code UPC-A Add-On Two Digits

Example of a UPC-A code with five digit add-on, aka "UPC-5":

Code UPC-A Add-On Five Digits

The add-on barcode can encode price information and issue numbers of periodicals.

UPC-A SC Sizes

UPC-A sizes are standardized (see these references for EAN / UPC dimensions). The module width and height are only allowed to vary within certain limits. The default, or 100%, size is called SC2, resulting in a code that is roughly 26mm high and 35mm wide. It is permitted to vary the width down to 80% and up to 200%. In addition it is permitted to reduce the height to some degree, this is also known as truncation, see below for an example.

Checksum for Code UPC-A

UPC-A uses a modulo 10 checksum scheme. Starting from the left the numbers are multiplied alternating with "3" and "1" and added up. The sum is integer divided by ten, the reminder is subtracted from ten which yields the check digit.

Example Check Digit Calculation for Code UPC-A

Example: The UPC number to encode is "03600029145", see sample code below.

Summing up: 0 * 3 + 3 * 1 + 6 * 3 + 0 * 1 + 0 * 3 + 0 * 1 + 2 * 3 + 9 * 1 + 1 * 3 + 4 * 1 + 5 * 3 = 58
Dividing: 58 / 10 = 5 Reminder 8
Check Digit: 10 - 8 = 2

Sample Code UPC-A

Full size UPC-A barcode:

Code UPC-A Example

Truncated UPC-A (50%):

Code UPC-A Example Truncated

UPC barcodes generated with Softmatic BarcodePlus V5, see below.

Obtaining a Code UPC-A number

UPC / GTIN numbers are maintained and issued by your country's GS1 branch, please see obtaining an UPC number for details.

Scanner Recommendation for Code UPC-A

It is safe to assume that all barcode scanners available today support reading UPC-A. Especially older barcode scanners may have problems with codes printed with low resolution or when reading from a distance. Most current smartphones will also read UPC barcodes with the built-in camera, either with the "Camera" app or with a dedicated barcode scanner app.

UPC-A codes are slowly phased out and replaced with EAN 13 codes; as a consequence the checkout middleware may reject inputting twelve digit product codes. Many scanners can add an extra leading zero to the UPC-A data to pretend scanning an EAN 13, consult your scanner's manual.

UPC-A Printing Considerations

UPC-A is a very demanding barcode with tight tolerances less than half a thou in inches (c. 1/100mm). The minimum recommended print resolution is 300dpi. This is usually not a problem when printing the barcode with current laser or thermal printers. When printing with inkjets, choosing the right paper is paramount; most standard copier or laser paper will behave like blotting paper and cause so called ink spread. This effect will "thicken" the bars of the code, resulting in a UPC symbol that does not conform to the standard.

In many cases, the barcode will have to be created with reduced bar width to compensate for ink spread or -growth. The amount of bar width reduction depends on the respective printing process. Laser, thermal or offset printing will have very low values (to the order of 0-2%) while silicon pad or screen printing will have higher values.

Printing UPC-A with dot-matrix printers is possible, provided the printer has at least a 24-pin print head and supports near letter quality (NLQ) with 300-plus dpi resolution. 9-pin printers do not have sufficient output resolution for UPC barcodes.

Create UPC-A Barcodes in Illustrator, InDesign

Easy to use barcode plug-ins and extensions for Adobe InDesign, Illustrator und Photoshop. For more videos, see the Softmatic Youtube Channel

The Softmatic barcode plug-ins and extensions for InDesign, Illustrator and Photoshop are available on the Adobe Exchange.

Stand-alone software for Code UPC-A

Softmatic BarcodePlus V5 creates Code UPC-A and will export the barcode as PDF / SVG (resolution-independent vector) oder raster image (PNG, TIFF). The app will automatically calculate the symbol check digit if the data was provided without one:

UPC-A / UPC-E Batch, Bulk Generator

For batch creation of UPC-A / UPC-E codes, use Softmatic BarcodeFactory V5. The software will create thousands of UPC symbols in seconds, with data coming from the built-in serial number generator, the clipboard or via import from Excel, Numbers or CSV text files. Ideal for mass creation of artwork for packaging, book or magazine covers etc.:


Developers love our easy to use Barcode REST API for UPC-A and UPC-E. The Barcode API supports all common linear and 2D code symbologies and can be used from JavaScript / Node, Ruby, Python, PHP, Swift and many other languages and environments. The API comes with a generous free tier and is available through RapidAPI. Documentation and sample code are here.