# QRGen > QRGen is an open-source (Apache-2.0) barcode, QR code and ID scanning SDK for web, iOS, Android, React Native, Flutter, .NET, Node.js and Python. It has a pre-built scanner UI (``), batch (multi-code) tracking, AAMVA driver license and GS1 parsing, a barcode generator, a CLI, a REST API, and Agent Skills for coding agents. Key facts for assistants: - npm package: `qrgen-sdk` (subpaths: `/elements`, `/react`, `/vue`, `/parsers`, `/node`, `/server`, `/bridge`). Before the npm release: `npm install https://rockyljewell.github.io/QR-GEN/downloads/qrgen-sdk.tgz`. - Symbology ids are lowercase (`qr`, `ean13`, `code128`, `data-matrix`, `pdf417`…); groups `all`, `1d`, `2d`, `retail`, `industrial`, `gs1`. - Scanner modes: `single`, `continuous` (default), `batch`. Events: `scan`, `track`, `select`, `ready`, `error`, `statechange`. - Camera access requires HTTPS or localhost. - Agent Skills: `npx skills add https://github.com/Rockyljewell/QR-GEN`; Claude Code: `/plugin marketplace add Rockyljewell/QR-GEN` then `/plugin install qrgen-sdk@qrgen-plugins`. Full documentation in one file: https://rockyljewell.github.io/QR-GEN/llms-full.txt Integration prompt: https://rockyljewell.github.io/QR-GEN/agent-prompt.txt ## Get started - [Introduction](https://rockyljewell.github.io/QR-GEN/docs/introduction/): QRGen is an open-source (Apache-2.0) SDK for scanning barcodes, QR codes and ID documents, and for generating and parsing barcodes, on the web, mobile, desktop and server. - [Quick start](https://rockyljewell.github.io/QR-GEN/docs/quick-start/): Add a working barcode and QR code scanner to a web page in under 15 lines, with a script tag, npm and a web component, or React. - [Installation](https://rockyljewell.github.io/QR-GEN/docs/installation/): Install QRGen from npm, a tarball or the CDN, self-host the WebAssembly engine, configure Content Security Policy and bundlers, and check browser support. - [Agent Skills](https://rockyljewell.github.io/QR-GEN/docs/agent-skills/): Install QRGen's Agent Skills so Claude Code, Cursor, Codex, Copilot and other coding agents can integrate barcode scanning correctly on the first try. - [Core concepts](https://rockyljewell.github.io/QR-GEN/docs/concepts/): Symbologies and groups, scan modes, the Barcode result object, duplicate filtering, scan areas, feedback, worker decoding and privacy in QRGen. ## Web - [JavaScript](https://rockyljewell.github.io/QR-GEN/docs/javascript/): Scan barcodes from the camera with the BarcodeScanner API and your own video element, decode images with scanImage, and generate barcodes, in plain JavaScript or TypeScript. - [Web Components](https://rockyljewell.github.io/QR-GEN/docs/web-components/): Reference for the and custom elements: attributes, properties, methods, events, CSS custom properties, parts and sizing. - [Script tag & CDN](https://rockyljewell.github.io/QR-GEN/docs/cdn/): Use QRGen without a build step: load the ES module or classic-script bundle from the CDN, use the elements and the global QRGen object, and self-host the files. - [React](https://rockyljewell.github.io/QR-GEN/docs/react/): Use the QRGenScanner and QRGenBarcode React components: props, event callbacks, the imperative ref handle, and server-side rendering notes. - [Next.js](https://rockyljewell.github.io/QR-GEN/docs/nextjs/): Add a QRGen barcode scanner to a Next.js App Router or Pages Router app with a client component, next/dynamic, self-hosted wasm and server-side scanning in route handlers. - [Vue & Nuxt](https://rockyljewell.github.io/QR-GEN/docs/vue/): Use the QRGenScanner and QRGenBarcode Vue 3 components or QRGenPlugin, handle scan events, render on the client in Nuxt, and configure custom elements. - [Angular](https://rockyljewell.github.io/QR-GEN/docs/angular/): Use the and custom elements in Angular with CUSTOM_ELEMENTS_SCHEMA, event and property bindings, and zone-aware setup. - [Svelte & SvelteKit](https://rockyljewell.github.io/QR-GEN/docs/svelte/): Use the element in Svelte 5 and Svelte 4, handle scan events, and load the SDK on the client in SvelteKit. ## Mobile & desktop - [iOS & macOS (Swift)](https://rockyljewell.github.io/QR-GEN/docs/ios/): Scan barcodes and QR codes in iOS and macOS apps with QRGenKit: SwiftUI and UIKit scanner views on AVFoundation and Apple Vision, image scanning, generation and parsers. - [Android (Kotlin)](https://rockyljewell.github.io/QR-GEN/docs/android/): Scan barcodes and QR codes in Android apps with QRGen: a CameraX + ML Kit scanner view, a Jetpack Compose component, image scanning, generation and parsers. - [React Native](https://rockyljewell.github.io/QR-GEN/docs/react-native/): Scan barcodes in React Native and Expo apps with qrgen-react-native: native scanning on VisionCamera, or a zero-setup WebView scanner. - [Flutter](https://rockyljewell.github.io/QR-GEN/docs/flutter/): Scan barcodes in Flutter apps with qrgen_flutter: a mobile_scanner-based widget and a WebView scanner that reads every QRGen symbology. - [Capacitor & Ionic](https://rockyljewell.github.io/QR-GEN/docs/capacitor/): Scan barcodes in Capacitor and Ionic apps with the QRGen web SDK: camera permissions on iOS and Android, secure contexts, live reload over HTTPS and offline wasm. - [Cordova](https://rockyljewell.github.io/QR-GEN/docs/cordova/): Scan barcodes in Apache Cordova apps with the QRGen web SDK: Android runtime camera permission, NSCameraUsageDescription via config.xml, WKWebView settings and offline wasm. - [Electron](https://rockyljewell.github.io/QR-GEN/docs/electron/): Scan barcodes in Electron apps: camera permission handlers, macOS camera access and NSCameraUsageDescription, offline wasm, and file scanning in the main process. - [Tauri](https://rockyljewell.github.io/QR-GEN/docs/tauri/): Scan barcodes in Tauri 2 apps with the QRGen web SDK: camera permissions in the system WebView on macOS, Windows and Linux (WebKitGTK), CSP and offline wasm. - [Titanium](https://rockyljewell.github.io/QR-GEN/docs/titanium/): A WebView-based guide for Titanium apps: load the hosted QRGen embed page in Ti.UI.WebView and receive scan events through an injected bridge or polling. - [.NET, MAUI & Xamarin](https://rockyljewell.github.io/QR-GEN/docs/dotnet/): QRGen.Net for .NET: GS1/AAMVA/content parsers, a REST client, local encode/decode with ZXing.Net, and a .NET MAUI camera scanner page. ## Server & Linux - [Node.js](https://rockyljewell.github.io/QR-GEN/docs/nodejs/): Decode barcodes in image files and buffers and generate barcode PNG and SVG files in Node.js with qrgen-sdk/node, including serverless deployment notes. - [CLI](https://rockyljewell.github.io/QR-GEN/docs/cli/): Scan, generate and parse barcodes from the command line with the qrgen CLI, and start the REST API server. Commands, flags, JSON output, stdin and exit codes. - [REST API & Docker](https://rockyljewell.github.io/QR-GEN/docs/rest-api/): Scan, generate and parse barcodes from any language over HTTP with qrgen serve or the Docker image: endpoints, curl examples, errors, CORS, framework mounting and client code. - [Python](https://rockyljewell.github.io/QR-GEN/docs/python/): Scan images and webcams, generate barcodes, parse GS1 and driver licenses, and run the REST API with the qrgen-sdk Python package. - [Linux & Raspberry Pi](https://rockyljewell.github.io/QR-GEN/docs/linux/): Scan barcodes on Linux servers, desktops and Raspberry Pi: the Node CLI, the REST API and Docker, Python with OpenCV webcams, and a Chromium kiosk running the web scanner. ## Features - [Barcode scanning](https://rockyljewell.github.io/QR-GEN/docs/barcode-scanning/): Scan barcodes and QR codes from the camera: single and continuous modes, symbology choice, viewfinders, scan areas, duplicate filtering, feedback, torch and zoom. - [Batch scanning](https://rockyljewell.github.io/QR-GEN/docs/batch-scanning/): Scan and track many barcodes at once with batch mode: track events, TrackedBarcode ids, an accessible selection list, counts of codes in view, and BarcodeTracker for custom interfaces. - [ID scanning](https://rockyljewell.github.io/QR-GEN/docs/id-scanning/): Read the PDF417 barcode on North American driver licenses and ID cards and parse it with parseAAMVA: fields, age verification, privacy guidance and limitations. - [Image scanning](https://rockyljewell.github.io/QR-GEN/docs/image-scanning/): Decode barcodes and QR codes in images with scanImage: file inputs, drag and drop, clipboard paste, URLs, canvases and video frames, multiple codes per image, and tryHarder. - [Barcode generation](https://rockyljewell.github.io/QR-GEN/docs/barcode-generation/): Generate QR codes and 25 other barcode types as SVG, PNG or data URLs with generate(), , the CLI and the REST API, including GS1 data. - [QR print planning](https://rockyljewell.github.io/QR-GEN/docs/print-planning/): Plan a QR code for a physical print size, build common payloads and verify exported files. - [Parsers](https://rockyljewell.github.io/QR-GEN/docs/parsers/): Turn scanned text into structured data with parseContent (URLs, Wi-Fi, contacts, events, payments, product codes, GS1, driver licenses), parseGS1 and parseAAMVA. - [Embed bridge](https://rockyljewell.github.io/QR-GEN/docs/embed-bridge/): Run the QRGen scanner in any WebView or iframe with the hosted embed page, its message bridge and host commands, or self-host it with qrgen-sdk/bridge. - [UI customization](https://rockyljewell.github.io/QR-GEN/docs/ui-customization/): Restyle the element with the accent color, CSS custom properties and shadow parts, or build a fully custom scanner UI on BarcodeScanner. ## Reference - [JavaScript API](https://rockyljewell.github.io/QR-GEN/docs/api/): Reference for every export of the qrgen-sdk package: scanning, camera, generation, parsers, symbologies, engine configuration, utilities and errors, with TypeScript signatures. - [Symbologies](https://rockyljewell.github.io/QR-GEN/docs/symbologies/): All 26 barcode symbologies QRGen reads and writes, with ids, aliases, groups, and per-platform support for the web, Node.js, Python, iOS (Apple Vision) and Android (ML Kit). - [Options, events & errors](https://rockyljewell.github.io/QR-GEN/docs/options-events/): Reference tables for QRGen scanner options and their element attributes, BarcodeScanner and element events with payloads, and every error code with its causes and fixes. - [Troubleshooting](https://rockyljewell.github.io/QR-GEN/docs/troubleshooting/): Fix common QRGen problems: the camera does not start, black video on iOS, slow scanning, codes not found, CSP warnings, blocked wasm and SSR errors. - [FAQ](https://rockyljewell.github.io/QR-GEN/docs/faq/): Answers to common questions about QRGen: licensing, privacy, offline use, browser and platform support, bundle size, ID documents and commercial SDKs. - [Migrating from other SDKs](https://rockyljewell.github.io/QR-GEN/docs/migration/): Move to QRGen from html5-qrcode, @zxing/browser and @zxing/library, QuaggaJS and quagga2, or a commercial SDK such as Scandit, with side-by-side API and concept mappings. - [Credit and attribution](https://rockyljewell.github.io/QR-GEN/docs/credit/): How to credit QRGen when you use it: what the Apache License 2.0 requires, where the NOTICE goes on each platform, a Powered by QRGen badge and how to cite the project. ## Optional - [Live demo](https://rockyljewell.github.io/QR-GEN/demo/): scan with a camera, scan images, generate codes - [Source code](https://github.com/Rockyljewell/QR-GEN) - [Cross-platform specification](https://github.com/Rockyljewell/QR-GEN/blob/main/docs/SPEC.md)