Fork of LeanQR, simplified (only canvas, removed extras, removed Preact/React) and adjusted to build for better browser compatibility. Now builds minified CJS that can be included in browsers directly. Builds minified and non-minified versions.
Lean QR is a lightweight yet fully-featured library for generating QR Codes. It runs in NodeJS and most browsers, and includes wrapper components. Under 4kB compressed.
- ISO 18004 compliant;
- Lightweight (less than 4kB compressed, ~7kB uncompressed, no dependencies);
- Simple yet flexible API, with sensible defaults for all configuration;
- Supports all standard encodings out-of-the box:
- including Unicode 😎;
- and Shift-JIS 漢字;
- and supports custom modes for special requirements;
- Automatic encoding to minimise output size;
- Fast enough for lag-free live editing;
- Comprehensive automated testing;
You can see it in action online, or try it from the terminal:
npx lean-qr 'MY MESSAGE HERE'
Build, output will be placed in web/build
npm install
npm run build
Example usage:
<script src='lean-qr-2.3.4.min.js' />
<canvas id="my-qr-code" />
<style>
#my-qr-code {
image-rendering: pixelated;
width: 100%;
}
</style>
<script>
const qrCode = generate('LEAN-QR LIBRARY');
qrCode.toCanvas(document.getElementById('my-qr-code'));
</script>
There is a bug in JSDOM which prevents this class being available in tests. This issue only affects JSDOM, and can be fixed with:
import { TextEncoder, TextDecoder } from 'node:util';
global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;
You can put this in the test file or in Jest's setupFilesAfterEnv
config.
You should not put this in your application code.