• Add missing dependency to release script.


  • Breaking Dropped support for Python 3.6.
  • Added support for Python 3.11.
  • Fixed compatibility with Pillow 10.0.
  • Updated ISBN to support newer allocated ranges.
  • Improved type hints.


  • Breaking: The default dimensions have changed slightly. This is so that the results of generating a PNG and an SVG look more alike.
  • Previous versions included an empty text element for SVGs with no comment. This is no longer the case.
  • Some internals have been improved so as to allow better subclassing. Subclasses of Barcode can now override default_writer_options and default_writer().
  • A guardbar parameter has been added to EAN barcodes. This renders barcodes with guardars (longer bars).
  • Added support for Python 3.10.
  • The documentation setup has been redone, hopefully squashing a lot of legacy quirks.
  • Previous versions installed the tests module. This was not intentional and have been fixed.


  • Fix a crash when using the generate shortcut function.


  • Added support for transparent backgrounds. This is done by setting the mode option for a writer to RGBA.
  • Dropped support for Python 3.5.
  • Added support for Python 3.9.


  • Removed writer_options from barcode.get. This parameter was not used.
  • Add a with_doctype flag to SVGWriter. Set this to false to avoid including a DOCTYPE in the resulting SVG.
  • Add support for Pillow>=8.0.0.


  • Added basic support for multiline text.
  • Dropped lots of older compat-only code and other cleanups.
  • Fixed a bug in the API when combining certain barcodes and writers.
  • Published documentation again and updated all project references.
  • Fix python_barcode.get mixups between options as writer_options. Previously, some writer/barcode combinations worked fine, while others failed. Now all work consistently.
  • The cli tool has been fixed and should now work as expected again.


  • Added support for GS1-128.


  • Officially support Python 3.7
  • Refer to Pillow in the docs, rather than PIL.


  • Removed buggy Barcode.raw attribute.
  • Various CLI errors ironed out.
  • Make the default value for writer_options` consistent across writers.


  • Fix pushing of releases to GitHub.


  • Fix crashes when attempting to use the CLI app.
  • Properly include version numbers in SVG comments.


  • Improve README rendering, and point to this fork’s location (the outdated README on PyPI was causing some confusion).


  • First release under the name python-barcode.

Previous Changelog

This project is a fork of pyBarcode, which, apparently, is no longer maintained. v0.8.0 is our first release, and is the latest master from that parent project.


  • Code 128 added.
  • Data for charsets and bars moved to subpackage barcode.charsets.
  • Merged in some improvements.


  • Fixed some issues with fontsize and fontalignment.
  • Added Python 3 support. It’s not well tested yet, but the tests run without errors with Python 3.3. Commandline script added.


  • Changed save and write methods to take the options as a dict not as keyword arguments (fix this in your code). Added option to left align the text under the barcode. Fixed bug with EAN13 generation.


  • Added new generate function to do all generation in one step.
  • Moved writer from a subpackage to a module (this breaks some existing code). UPC is now rendered as real UPC, not as EAN13 with the leading “0”.


  • Fixed bug in new write method (related to PIL) and updated docs.


  • Added write method to support file like objects as target.


  • Bugfix release. Removed redundancy in input validation.
  • EAN8 was broken. It now works as expected.


  • Removed **options from writers __init__ method. These options never had effect. They were always overwritten by default_options.
  • New config option available: text_distance (the distance between barcode and text).


  • Basic documentation included. The barcode object now has a new attribute called raw to have the rendered output without saving to disk.


  • Support for rendering barcodes as images is implemented. PIL is required to use it.


  • Compression for SVG output now works.


  • Writer API has changed for simple adding new (own) writers.
  • SVG output is now generated with xml.dom module instead of stringformatting (makes it more robust).


  • API of render changed. Now render takes keyword arguments instead of a dict.


  • More tests added.


  • First release.