Barcode Technology

Barcode History

Barcode Label Paper

Barcode Printer

Barcode Application

Inventory Management

AI Barcode QRCode

Barcode Scanner

Barcode Software

Barcode Software B

Barcode Software C

Barcode Software D

Barcode Software E

New Technology A

New Technology B

Robot Technology

Barcode Types

Barcode Types B

Barcode Types C

Barcode Types D

Barcode Types E

Barcode Types F

Electronic Technology

Psychology at Work

Barcode Technology and Barcode Software Related   <<< Back to Directory <<<

A Comprehensive Technical Guide to Barcodes: From 1D to 2D, RFID, and the Future of Machine Vision (P16)

Chapter 16: The Defunct 1D - Codabar

In Brief

Codabar, developed in the early 1970s by Pitney Bowes, was one of the first barcode symbologies to achieve widespread use outside of retail. It found its primary homes in libraries, blood banks, and logistics operations, where its self-checking property and simple encoding made it an attractive early solution. However, its extremely limited character set (only 16 symbols), low data density, and lack of mandatory error checking ultimately sealed its fate. By the late 1990s and early 2000s, Codabar was in rapid decline, replaced by more capable symbologies---most notably Code 128. Today, it is considered effectively obsolete in new implementations, though occasional legacy systems still operate with it. This chapter explores the technical characteristics of Codabar, its real-world applications across multiple industries, and the reasons for its obsolescence. We will examine how its limitations manifested in practice and contrast it with the symbologies that replaced it, particularly Code 128.

1. Introduction: The Birth of a Workhorse

The story of barcodes is one of relentless innovation, driven by the need for speed, accuracy, and efficiency in tracking goods and information. By the early 1970s, the Universal Product Code (UPC) had been adopted by the grocery industry, proving that barcodes could revolutionize retail checkout. But the grocery store was only the beginning. Industries ranging from healthcare to logistics saw the potential of machine-readable labels, but they needed symbologies that could be printed on existing equipment and read by affordable scanners.

It was in this context that Pitney Bowes Corporation introduced Codabar in 1972. Unlike the UPC, which was designed for the specific needs of supermarket point-of-sale systems, Codabar was envisioned as a more general-purpose symbology. It could be printed by the dot-matrix printers that were common in offices and warehouses at the time, and its self-checking design meant that a single printing defect would not accidentally be read as a different character. This made it robust enough for real-world use, even when printed on less-than-perfect equipment.

Initially, Codabar found a foothold in retail price-labeling systems. However, the National Retail Merchants Association selected a different symbology as its standard in 1975, which prompted Codabar to seek new applications. It found them. Libraries, blood banks, and overnight shipping companies adopted Codabar for their own tracking systems. For a time, it seemed that Codabar would become a universal standard.

But the seeds of Codabar's decline were sown in its very design. As technology advanced and the demands placed on barcode systems grew, Codabar's limitations became increasingly apparent. To understand why Codabar faded into obsolescence, we must first understand how it worked.

2. Technical Anatomy of Codabar

2.1. The Encoding Scheme

Codabar is a linear (1D) barcode symbology, meaning it encodes data in the widths of bars and spaces along a single horizontal axis. The Codabar character set is extremely small: it encodes only the digits 0 through 9, six special characters (-, $, :, /, ., and +), and four start/stop characters (A, B, C, and D, sometimes written in lowercase or other variants like t, n, *, e). This is a total of only 16 data characters, which is incredibly restrictive by modern standards.

Each character in Codabar is represented by a pattern of seven elements: four bars and three spaces. Each of these elements is either 'wide' or 'narrow.' For this reason, Codabar is sometimes called a '2 of 7' code, as each character contains exactly two wide elements out of the seven (some sources also call it '2 of 7' for this reason). The wide-to-narrow ratio is typically between 2.25:1 and 3:1, which means a wide bar is about 2.25 to 3 times the width of a narrow bar. It is this precise arrangement of wide and narrow elements that gives Codabar its structure and its limitations.

2.2. The Self-Checking Property

One of Codabar's most important features is that it is a self-checking symbology. This is a term that appears repeatedly in discussions of early barcodes, including Code 39, which we will discuss later. What does 'self-checking' mean

