GitHub - nayuki/QR-Code-generator: High-quality QR Code generator library in Java, TypeScript/JavaScript, Python, Rust, C++, C. (original) (raw)

QR Code generator library

Introduction

This project aims to be the best, clearest QR Code generator library in multiple languages. The primary goals are flexible options and absolute correctness. Secondary goals are compact implementation size and good documentation comments.

Home page with live JavaScript demo, extensive descriptions, and competitor comparisons: https://www.nayuki.io/page/qr-code-generator-library

Features

Core features:

Manual parameters:

Optional advanced features (Java only):

More information about QR Code technology and this library's design can be found on the project home page.

Examples

The code below is in Java, but the other language ports are designed with essentially the same API naming and behavior.

import java.awt.image.BufferedImage; import java.io.File; import java.util.List; import javax.imageio.ImageIO; import io.nayuki.qrcodegen.*;

// Simple operation QrCode qr0 = QrCode.encodeText("Hello, world!", QrCode.Ecc.MEDIUM); BufferedImage img = toImage(qr0, 4, 10); // See QrCodeGeneratorDemo ImageIO.write(img, "png", new File("qr-code.png"));

// Manual operation List segs = QrSegment.makeSegments("3141592653589793238462643383"); QrCode qr1 = QrCode.encodeSegments(segs, QrCode.Ecc.HIGH, 5, 5, 2, false); for (int y = 0; y < qr1.size; y++) { for (int x = 0; x < qr1.size; x++) { (... paint qr1.getModule(x, y) ...) } }

License

Copyright © 2025 Project Nayuki. (MIT License)
https://www.nayuki.io/page/qr-code-generator-library

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: