UPC-E is a variation of UPC-A which allows for a more compact barcode by eliminating "extra" zeros. Since the resulting UPC-E barcode is about half the size as an UPC-A barcode, UPC-E is generally used on products with very small packaging where a full UPC-A barcode couldn't reasonably fit.
Same as the UPC-A barcode, UPC-E barcode can encode numeric data from 0 through 9.
UPC-E encodes 6 digits of numeric (0 through 9) message data along with a trailing check digit, for a total of 7 digits of bar code data.
UPC-E doesn't have a check digit encoded explicitly; rather the check digit is encoded in the parity of the other six characters.
The check digit that is encoded is the check digit from the original UPC-A barcode.
Additionally, UPC-E may only be used if the number system is 0 or 1. The characters encoded are encoded with odd and even parity from
the left-hand columns of the EAN-13 character formats in the table previously provided. The parity used for each character depends on
the number system (0 or 1) and the check digit from the original UPC-A barcode.
UPC-E PARITY ENCODING TABLE
| CHECK CHARACTER | NUMBER SYSTEM 0 ENCODING | NUMBER SYSTEM 1 ENCODING |
| 0 | EEEOOO | OOOEEE |
| 1 | EEOEOO | OOEOEE |
| 2 | EEOOEO | OOEEOE |
| 3 | EEOOOE | OOEEEO |
| 4 | EOEEOO | OEOOEE |
| 5 | EOOEEO | OEEOOE |
| 6 | EOOOEE | OEEEOO |
| 7 | EOEOEO | OEOEOE |
| 8 | EOEOOE | OEOEEO |
| 9 | EOOEOE | OEEOEO |
This may be easier to visualize in the following table:
| ORIGINAL UPC-A FORMAT | EQUIVALENT UPC-E FORMAT | UPC-A EXAMPLE | UPC-E EQUIV |
| AB000-00HIJ | ABHIJ0 | 12000-00789 | 127890 |
| AB100-00HIJ | ABHIJ1 | 12100-00789 | 127891 |
| AB200-00HIJ | ABHIJ2 | 12200-00789 | 127892 |
| AB300-000IJ | AB3IJ3 | 12300-00089 | 123893 |
| AB400-000IJ | AB4IJ3 | 12400-00089 | 124893 |
| AB500-000IJ | AB5IJ3 | 12500-00089 | 125893 |
| AB600-000IJ | AB6IJ3 | 12600-00089 | 126893 |
| AB700-000IJ | AB7IJ3 | 12700-00089 | 127893 |
| AB800-000IJ | AB8IJ3 | 12800-00089 | 128893 |
| AB900-000IJ | AB9IJ3 | 12900-00089 | 129893 |
| ABCD0-0000J | ABCDJ4 | 12910-00009 | 129194 |
| ABCDE-00005 | ABCDE5 | 12911-00005 | 129115 |
| ABCDE-00006 | ABCDE6 | 12911-00006 | 129116 |
| ABCDE-00007 | ABCDE7 | 12911-00007 | 129117 |
| ABCDE-00008 | ABCDE8 | 12911-00008 | 129118 |
| ABCDE-00009 | ABCDE9 | 12911-00009 | 129119 |
If you have a 6-digt UPC-E code you may use the following logic to convert it back to UPC-A. The decision on which logic to use depends on the last digit of the UPC-E Code.