Posted 11 months 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.

Growing Rails Applications in Practice
Check out our new e-book:
Learn to structure large Ruby on Rails codebases with the tools you already know and love.

Author of this card:

Arne Hartherz
Last edit:
9 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