In a non-self-checking symbology, a single printing or scanning error (like a narrow bar being printed slightly too wide) could potentially turn one valid character into another valid character. If this happened, the scanner would read the wrong character without any indication of an error. The system would operate on incorrect data.

In a self-checking symbology like Codabar, the code is designed so that this cannot happen. If a single defect changes the width of one element, the resulting pattern of seven elements will not correspond to any valid Codabar character. The decoder software will detect that an invalid character has been read and can flag an error, reject the scan, or request a re-scan. This built-in error detection makes Codabar more reliable than some other early symbologies.

2.3. Start/Stop Characters and Their Meanings

Codabar uses four distinct start characters (A, B, C, D) and four distinct stop characters (also A, B, C, D). This means a Codabar barcode can start with one of four characters and end with one of four characters, resulting in 16 possible start/stop pairs. This is a notable feature because these pairs were not just markers; they could convey meaning.

In blood banking, for example, the specific combination of start and stop characters could identify what type of information the barcode contained. As one source notes, 'the combination identifies whether the barcode is a donation number, component code, or blood group'. This allowed a single scanning system to process different types of labels without needing a separate field or data structure to define the label's purpose. In some systems, the D stop character was used to indicate that the barcode should be concatenated with the next one, allowing for the construction of longer identifiers.

2.4. Data Capacity and Density

The most significant technical limitation of Codabar is its very low data density. Because each character requires seven elements (bars and spaces) and because there must be a gap between characters, Codabar barcodes are physically long for the amount of data they hold. A typical Codabar barcode encodes only about 10 characters per inch. This means that encoding a simple 10-digit identification number would require a label approximately one inch long, and for longer strings, the labels could become unwieldy.

Moreover, the character set only includes 16 symbols. This severely restricts what can be directly encoded. Unlike Code 39, which supports uppercase letters and numbers directly, Codabar cannot encode letters (except the start/stop characters) at all. This made it unsuitable for applications that required alphanumeric identifiers, such as part numbers or patient names. The need to encode letters or more complex data required a lookup table or database cross-reference, which added complexity and defeated the purpose of direct data encoding.

3. Industry Applications of Codabar

Despite its limitations, Codabar was well-suited to several specific applications where its features (self-checking, dot-matrix printability, and simple design) were valuable and its limitations (low density, small character set) were acceptable. Let us explore the most prominent of these use cases.

3.1. Libraries: The Patron Card and the Book

Libraries were one of the earliest and most significant adopters of Codabar. In the 1970s and 1980s, libraries across the United States and Europe began automating their circulation systems. The goal was simple: replace the manual stamping of due dates with a system that could instantly check out books, track inventory, and manage patron accounts.

Codabar was an ideal fit for libraries. Patron cards and book labels required only a numerical identifier---a unique ID for each patron and each book. Codabar's ability to encode digits was perfectly adequate for this purpose. Furthermore, libraries could print Codabar labels on the dot-matrix printers they already owned, avoiding the need for expensive specialized printing equipment. The self-checking property of Codabar was also a significant benefit: if a label was scratched or smudged, a single error would likely render the barcode unreadable rather than cause it to be decoded incorrectly, which might have led to a book being checked out to the wrong patron.

In many libraries, the start/stop character pairs were used to denote different types of media. For example, a barcode starting with A...B might represent a book, while one starting with C...D might represent a periodical. This allowed the circulation system to know what type of item was being handled without the librarian having to manually select a category.

However, as library collections grew and interlibrary loan systems became more complex, the limitations of Codabar began to show. A single library might have hundreds of thousands of items, and the Codabar labels needed to be long enough to support the ID numbers. The labels became large and, due to the low density, physically wide, which was a problem for small items like CDs or cassette tapes. Additionally, libraries wanted to automate more complex tasks, such as sorting returned books by category or managing holds across multiple branches. These tasks required more information than just a numeric ID. The shift toward Code 39 and later Code 128 began, offering more data and a smaller physical footprint.

3.2. Blood Banks: A Lifesaving Application

Perhaps the most critical application for Codabar was in the healthcare industry, specifically in blood banks. For decades, Codabar was the standard barcode on blood bags. When blood is donated, it must be tracked from the donor to the recipient, and absolute accuracy is essential to prevent fatal errors like a patient receiving the wrong blood type.

