# qrcode-generator

> QR Code Generator implementation in JavaScript.

Latest version **2.0.4** (published 2025-08-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install qrcode-generator
pnpm add qrcode-generator
yarn add qrcode-generator
bun add qrcode-generator
```

## Health

**Score 50/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 2.0.4 |
| Published | 2025-08-07 |
| First published | 2014-11-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 542.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2365 |
| Author | Kazuhiko Arase |
| Maintainers | kazuhikoarase |
| Keywords | qr, qrcode, generator |

## Links

- npm: https://www.npmjs.com/package/qrcode-generator
- Repository: https://github.com/kazuhikoarase/qrcode-generator
- Homepage: https://github.com/kazuhikoarase/qrcode-generator#readme
- Issues: https://github.com/kazuhikoarase/qrcode-generator/issues
- npm.io page: https://npm.io/package/qrcode-generator

## Alternatives

- [jsforce](https://npm.io/package/jsforce.md) — 851.2K weekly downloads
- [react-native-qrcode-svg](https://npm.io/package/react-native-qrcode-svg.md) — 693.5K weekly downloads
- [@salesforce/plugin-data](https://npm.io/package/@salesforce/plugin-data.md) — 394.9K weekly downloads
- [@backstage/plugin-search-common](https://npm.io/package/@backstage/plugin-search-common.md) — 308.5K weekly downloads
- [@chain-registry/types](https://npm.io/package/@chain-registry/types.md) — 38.4K weekly downloads

## Recent versions

- 2.0.4 (latest) — 2025-08-07
- 2.0.2 — 2025-06-27
- 2.0.1 — 2025-06-27
- 2.0.0 — 2025-06-26
- 1.5.2 — 2025-06-26
- 1.5.1 — 2025-06-24
- 1.5.0 — 2025-06-08
- 1.4.4 — 2019-09-18
- 1.4.3 — 2019-02-15
- 1.4.2 — 2019-02-14
- 1.4.1 — 2018-09-01
- 1.4.0 — 2018-04-25
- 1.3.1 — 2017-07-24
- 1.3.0 — 2017-07-18
- 1.2.0 — 2017-03-29
- … 9 more at https://npm.io/package/qrcode-generator/versions

## README

QR Code Generator
===

## Getting Started

1. Include qrcode.js in your html.
2. Prepare a place holder.
3. Generate QR and render it.

```html
<script type="text/javascript" src="qrcode.js"></script>
```
```html
<div id="placeHolder"></div>
```
```javascript
var typeNumber = 4;
var errorCorrectionLevel = 'L';
var qr = qrcode(typeNumber, errorCorrectionLevel);
qr.addData('Hi!');
qr.make();
document.getElementById('placeHolder').innerHTML = qr.createImgTag();
```
## API Documentation

### QRCodeFactory

#### qrcode(typeNumber, errorCorrectionLevel) => <code>QRCode</code>
Create a QRCode Object.

| Param                | Type                | Description                                    |
| ---------------------| ------------------- | ---------------------------------------------- |
| typeNumber           | <code>number</code> | Type number (1 ~ 40), or 0 for auto detection. |
| errorCorrectionLevel | <code>string</code> | Error correction level ('L', 'M', 'Q', 'H')    |

#### qrcode.stringToBytes(s) : <code>number[]</code>
Encodes a string into an array of number(byte) using any charset.
This function is used by internal.
Overwrite this function to encode using a multibyte charset.

| Param  | Type                | Description      |
| ------ | ------------------- | ---------------- |
| s      | <code>string</code> | string to encode |

### QRCode

#### addData(data, mode) => <code>void</code>
Add a data to encode.

| Param  | Type                | Description                                                |
| ------ | ------------------- | ---------------------------------------------------------- |
| data   | <code>string</code> | string to encode                                           |
| mode   | <code>string</code> | Mode ('Numeric', 'Alphanumeric', 'Byte'(default), 'Kanji') |

#### make() => <code>void</code>
Make a QR Code.

#### getModuleCount() => <code>number</code>
The number of modules(cells) for each orientation.
_[Note] call make() before this function._

#### isDark(row, col) => <code>boolean</code>
The module at row and col is dark or not.
_[Note] call make() before this function._

| Param | Type                | Description         |
| ----- | ------------------- | ------------------- |
| row   | <code>number</code> | 0 ~ moduleCount - 1 |
| col   | <code>number</code> | 0 ~ moduleCount - 1 |

#### createDataURL(cellSize, margin) => <code>string</code>
#### createImgTag(cellSize, margin, alt) => <code>string</code>
#### createSvgTag(cellSize, margin) => <code>string</code>
#### createTableTag(cellSize, margin) => <code>string</code>
#### createASCII(cellSize, margin) => <code>string</code>
Helper functions for HTML.
 _[Note] call make() before these functions._

| Param    | Type                | Description           |
| -------- | ------------------- | --------------------- |
| cellSize | <code>number</code> | default: 2            |
| margin   | <code>number</code> | default: cellSize * 4 |
| alt      | <code>string</code> | (optional)            |

#### createSvgTag(opts) => <code>string</code>

| Param         | Type                 | Description           |
| ------------- | -------------------- | --------------------- |
| opts          | <code>object</code>  | default: {}           |
| opts.cellSize | <code>number</code>  | default: 2            |
| opts.margin   | <code>number</code>  | default: cellSize * 4 |
| opts.scalable | <code>boolean</code> | default: false        |

#### renderTo2dContext(context, cellSize) => <code>void</code>

--

This implementation is based on JIS X 0510:1999.

The word 'QR Code' is registered trademark of DENSO WAVE INCORPORATED
<br/>http://www.denso-wave.com/qrcode/faqpatent-e.html

---
_Source: https://npm.io/package/qrcode-generator · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
