qr-code.js

QRCode.js - Simple, Beautiful, Reliable

npm version

Create Beautiful, Reliable QR Codes with Ease

QRCode.js is a professional JavaScript/TypeScript library for creating customized QR codes, offering a blend of simplicity and sophistication. With versatile styling options—dot shapes, colors, gradients, embedded images, borders, and text—it enables you to design unique, visually appealing QR codes that work flawlessly with standard scanners. QRCode.js is part of QR-Platform: All-in-One QR Codes Management Solution.

✨ Features

🚀 Installation

NPM ⤵️

npm install @qr-platform/qr-code.js

YARN ⤵️

yarn add @qr-platform/qr-code.js

PNPM ⤵️

pnpm add @qr-platform/qr-code.js

💡 Basic Usage

import { QRCodeJs } from '@qr-platform/qr-code.js';

const qrCode = new QRCodeJs({ data: 'https://example.com' });
qrCode.append(document.getElementById('qr-container'));

or

import { QRCodeJs, Options } from '@qr-platform/qr-code.js';

// 1. Define options (only 'data' is required)
const options: Options = {
  data: 'https://example.com',
  width: 300,       // Fixed 300px width
  height: 300,      // Fixed 300px height
  dotsOptions: {
    color: '#007bff', // Blue dots
    type: 'rounded'   // Use rounded dots
  },
  backgroundOptions: {
    color: '#ffffff' // White background
  }
};

// 2. Create QR Code instance
const qrCode = new QRCodeJs(options);

// 3. Append to a container element (in browser)
const container = document.getElementById('qr-container');
if (container) {
  // Remove any existing content before appending the QR code
  qrCode.append(container, { clearContainer: true });
}

// Or get SVG string (Browser or Node.js)
qrCode.serialize().then(svgString => {
  if (svgString) {
    console.log('QR Code SVG:', svgString);
    // In Node.js, you might save this string to a file
    // require('fs').writeFileSync('qrcode.svg', svgString);
  }
});

⚙️ Key Options Overview

Option Description Example Value
data Required. The content to encode. 'Your URL here'
shape Overall shape ('square' or 'circle'). 'circle'
width QR code width (pixels/CSS units). Ignored when isResponsive: true. 300 or '20rem'
height QR code height (pixels/CSS units). Ignored when isResponsive: true. 300 or '20rem'
margin Quiet zone around the QR code (pixels). 10
isResponsive Makes SVG responsive (100% width/height), ignoring width/height. true
qrOptions.errorCorrectionLevel Error correction ('L', 'M', 'Q', 'H'). 'H'
dotsOptions.type Shape of the data dots (e.g., rounded, dot). 'rounded'
dotsOptions.color Color of the data dots. '#ff5733'
dotsOptions.gradient Gradient for dots (see Gradients). { type: 'linear', ... }
cornersSquareOptions Style for the large corner squares. { type: 'dot', color: '#00ff00' }
cornersDotOptions Style for the small dots inside corners. { type: 'square', color: '#ffffff' }
backgroundOptions Background style (color, roundness, gradient). { color: '#f0f0f0', round: 0.2 }
image URL/Buffer/Blob of image to embed. 'logo.png'
imageOptions Options for the embedded image (size, margin). { imageSize: 0.3, margin: 2 }
borderOptions Options for decorative borders. { hasBorder: true, thickness: 20, ... }
SettingsOptions Comprehensive object for setSettings/useSettings. { templateId: '...', data: '...', ...}

For a full list of options and detailed explanations of SettingsOptions, setData, setOptions, and their builder counterparts, see the API Reference Guide and Usage Guide.

🎨 Examples

Explore various configurations:

🖥️ Node.js Usage

QRCode.js works in Node.js for server-side generation.

import { QRCodeJs, Options } from '@qr-platform/qr-code.js/node'; // Note the '/node' import
import fs from 'fs';

const options: Options = {
  data: 'https://example.com/from-node',
  dotsOptions: {
    color: '#8A2BE2' // BlueViolet
  }
};

const qrCode = new QRCodeJs(options);

qrCode.serialize().then(svgString => {
  if (svgString) {
    fs.writeFileSync('qrcode-node.svg', svgString);
    console.log('QR Code saved to qrcode-node.svg');
  }
});

Key Differences:

📚 Documentation

📜 License and Support

QRCode.js by QR-Platform is free for personal projects, open-source projects, or general non-commercial use. For commercial use, a license is required.

See the full license at LICENSE.md for more information. For commercial licenses, including full source code and support, contact qr.platform.com@gmail.com.