Blood bank labels were used to encode a vast amount of information, including the donation number, blood type (A, B, AB, O), Rh factor (positive or negative), and expiration date. As mentioned, Codabar's start/stop character pairs were used to encode this information. The label itself might have several Codabar barcodes, each with a different start/stop pair, indicating a different piece of data. For instance, one barcode with a specific start/stop pairing might represent the donation number, and another might represent the blood group.

The self-checking property of Codabar was vital in this application. Blood banks handle high volumes of donations, and labels are often handled, refrigerated, and exposed to various environmental conditions. A barcode that becomes partially damaged could still be read correctly due to the self-checking design, or the scanner would reject it, alerting the technician to the issue.

However, the international nature of blood supply chains eventually exposed the shortcomings of this system. Different countries and even different organizations used different start/stop character combinations for different purposes, leading to confusion and lack of interoperability. As global standardization became necessary, the International Council for Commonality in Blood Banking Automation developed the ISBT 128 standard. This standard, based on the far more capable Code 128 symbology, provided a uniform, international system for labeling blood products. ISBT 128 supports a much larger character set, including full alphanumeric characters, and includes robust error detection and correction.

The transition from Codabar to ISBT 128 has been a long process, but it is now essentially complete. ISBT 128 is the global standard, and Codabar labels are only seen in legacy systems or during the transition period, if at all.

3.3. Logistics and FedEx Airbills

The logistics industry also made extensive use of Codabar, particularly for tracking packages. The overnight package delivery industry, including FedEx, used Codabar on airbills, the forms that accompany a package and contain the tracking information.

On an airbill, the tracking number is typically a numerical sequence that can be easily encoded by Codabar. The label's self-checking property was valued, as the airbills pass through many hands and machines, from the drop-off location to the sorting facilities to the delivery truck. Damage to the label, such as tearing or smudging, is common, and Codabar's resilience helped ensure that the package could still be identified and routed correctly.

However, as with libraries and blood banks, the logistical demands of modern package delivery began to exceed Codabar's capabilities. The volume of packages increased dramatically, and the need for more detailed tracking and customer-facing information, like delivery confirmation and access to package status online, required more data than Codabar could hold. FedEx and other carriers have transitioned to newer symbologies, particularly Code 128 and the 2D barcode PDF417, which are used on modern shipping labels. These new codes can hold the tracking number, the sender and recipient information, service type, and even a complete manifest, all in a much smaller space than a Codabar label could ever achieve.

3.4. Photo Finishing and Other Niche Applications

Beyond these primary industries, Codabar found its way into a variety of other niche applications. Photo finishing labs used Codabar on order envelopes and film rolls to track customer orders. The relatively low density was acceptable for a small volume of data, and the self-checking property was useful when processing tens of thousands of film rolls in a high-speed environment.

The shipping industry also found uses for Codabar, particularly in the overnight delivery sector, as noted. It was also used to a limited extent in retail, though this was short-lived. The retail industry's choice to standardize on UPC and EAN meant that Codabar was not a major player in that market for long.

4. The Technical Characteristics of Code 39 and Its Influence

To fully understand Codabar's place in barcode history, we must also consider Code 39, another self-checking symbology introduced in 1974 by Intermec Corporation. Code 39 is often mentioned in the same breath as Codabar because they share some similarities, but Code 39 was more advanced and ultimately more successful in many applications.

4.1. A Comparison of Code 39 and Codabar

The most significant difference between Codabar and Code 39 is the character set. Code 39 can encode all uppercase letters (A-Z), digits (0-9), and a number of special characters, for a total of 43 distinct symbols. This made Code 39 immediately more versatile than Codabar. Code 39's ability to encode alphanumeric data directly was a major improvement. In fact, Code 39 was the first barcode specification to allow for the storage of alphabetic symbols. For industries like automotive manufacturing or defense, where part numbers and asset tags often contain a mix of letters and numbers, Code 39 was a much more natural fit.

In terms of structure, both Codabar and Code 39 are self-checking. However, Code 39 uses a slightly more robust encoding: each character is represented by nine elements (five bars and four spaces), with exactly three of those elements being wide. This gives Code 39 its name: '3 of 9,' or Code 39 for short. The wide-to-narrow ratio is similar, typically between 2.5:1 and 3:1.

