Pure Ruby implementation for 1D barcode generation
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


# Copyright 2012 Michael Chaney Consulting Corporation
# Released under the terms of the MIT License or the GNU
# General Public License, v. 2


This is an implementation of 1D barcodes in pure Ruby.  Code currently
works to generate and decode Code 128, Code 3 of 9, Code 93, Code 11,
Codabar, Interleaved 2 of 5 (I 2/5), COOP 2 of 5, Matrix 2 of 5,
Industrial 2 of 5, IATA 2 of 5, PostNet, Plessey, MSI (Modified
Plessey), EAN-13, EAN-8, UPC-A, UPC-E, UPC Supplemental 2, and UPC
Supplemental 5 symbologies.

This is a pretty complete set of 1D symbologies and most or all other
common symbologies are based on one of the above.  As of the 2000s most
bar code advancement is taking place in the 2D realm so it's unlikely
that anything more will come about.  Additionally, Code 128 is general
purpose and sufficiently compact and robust enough to cover any

I recommend any new application using 1D barcodes use Code 128.
Strictly numeric data might also use Interleaved 2 of 5.  Of course, 2D
barcodes are common now but 1D codes still have a huge installed base of
readers and are generally easier to deal with.

Contact Michael Chaney Consulting Corporation for commercial support for
this code: sales@michaelchaney.com

I also have a fairly complete Perl implementation at:


I believe those work fine, but consider it legacy code.

Copyright 2012 Michael Chaney Consulting Corporation, All Rights Reserved

Released under the terms of the MIT License or the GPL version 2