yeqown
go-qrcode
Go

To help gophers generate QR Codes with customized styles, such as color, block size, block shape, and icon.

Last updated Jul 6, 2026
853
Stars
118
Forks
5
Issues
+1
Stars/day
Attention Score
70
Language breakdown
No language data available.
Files click to expand
README

go-qrcode #

Go Report Card go.dev reference Go GitHub release (latest SemVer) GitHub go.mod Go version License

QR code (abbreviated from Quick Response Code) is the trademark for a type of matrix barcode (or two-dimensional barcode) first designed in 1994 for the automotive industry in Japan. A barcode is a machine-readable optical label that contains information about the item to which it is attached. A QR code uses four standardized encoding modes (numeric, alphanumeric, byte/binary, and kanji) to store data efficiently; extensions may also be used

Features

  • [x] Normally generate QR code across version 1 to version 40.
  • [x] Automatically analyze QR version by source text.
  • [x] Specifying cell shape allowably with WithCustomShape, WithCircleShape (default is rectangle)
  • [x] Specifying output file's format with WithBuiltinImageEncoder, WithCustomImageEncoder (default is JPEG)
  • [x] Not only shape of cell, but also color of QR Code background and foreground color.
  • [x] WithLogoImage, WithLogoImageFilePNG, WithLogoImageFileJPEG help you add an icon at the central of QR Code.
  • [x] WithBorderWidth allows to specify any width of 4 sides around the qrcode.
  • [x] WebAssembly support, check out the Example and README for more detail.
  • [x] support Halftone QR Codes, check out the Example.

Install

go get -u github.com/yeqown/go-qrcode/v2

Quick Start

link to CODE

package main

import ( "github.com/yeqown/go-qrcode/v2" "github.com/yeqown/go-qrcode/writer/standard" )

func main() { qrc, err := qrcode.New("https://github.com/yeqown/go-qrcode") if err != nil { fmt.Printf("could not generate QRCode: %v", err) return } w, err := standard.New("../assets/repo-qrcode.jpeg") if err != nil { fmt.Printf("standard.New failed: %v", err) return } // save file if err = qrc.Save(w); err != nil { fmt.Printf("could not save image: %v", err) } }

Options

const (
	// EncModeNone mode ...
	EncModeNone encMode = 1 << iota
	// EncModeNumeric mode ...
	EncModeNumeric
	// EncModeAlphanumeric mode ...
	EncModeAlphanumeric
	// EncModeByte mode ...
	EncModeByte
	// EncModeKanji mode ...
	EncModeKanji
)

// WithEncodingMode sets the encoding mode. func WithEncodingMode(mode encMode) EncodeOption {}

const ( // ErrorCorrectionLow :Level L: 7% error recovery. ErrorCorrectionLow ecLevel = iota + 1 // ErrorCorrectionMedium :Level M: 15% error recovery. Good default choice. ErrorCorrectionMedium // ErrorCorrectionQuart :Level Q: 25% error recovery. ErrorCorrectionQuart // ErrorCorrectionHighest :Level H: 30% error recovery. ErrorCorrectionHighest )

// WithErrorCorrectionLevel sets the error correction level. func WithErrorCorrectionLevel(ecLevel ecLevel) EncodeOption {}

Samples

These samples are generated with standard writer, check out Example for more details.

| A | B | C | D | |--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| |
bg-fg color |
transparent |
border padding |
circle shape | |
fg gradient |
using halftone |
set logo image |
block width | |
custom shape | | | |


Built-in Writers

Of course, you can also code your own writer, just implement Writer interface.

Migrating from v1

go-qrcode.v2 is a major upgrade from v1, and it is not backward compatible. v2 redesigned the API, and it is more flexible and powerful. Features are split into different modules (according to functionality).

  • github.com/yeqown/go-qrcode/v2 core
  • github.com/yeqown/go-qrcode/writer/standard writer/imageFile
  • github.com/yeqown/go-qrcode/writer/terminal writer/terminal
Check example/migrating-from-v1 for more details.

Links

🔗 More in this category

© 2026 GitRepoTrend · yeqown/go-qrcode · Updated daily from GitHub