qrcode

A zero-dependency-on-canvas QR code and 2D barcode generator for Node.js and the browser.

Library
npm
v1.5.4
8,180 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
42 /100 Fair
Development Activity 0
Maintenance 0
Community 68
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
83 /100 Excellent
Architecture 78
Code Quality 85
Innovation 88
Learning Curve 88

qrcode is an npm library for generating QR codes and 2D barcodes from server-side Node.js code or directly in the browser. It builds the QR symbol from scratch (segment optimization, Reed-Solomon error correction, mask-pattern selection) and ships pluggable renderers that can output the result as a PNG file or buffer, an SVG string, a data URL, raw terminal text, or directly onto an HTML5 canvas element.

Both a callback-based and a Promise/async-await API are supported for every render target, and the package also installs a qrcode CLI binary so a QR code can be generated or previewed from a shell one-liner without writing any code.

What You Get

  • A spec-compliant QR Code encoder supporting Numeric, Alphanumeric, Kanji, and Byte modes with automatic mixed-mode segmentation for the smallest possible symbol
  • Renderers for canvas, PNG (file, buffer, or data URL), SVG, UTF-8/terminal text, and writable file streams
  • A dual callback/Promise API across every render function (toDataURL, toBuffer, toFile, toFileStream, toString, toCanvas)
  • A globally installable qrcode CLI for generating QR images or previewing them directly in the terminal
  • Configurable error correction levels (L/M/Q/H), symbol version, mask pattern, quiet zone, and custom foreground/background colors

Common Use Cases

  • Generating login/2FA QR codes (e.g. TOTP otpauth:// URIs) for authenticator app enrollment
  • Rendering shareable QR codes for URLs, contact cards, or Wi-Fi credentials on server-rendered pages or PDFs
  • Embedding scannable payment or ticket codes in receipts and event passes generated as PNG/SVG assets
  • Client-side QR generation directly onto a <canvas> element for real-time previews as a user types

Under The Hood

Architecture — The encoder lives entirely under lib/core/ as a pipeline of small, single-purpose modules: segments.js splits input into Numeric/Alphanumeric/Kanji/Byte runs, version.js picks the smallest QR version that fits, bit-buffer.js and reed-solomon-encoder.js/polynomial.js/galois-field.js build and error-correct the codeword stream, and qrcode.js (createSymbol) assembles the final BitMatrix by laying down finder, timing, alignment, and format-info patterns before mask-pattern.js scores all eight masks and applies the best one. lib/index.js (Node) and lib/browser.js (browser) are thin adapters that call QRCode.create() and hand the resulting matrix to one of five interchangeable renderers under lib/renderer/ (canvas, png, svg, terminal, utf8), so the same core encoder drives every output format.

Tech Stack — Runtime dependencies are minimal and purpose-built: pngjs for PNG encoding, dijkstrajs for shortest-path segment-mode optimization, and yargs for the CLI’s argument parsing. The browser bundle is produced via Rollup with Babel’s preset-env, and standard enforces lint rules as a pretest hook, so a broken style fails CI before tests even run.

Code Quality — Test coverage is thorough and organized to mirror the source layout: 26 unit test files under test/unit/core and test/unit/renderer exercise each internal module in isolation (bit-buffer, mask-pattern, reed-solomon-encoder, etc.), while test/e2e/*.test.js drives the public toCanvas/toDataURL/toFile/toFileStream/toString API end-to-end using tap and sinon. Functions are short, consistently documented with JSDoc blocks, and side effects (like the mutable toSJISFunc set on Utils) are the rare exception rather than the norm.

API Design — The public surface is deliberately small and uniform: every to* render function accepts the same (data, options, callback) shape and transparently returns a Promise when the callback is omitted, so consumers opt into whichever async style fits their codebase without adapter code. Getting a QR code onto the screen or into a file takes one line (QRCode.toDataURL(text, cb)), and the same mental model extends to the CLI binary, keeping the learning curve low for a spec-heavy domain.

Used by 54 apps in this directory

TypeScript
88%
MIT

DevTools-X

Developer Tools

1,540

41 offline-first developer utilities in a single 10MB cross-platform desktop app — no Electron, no cloud, no compromise.

View details
48
Repo Health
68
Technical
68
Dependency
Built with
TypeScript 88%
Updated 5 months ago
TypeScript
80%
Other

Directus

CMS · Low Code Platforms

38,629

Connect any SQL database and get instant REST and GraphQL APIs, a visual management Studio, and a native MCP server for AI agents — free for most organizations.

View details
93
Repo Health
82
Technical
76
Dependency
Built with
TypeScript 80%
Vue 19%
Updated 1 weeks ago
TypeScript
95%
AGPL 3.0

Docmost

CMS · Collaboration · Note Taking

22,079

Self-hosted collaborative wiki and knowledge base with real-time editing, diagrams, AI assistance, and enterprise access controls — a modern alternative to Confluence and Notion.

View details
89
Repo Health
70
Technical
66
Dependency
Built with
TypeScript 95%
Updated 6 days ago
TypeScript
98%
Other

Dokploy

Devops · Hosting Control Panel · Security

37,989

Self-hosted PaaS that deploys apps and databases on your own VPS using Docker, Traefik, and multi-build-system orchestration

View details
89
Repo Health
76
Technical
64
Dependency
Built with
TypeScript 98%
Updated 6 days ago
TypeScript
94%
AGPL 3.0

Element Web

Collaboration · Team Chat

13,609

A polished, self-hostable Matrix client for secure, decentralized messaging and collaboration that puts your organization in full control of its data.

View details
96
Repo Health
83
Technical
64
Dependency
Built with
TypeScript 94%
Updated 1 weeks ago
TypeScript
91%
Other

FastGPT

AI Agents · AI Development

29,900

Build, debug, and deploy knowledge-based AI agents with a visual workflow editor, RAG retrieval, and support for any OpenAI-compatible LLM.

View details
93
Repo Health
84
Technical
66
Dependency
Built with
TypeScript 91%
Updated 6 days ago
TypeScript
97%
Other

Formbricks

Analytics · Design Tools · Forms Surveys

13,138

Open-source experience management platform for in-app, website, email, and link surveys — privacy-first and fully self-hostable.

View details
93
Repo Health
81
Technical
66
Dependency
Built with
TypeScript 97%
Updated 1 weeks ago
TypeScript
83%
Apache 2.0

Grist

Databases · No Code Platforms

11,991

A modern relational spreadsheet that combines Python-powered formulas, drag-and-drop dashboards, and granular access controls in a self-hostable, SQLite-backed data platform.

View details
91
Repo Health
93
Technical
63
Dependency
Built with
TypeScript 83%
Python 11%
Updated 1 weeks ago
TypeScript
62%
EPL-2.0

Huly Platform

Collaboration · Project Management · Team Chat

27,978

Open-source all-in-one workspace that replaces Linear, Jira, Slack, and Notion for product and engineering teams.

View details
90
Repo Health
86
Technical
62
Dependency
Built with
TypeScript 62%
Svelte 34%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers