A self-hostable barcode generator for QR, rMQR, Micro QR, Aztec, PDF417, EAN-13, UPC-A, EAN-8, ITF-14, Code 128, and square or rectangular Data Matrix. Generation happens entirely in the browser. Barcode content is saved only in that browser so compatible matrix and stacked formats can reuse the same value.
npm install
npm run devOpen http://localhost:3000.
npm run lint
npm test
npm run typecheck
npm auditType checking uses the runtime declarations generated from the production build,
so run it after npm test or npm run build.
docker compose up -d --buildThe service listens on port 3000. Put it behind the HTTPS reverse proxy or
private access layer already used by the server before sharing it externally.
npm ci
npm run build
npm run start -- --hostname 0.0.0.0 --port 3000- SVG files contain paths, including human-readable OCR-B digits, so the recipient does not need the font installed.
- PNG files are rasterized to the selected 300, 600, or 1200 DPI pixel count.
- PNG edges snap to the raster grid for reliable detection. Oversized PNGs show a clear limit; use a lower DPI or SVG for larger artwork.
- GTIN check digits are calculated and validated locally.
- Required quiet zones are included automatically.
- General-purpose content carries across QR, rMQR, Micro QR, Data Matrix, Aztec, and PDF417, while retail number drafts stay separate.
- The current value and selected format persist in local browser storage and can be reset to the built-in examples.
- When browser storage is blocked or full, generation continues and the app shows that the current draft cannot be saved.
- Production installation caches the complete application for offline use. Each build has its own cache and update notification.
Hover over the format badge beside “Enter the data” for a short explanation. Click or tap to keep it open; use Escape, the close button, or an outside click to close it. Each of the 11 formats has structure notes and links to primary sources. Retail numbers include their actual check-digit maths and, where available, a GS1 prefix explanation. Prefixes identify the allocating organisation, not where a product was manufactured. The offline lookup is intentionally partial.
Mantine supplies accessible popovers and tooltips under a theme that preserves the existing typography, palette, and square corners. Only the component styles in use are imported. Explanations are hidden by default and remain available offline.
The scoped esbuild override for @esbuild-kit/core-utils removes its obsolete
0.18.x development-server dependency. It uses the 0.25.12 version already used by
Drizzle Kit; schema generation and both transform APIs were smoke-tested. Keep the
override until Drizzle removes that legacy helper, and recheck those paths when
updating it. See QA.md for release validation and physical-print limits.