Awesome Open Source
Awesome Open Source


Package qrcode implements a QR Code encoder. Build Status

A QR Code is a matrix (two-dimensional) barcode. Arbitrary content may be encoded, with URLs being a popular choice :)

Each QR Code contains error recovery information to aid reading damaged or obscured codes. There are four levels of error recovery: Low, medium, high and highest. QR Codes with a higher recovery level are more robust to damage, at the cost of being physically larger.


go get -u

A command-line tool qrcode will be built into $GOPATH/bin/.


import qrcode ""
  • Create a 256x256 PNG image:

      var png []byte
      png, err := qrcode.Encode("", qrcode.Medium, 256)
  • Create a 256x256 PNG image and write to a file:

      err := qrcode.WriteFile("", qrcode.Medium, 256, "qr.png")
  • Create a 256x256 PNG image with custom colors and write to file:

      err := qrcode.WriteColorFile("", qrcode.Medium, 256, color.Black, color.White, "qr.png")

All examples use the qrcode.Medium error Recovery Level and create a fixed 256x256px size QR Code. The last function creates a white on black instead of black on white QR Code.





A command-line tool qrcode will be built into $GOPATH/bin/.

qrcode -- QR Code encoder in Go

  -d	disable QR Code border
  -i	invert black and white
  -o string
    	out PNG file prefix, empty for stdout
  -s int
    	image size (pixel) (default 256)
  -t	print as text-art on stdout

  1. Arguments except for flags are joined by " " and used to generate QR code.
     Default output is STDOUT, pipe to imagemagick command "display" to display
     on any X server.

       qrcode hello word | display

  2. Save to file if "display" not available:

       qrcode "homepage:" > out.png

Maximum capacity

The maximum capacity of a QR Code varies according to the content encoded and the error recovery level. The maximum capacity is 2,953 bytes, 4,296 alphanumeric characters, 7,089 numeric digits, or a combination of these.

Borderless QR Codes

To aid QR Code reading software, QR codes have a built in whitespace border.

If you know what you're doing, and don't want a border, see for how to do it. It's still recommended you include a border manually.


Alternatives To Go Qrcode
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Golang (171,827
Code (18,112
Qrcode (5,812
Qr Code (5,797
Encoder (4,419
Recovery (2,246