A crucial difference is that Code 39 is also variable-length, but its self-checking property is so robust that a check digit is technically optional. Code 39 was used in the LOGMARS system, the U.S. Department of Defense's logistics standard, and in the automotive industry via the AIAG B-1 standard. Its adoption in the military and automotive sectors gave it a wide installed base and drove scanner manufacturers to support it.

4.2. How Code 39's Features Shaped Its Industry Applications

Military and Government: LOGMARS and MIL-STD-130

The U.S. Department of Defense adopted Code 39 for its LOGMARS (Logistics Applications of Automated Marking and Reading Symbols) system. This required all government property to be marked with Code 39 barcodes, adhering to MIL-STD-130. The use of Code 39 in a military context demanded exceptional robustness and reliability. While Code 39 is self-checking, the military often mandates the use of a Modulo 43 check digit for all applications to ensure near-perfect data accuracy. This combination of self-checking and optional check digit made Code 39 suitable for tracking everything from small components to large weapons systems.

Automotive: AIAG Standards

The automotive industry, through the Automotive Industry Action Group, standardized on Code 39 for parts identification. The AIAG B-1 standard defines how automotive parts should be labeled with Code 39 to ensure traceability across the entire supply chain. Parts from a small screw to a complete engine block can be labeled with a Code 39 barcode. The barcode contains a part number that can be scanned at each step of the manufacturing process, from production to assembly to installation. The alphanumeric capacity of Code 39 allows for meaningful, human-readable part numbers to be encoded directly in the barcode.

Healthcare: HIBC Standards

While Codabar was used in blood banking, Code 39 became the basis for the Health Industry Bar Code (HIBC) standard. This standard allows healthcare providers to label medical devices, pharmaceuticals, and patient records. The ability to encode letters and numbers directly in Code 39 was critical, as many medical products have alphanumeric catalog numbers and lot numbers. In contrast to Codabar, which was often limited to numerical IDs, Code 39's alphanumeric capacity simplified data management.

Libraries and Asset Tracking

As libraries began to move away from Codabar, many transitioned to Code 39. The more compact nature of Code 39 (though still not as dense as Code 128) allowed for smaller labels on items like CDs, DVDs, and magazines. However, Code 39's lower density compared to newer symbologies still made it a poor choice for very small items or for encoding long strings of data.

4.3. Comparison Table: Codabar vs. Code 39

| Feature | Codabar | Code 39 |

| Introduced | 1972 | 1974 |

| Developer | Pitney Bowes | Intermec |

| Character Set | 16 symbols (0-9, -, $, :, /, ., +) | 43 symbols (A-Z, 0-9, -, ., $, /, +, %, space) |

| Encoding Scheme | 7 elements (4 bars, 3 spaces), 2 wide | 9 elements (5 bars, 4 spaces), 3 wide |

| Self-Checking | Yes | Yes |

| Check Digit | Optional (Modulo 16) | Optional (Modulo 43), often mandated for military/automotive |

| Data Density | Low (approx. 10 chars/inch) | Higher than Codabar, but lower than Code 128 |

| Full ASCII Support | No | With Extended Code 39 (using character pairs) |

| Example Applications | Libraries, Blood Banks, FedEx Airbills | Military (LOGMARS), Automotive (AIAG), Healthcare (HIBC), Libraries |

| Current Status | Almost obsolete | Still widely used, but often replaced by Code 128 |

5. The Decline and Fall of Codabar

The end of Codabar's dominance was driven by two primary factors: the rising tide of industry standards that required more data and the development of superior symbologies, most notably Code 128.

5.1. The Need for More Data

As we have seen, the world's data needs grew exponentially throughout the 1980s and 1990s. The simple numeric IDs of the 1970s were no longer sufficient. Businesses and organizations needed to encode more information directly onto a label, including product descriptions, lot numbers, expiration dates, and even tracking information in a machine-readable format.

Codabar's very small character set of only 16 symbols was a critical bottleneck. It could not directly encode letters, which are essential for part numbers, names, and categories. It could not encode punctuation or other special symbols. While it was possible to use a lookup table to map numbers to meanings, this was cumbersome and defeated the point of direct data encoding. For instance, in a library system, if a Codabar label could only contain a numeric ID, the system would need a separate database to connect that ID to the book's title, author, and status. This made the system more complex and more expensive to maintain. A symbology like Code 128, on the other hand, could encode the title, author, and even a small abstract directly on the label, making the system more robust and self-contained.

5.2. The Rise of Code 128

