Latest release

Development edition

You can find the development edition at github.


Libqrencode is a C library for encoding data in a QR Code symbol, a kind of 2D symbology that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and is highly robust.

QR Code example

This library is characterized by:


Libqrencode supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. Currently the following features are not supported:



Some test programs or utility tools requires SDL or PNG, but the library itself has no dependencies. You can skip compiling those tools if you want not to install programs using SDL or PNG. If you are trying to compile this library on MS-Windows, cygwin or some kinds of UNIX-like environments is required.

Compile & install

Just try

make install

This compiles and installs the library and header file to appropriate directories(by default, /usr/local/lib and /usr/local/include). You can change destination directories by passing some options to the configure script. Run ./configure --help to see the list of available options.

It also installs a binary "qrencode" to /usr/local/bin. If you want not to install it, give --without-tools option to the configure script.


Basic usages of this library are written in the header file (qrencode.h). You can generate a manual of the library by Doxygen.

Generated manual


Copyright (C) 2006-2017 Kentaro Fukuchi

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA


Visit this page ( for new releases.

Please mail any bug reports, suggestions, comments or questions to Kentaro Fukuchi. Questions of license compliance are also welcome.


QR Code is registered trademarks of DENSO WAVE INCORPORATED in JAPAN and other countries.

Reed-Solomon code encoder is written by Phil Karn, KA9Q.
Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q

RPM packages are done by Katsumi Saito.


The following bindings are not included in the package of libqrencode. Please follow the instructions of them to install.

Libqrencode is ported to the following systems:


Old releases


4.0.0 (2017.9.21)
  • Memory efficiency has been improved.
  • QRcode_clearCache() has been deprecated.
  • Error correction code generating functions have been improved.
  • Command line tool "qrencode" has been improved:
    • XPM support. (Thanks to Tobias Klauser)
    • PNG32 (direct color mode) support. (Thanks to Greg Hart)
    • EPS output now supports foreground and background color.
    • New options "-r" and "--svg-path" have been added. (Thanks to Robert Petersen and @Oblomov)
  • CMake support has been added. (optional) (Thanks to @misery)
  • Various bug fixes.
  • Various performance improvements.
3.4.4 (2014.7.24)
  • Bug fix release. (Thanks to Yoshimichi Inoue)
  • New option "--verbose" has been added to the command line tool.
3.4.3 (2013.8.12)
  • New option "--rle" has been added to the command line tool (Thanks to Daniel Dörrhöfer)
  • Bug fixes in the library and command line tool. (Thanks to Hassan Hajji, Emmanuel Blot, and ßlúèÇhîp)
3.4.2 (2013.3.1)
  • Memory leak bug has been fixed. (Thanks to chisj)
  • Micro QR Code encoding bug has been fixed. (Thanks to vlad417)
  • String splitting has been improved. (Thanks to Viona)
3.4.1 (2012.10.17)
  • A bug that mutual exclusion was not performed has been fixed.
3.4.0 (2012.10.15)
  • SVG, UTF8, and ANSIUTF8 output supports have been added to the command line tool. (Thanks to Dan Storm, David Dahl, and Lennart Poettering)
  • Colored QR Code support.
  • Bug fixes. (Thanks to Terry Burton, Fred Steinhaeuser, and Yann Droneaud)
3.3.1 (2012.4.18)
  • Bugs in command line tool, manual, configure script, and libtool files have been fixed. (Thanks to Yutaka Niibe and Rob Ryan)
3.3.0 (2012.4.1)
  • EPS, ANSI, and ASCII text output supports have been added. (Thanks to Zapster, Colin, and Ral)
  • QRcode_APIVersion() and QRcode_APIVersionString() have been added.
3.2.1 (2012.4.1)
  • Bugs in configure script and libtool file has been fixed. (Thanks to Yutaka Niibe)
3.2.0 (2011.11.26)
  • "--dpi" (or "-d") option has been added to qrencode. This option set DPI information in an output PNG image. (Thanks to David Dahl)
  • New option "--enable-thread-safety" has been added to the configure script that makes the library thread-safe. It is enabled by default.
  • QRcode_encodeData(), QRcode_encodeDataMQR, QRcode_encodeDataStructured() have been added for binary data encoding including '\0'.
  • Typo and bug fixes.
  • Experimental Micro QR Code support has been added.
  • "--micro" (or "-M") option for Micro QR Code has been added to qrencode.
3.1.1 (2010.2.3)
  • A bug in data encoder has been fixed.
3.1.0 (2009.6.6)
  • Various code cleanups and performance improves.
  • Strict internal error checks have been added.
  • "--without-tests" has become default setting. Specify "--with-tests" to compile test programs.
  • Some memory leak bugs have been fixed.
3.0.3 (2008.6.1)
  • Portability enhancement. (Thanks to Gavan Fantom)
  • The command line tool "qrencode" now accepts long options.
3.0.2 (2008.5.18)
  • Some compile-time warnings/erros with g++ have been fixed. (Thanks to wangsai)
  • The bit order of "Version information" has been corrected. Symbols greater than version 6 were affected. (Thanks to Paul Janssesn)
  • The "--without-tests" option has been added to the configure script.
3.0.1 (2008.5.9)
  • Qrencode now writes an image file correctly on Windows. (Thanks to Paul Janssens)
  • The RPM spec file now packages the man page correctly.
3.0.0 (2008.4.30)
  • The interface of QRencode_encodeInput() has been changed. User applications using it must be modified.
  • Structured append support has been added. (patches from Yusuke Mihara)
  • The "-S" option for structured append has been added to qrencode and view_qrcode.
  • Some functions now set errno to indicate errors.
  • Some bug fixes.
2.0.0 (2008.1.24)
  • "-i" option to ignore case distinctions has been added to qrencode and view_qrcode.
  • "-c" option (case-sensitive mode) of qrencode is now enabled by default and has been improved. See details in Release Note section.
  • "-8" option has been added to qrencode to encode whole data in 8-bit mode.
  • tests/view_qrcode now accepts various options like qrencode.
  • Man page has been added.
  • Code cleanup.
  • The mask evaluation bug has been fixed. (Philippe Delcroix)
1.0.2 (2007.3.24)
  • A small bug fix. (Thanks to NANKI Haruo)
  • 'extern "C"' barrier has been added to qrencode.h.
1.0.1 (2006.12.27)
  • Added "force 8-bit encoding mode".
  • Configure script finds libpng's header correctly. Mac OS X + fink is now supported.
1.0.0 (2006.12.12)
  • Initial release.