Posted about 1 year ago. Visible to the public.

Generating barcodes with the Barby gem

Barby is a great Ruby gem to generate barcodes of all different sorts.

It includes support for QR codes via rQRCode; if you need to render only QR codes, you may want to use that directly.

Example usage

Generating a barcode is simple:

>>'Hello Universe').to_png => "\x89PNG\r\n\u001A..."


Barby supports several barcode types and you must require all necessary files explicitly.

For the example above these are barby/barcode/code_128 and barby/outputter/png_outputter.
You can specify that in your Gemfile like so:

gem 'barby', require: %w(barby barby/barcode/code_128 barby/outputter/png_outputter)

Pro tips

  • Barby's PNG outputter uses ChunkyPNG under the hood. You can call to_image to receive a ChunkyPNG::Canvas that you can rotate, resample, or just convert to a data URL.

    >>'Hello Universe').to_image.to_data_url => "data:image/png;base64,iVBORw0KGgoAA..."
  • For super-crisp barcodes, render them as SVG. Printing images usually causes some level of blur, but SVGs don't. Require Barby's svg_outputter and render an SVG (XML) string:

    svg ='Hello Universe').to_svg(margin: 0)

    To make that SVG freely scalable, you need to add preserveAspectRatio="none":

    svg.sub!('<svg ', '<svg preserveAspectRatio="none" ')

    Generating a data URI is simple:

    "data:image/svg+xml;utf8,#{svg.gsub(/\n/, '')}"
  • See the wiki for options on outputters and more.

Once an application no longer requires constant development, it needs periodic maintenance for stable and secure operation. makandra offers monthly maintenance contracts that let you focus on your business while we make sure the lights stay on.

Author of this card:

Arne Hartherz
Last edit:
11 months ago
by Arne Hartherz
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Arne Hartherz to makandra dev