Code 128 was introduced in the 1980s and quickly became the new gold standard for linear barcodes. It addressed every major shortcoming of Codabar:

High Data Density: Code 128 is much more densely encoded than Codabar. It can pack roughly twice as much information into the same physical space. This meant smaller labels, less wasted space, and the ability to put more data on a product's packaging without sacrificing readability. This is a key advantage that made Code 128 a clear choice for modern applications.

Full Alphanumeric Support and More: Code 128 supports the full ASCII character set, including both uppercase and lowercase letters, digits, and all standard punctuation. This made it truly universal for any text-based data.

Mandatory Check Digit: Unlike Codabar, where a check digit was optional, Code 128 requires a check digit as part of the specification. This ensures a much higher level of data integrity, reducing the risk of errors. In high-stakes applications like healthcare and manufacturing, this mandatory error checking was a decisive advantage.

Multiple Character Encoding Modes: Code 128 offers three different encoding modes (A, B, and C). Code 128C, in particular, encodes numeric data in pairs of digits, achieving even higher density for numeric data, which is highly useful for tracking numbers.

Code 128 was not just an incremental improvement; it was a generational leap. It was so versatile and efficient that it became the standard for numerous industries, including shipping and logistics (the successor to Codabar on FedEx airbills), healthcare (as the foundation of the ISBT 128 blood bank standard), and retail (in the form of GS1 standards).

5.3. The Transition in Libraries and Blood Banks

The transition away from Codabar was most visible in libraries and blood banks. In libraries, the move to Code 128 was gradual but steady. As library systems were upgraded, the new software and hardware were designed to support Code 128 as the primary symbology. Many libraries ran dual-labeling systems for a time, with both Codabar and Code 128 labels on books and patron cards. This allowed them to transition their collections at a manageable pace, using their old stock of Codabar labels while phasing in new Code 128 labels. Eventually, most libraries completed the transition, and Codabar became a rarity.

In blood banking, the transition was driven by the need for international standardization, leading to the ISBT 128 standard. The mandatory check digit in Code 128 and its ability to encode a larger character set were vital for ensuring the traceability and safety of blood products across national borders. The transition was more urgent in this life-critical field, and it was largely complete by the early 2000s.

5.4. Why Codabar Lingers On

Despite its obsolescence, Codabar has not entirely disappeared. There are several reasons for this:

1. Legacy Systems: Some organizations still operate old systems that were originally designed for Codabar. Upgrading these systems can be expensive, and if the Codabar labels are still functioning, there may be no business case for a migration.

2. Cost of Change: As mentioned, dual-labeling or system-wide upgrades require resources. In some cost-sensitive environments, running a legacy Codabar system for internal tracking is considered good enough.

3. Inertia: In some industries, like photo finishing, Codabar was used so pervasively that changing the entire supply chain to a new symbology would be a massive undertaking. If the labels are only used for internal tracking and the system is working, the change may not be a priority.

However, as hardware is replaced and software is upgraded, the inherent advantages of modern symbologies like Code 128, Data Matrix, and QR codes are leading to the gradual and inevitable disappearance of Codabar.

6. Detailed Summary

Codabar represents a fascinating chapter in the history of automatic identification and data capture. It was a product of its time---a practical, self-checking, and easy-to-print symbology that served the needs of a burgeoning data-collection industry in the 1970s and 1980s. Its use in libraries, blood banks, and overnight package delivery provided a tangible boost to efficiency and accuracy in those fields.

However, Codabar's technical limitations were severe: a low data density that led to large labels and a tiny character set that precluded the direct encoding of alphabetic information. It was a workhorse, but a limited one, confined to the narrow world of numeric identifiers. As technology advanced and the world's appetite for data grew, Codabar could not keep pace.

The development of Code 39 provided a useful intermediate step, offering the alphanumeric capacity that Codabar lacked. Code 39's adoption in the military, automotive, and healthcare sectors cemented its place in barcode history. Yet even Code 39 had density and capacity limitations that Code 128 ultimately overcame.

Code 128 became the replacement of choice for most of Codabar's applications. It offered higher density, a mandatory check digit for robust error detection, and support for the full ASCII character set. Code 128's adoption as the basis for ISBT 128 in blood banking and its widespread use in logistics represented a fundamental improvement that Codabar could not match.

