To help gophers generate QR Codes with customized styles, such as color, block size, block shape, and icon.
Go
865
206 commits
updated Aug 6, 2026
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
version 1 to version 40.WithCustomShape, WithCircleShape (default is rectangle)WithBuiltinImageEncoder, WithCustomImageEncoder (default is JPEG)WithLogoImage, WithLogoImageFilePNG, WithLogoImageFileJPEG help you add an icon at the central of QR Code.WithBorderWidth allows to specify any width of 4 sides around the qrcode.WebAssembly support, check out the Example and README for more detail.go get -u github.com/yeqown/go-qrcode/v2
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)
}
}
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 {}
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 |
Of course, you can also code your own writer, just implement Writer interface.
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).
Check example/migrating-from-v1 for more details.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
343 followers · starred Mar 2024
121 followers · starred Apr 2026
37 followers · starred Feb 2024
51 followers · starred Feb 2023
To help gophers generate QR Codes with customized styles, such as color, block size, block shape, and icon.
Go
865
206 commits
updated Aug 6, 2026
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
version 1 to version 40.WithCustomShape, WithCircleShape (default is rectangle)WithBuiltinImageEncoder, WithCustomImageEncoder (default is JPEG)WithLogoImage, WithLogoImageFilePNG, WithLogoImageFileJPEG help you add an icon at the central of QR Code.WithBorderWidth allows to specify any width of 4 sides around the qrcode.WebAssembly support, check out the Example and README for more detail.go get -u github.com/yeqown/go-qrcode/v2
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)
}
}
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 {}
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 |
Of course, you can also code your own writer, just implement Writer interface.
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).
Check example/migrating-from-v1 for more details.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
343 followers · starred Mar 2024
121 followers · starred Apr 2026
37 followers · starred Feb 2024
51 followers · starred Feb 2023