Today, Codabar is a relic of an earlier technological era. While it may still be found in a few dusty legacy systems, it is largely absent from modern, forward-looking implementations. Its story serves as a valuable reminder of the importance of anticipating future needs in system design. A symbology designed for a world of numeric IDs and dot-matrix printers proved insufficient for a world of alphanumeric data, global standardization, and high-speed information processing.

The saga of Codabar is a testament to the relentless pace of technological progress. What was once a cutting-edge solution is now a footnote in the history of a technology that has become essential to modern life. Its replacement by more capable symbologies was not just inevitable but necessary for the continued evolution of the automatic identification industry.

 

EasierSoft Barcode Label Design & Bulk Printing Software

---- Use Excel Data to Batch Print Barcodes on Label Sheets or Roll Labels  

---- How to use this barcode software

Download:  Free Barcode Software + Barcode Label Designer

Download Free Barcode Software at Softonic

     Download at CNET

Once you obtain a GS1/UPC/EAN barcode, or other barcode type and QR code, you can use our free software to batch print barcode labels onto Roll label paper using a professional label printer, or to batch print barcodes onto Avery 5160 label sheets using a regular laser or inkjet printer. Our software has free and paid versions.

The free version fully meets your needs for batch printing GS1/UPC/EAN barcodes. The paid version can import data from Excel and databases to batch print barcode labels with different values.

How to Start

Input Data

Import Excel Data

Print Barcode

Barcode Format

Label Designer

All Screen Shot

Export Barcode Image

Save Template

Output Word Excel

How to Use & FAQ:

Export barcodes to Excel

Export barcodes to Word

Add ascii key to barcode

Auto calculate barcode size (Std)

Make barcode by command line

Export barcode image files

Barcode text font setting

Generate ISBN barcode

Predefined label templates

Printing setup

Save settings

Serial number generator

The supported barcode types

Load Excel data (pro)

Manually copy data from Excel files

Filter some data for printing

Edit imported barcode data

Input data (Pro)

Label Designer

Edit data in Label designer

Label Designer - Add new label

Label Designer - Printing

Set the barcode label format to be printed

Other Barcode Label Format Settings

Barcode types supported by this program

Barcode Label Font Settings

Configuring the Barcode Print Rotation

Text Alignment for Barcode Labels

Automatically Adjusting Barcode Width

Text Beneath the Barcode

Configuring Barcode Size

Auto Calculate the Barcode Size

Export Barcode images

Export Barcode Image Format

File Names for Exported Barcode

Resolution of Exported Barcode Images

Fixed Folder for Exporting Barcode

Default Barcode Image Export Format

Print bulk barcodes quickly

Print barcodes to Avery 5160 label

How to bulk Barcode Printing

Sample - Avery 5162 (2x7) Label Sheet

Example: Print barcodes to 5*3cm roll

Example: Print barcodes to 5161 label

Example: Print barcodes to 5162 label

Example: Print barcodes to 5163 label

Example: Print barcodes to 5164 label

Example: Print portrait orientation 5164

Example: Print barcodes to 5167 label

Example: Print barcodes to 5168 label

Highlights

Excel integration: Import data directly from Excel to generate and print barcodes in bulk.

Label designer: Create complex labels with multiple barcodes, text, logos, and shapes.

Batch printing: Print thousands of barcodes at once using standard inkjet/laser printers or professional barcode printers.


Flexible editions:

Standard Edition: Simple batch printing with Excel data.

Professional Edition: Adds command-line automation for workflow integration.

Label Designer Edition: Advanced design features for complex labels.


Why Choose Our Barcode Solutions?

Cost-effective: Free online generator and permanent free desktop version available.

Easy to use: No technical expertise required—just input data and print.

Versatile: Supports nearly all 1D and 2D barcode types, including QR codes.

Trusted: Recommended by CNET and widely downloaded by users worldwide.


Suitable Use Cases

Small businesses and startups needing quick barcode labels for products.

Retailers and online sellers managing inventory with batch barcode printing.

Manufacturers requiring sequential or custom barcode labels for packaging.

Educational and testing environments where barcodes are used for tracking.

 

 

CONTACT

cs@easiersoft.com

If you have any question, please feel free to email us.

 

https://free-barcode.com

 

<<< Back to Directory <<<     Barcode Generator     Barcode Freeware     Privacy Policy