# @suaveplan/barcode - Barcode generation and parsing for common 1D symbologies: Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, ITF. Outputs SVG strings and pixel arrays. ## Summary Runtime-agnostic 1D barcode generation for seven symbologies — Code 128B, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, and ITF. Outputs inline SVG strings and binary bar-pattern arrays with no canvas, no DOM, and no Node.js built-ins required, making it safe to use in Bun, Deno, edge runtimes, and browsers alike. Includes check-digit calculation, barcode validation, and human-readable text rendering. Use this package to generate product labels, shipping labels (ITF/GTIN-14), retail barcodes (EAN/UPC), and document barcodes (Code 128). For 2D barcodes (QR codes) use `@suaveplan/qrcode`. This package does not support barcode scanning/decoding from images — it is generation-only. ## Documentation tree - [encoder](./src/core/encoder/encoder.md) — _(no submodules)_ - [encoder](./src/core/encoder/encoder.md) — _(no submodules)_ - [validator](./src/core/validator/validator.md) — _(no submodules)_ - [validator](./src/core/validator/validator.md) — _(no submodules)_ - [errors](./src/errors/barcode-error.md) — _(no submodules)_ - [barcode-error](./src/errors/barcode-error.md) — _(no submodules)_ - [code128](./src/symbologies/code128.md) — Implements Code 128 Subset B encoding for the full printable ASCII range (characters 32–127). This module produces a bi… - [code39](./src/symbologies/code39.md) — Implements Code 39 barcode encoding for the standard 43-character set: digits 0–9, uppercase letters A–Z, and the speci… - [ean13](./src/symbologies/ean13.md) — Implements EAN-13 (International Article Number, 13-digit variant) barcode encoding following the ISO/IEC 15420 and GS1… - [ean8](./src/symbologies/ean8.md) — Implements EAN-8 barcode encoding for small retail packages where space constraints make EAN-13 impractical. EAN-8 enco… - [itf](./src/symbologies/itf.md) — Implements ITF (Interleaved 2 of 5) barcode encoding for numeric-only data. ITF is widely used in logistics, shipping,… - [upca](./src/symbologies/upca.md) — Implements UPC-A barcode encoding and validation. UPC-A is the primary barcode format used in North American retail, en… - [upce](./src/symbologies/upce.md) — Implements UPC-E barcode encoding for the compressed 6-digit UPC symbology used on small retail packages where space fo… - [encoder](./src/core/encoder/encoder.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_- [errors](./src/errors/barcode-error.md) — _(no submodules)_- [barcode-error](./src/errors/barcode-error.md) — _(no submodules)_- [code128](./src/symbologies/code128.md) — Implements Code 128 Subset B encoding for the full printable ASCII range (characters 32–127). This module produces a bi… - [code39](./src/symbologies/code39.md) — Implements Code 39 barcode encoding for the standard 43-character set: digits 0–9, uppercase letters A–Z, and the speci… - [ean13](./src/symbologies/ean13.md) — Implements EAN-13 (International Article Number, 13-digit variant) barcode encoding following the ISO/IEC 15420 and GS1… - [ean8](./src/symbologies/ean8.md) — Implements EAN-8 barcode encoding for small retail packages where space constraints make EAN-13 impractical. EAN-8 enco… - [itf](./src/symbologies/itf.md) — Implements ITF (Interleaved 2 of 5) barcode encoding for numeric-only data. ITF is widely used in logistics, shipping,… - [upca](./src/symbologies/upca.md) — Implements UPC-A barcode encoding and validation. UPC-A is the primary barcode format used in North American retail, en… - [upce](./src/symbologies/upce.md) — Implements UPC-E barcode encoding for the compressed 6-digit UPC symbology used on small retail packages where space fo… - [encoder](./src/core/encoder/encoder.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_- [errors](./src/errors/barcode-error.md) — _(no submodules)_- [barcode-error](./src/errors/barcode-error.md) — _(no submodules)_- [code128](./src/symbologies/code128.md) — Implements Code 128 Subset B encoding for the full printable ASCII range (characters 32–127). This module produces a bi… - [code39](./src/symbologies/code39.md) — Implements Code 39 barcode encoding for the standard 43-character set: digits 0–9, uppercase letters A–Z, and the speci… - [ean13](./src/symbologies/ean13.md) — Implements EAN-13 (International Article Number, 13-digit variant) barcode encoding following the ISO/IEC 15420 and GS1… - [ean8](./src/symbologies/ean8.md) — Implements EAN-8 barcode encoding for small retail packages where space constraints make EAN-13 impractical. EAN-8 enco… - [itf](./src/symbologies/itf.md) — Implements ITF (Interleaved 2 of 5) barcode encoding for numeric-only data. ITF is widely used in logistics, shipping,… - [upca](./src/symbologies/upca.md) — Implements UPC-A barcode encoding and validation. UPC-A is the primary barcode format used in North American retail, en… - [upce](./src/symbologies/upce.md) — Implements UPC-E barcode encoding for the compressed 6-digit UPC symbology used on small retail packages where space fo… - [encoder](./src/core/encoder/encoder.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_- [errors](./src/errors/barcode-error.md) — _(no submodules)_- [barcode-error](./src/errors/barcode-error.md) — _(no submodules)_- [code128](./src/symbologies/code128.md) — Implements Code 128 Subset B encoding for the full printable ASCII range (characters 32–127). This module produces a bi… - [code39](./src/symbologies/code39.md) — Implements Code 39 barcode encoding for the standard 43-character set: digits 0–9, uppercase letters A–Z, and the speci… - [ean13](./src/symbologies/ean13.md) — Implements EAN-13 (International Article Number, 13-digit variant) barcode encoding following the ISO/IEC 15420 and GS1… - [ean8](./src/symbologies/ean8.md) — Implements EAN-8 barcode encoding for small retail packages where space constraints make EAN-13 impractical. EAN-8 enco… - [itf](./src/symbologies/itf.md) — Implements ITF (Interleaved 2 of 5) barcode encoding for numeric-only data. ITF is widely used in logistics, shipping,… - [upca](./src/symbologies/upca.md) — Implements UPC-A barcode encoding and validation. UPC-A is the primary barcode format used in North American retail, en… - [upce](./src/symbologies/upce.md) — Implements UPC-E barcode encoding for the compressed 6-digit UPC symbology used on small retail packages where space fo… - [encoder](./src/core/encoder/encoder.md) — _(no submodules)_- [validator](./src/core/validator/validator.md) — _(no submodules)_ - [validator](./src/core/validator/validator.md) — _(no submodules)_- [errors](./src/errors/barcode-error.md) — _(no submodules)_ - [barcode-error](./src/errors/barcode-error.md) — _(no submodules)_- [code128](./src/symbologies/code128.md) — Implements Code 128 Subset B encoding for the full printable ASCII range (characters 32–127). This module produces a bi… - [code39](./src/symbologies/code39.md) — Implements Code 39 barcode encoding for the standard 43-character set: digits 0–9, uppercase letters A–Z, and the speci… - [ean13](./src/symbologies/ean13.md) — Implements EAN-13 (International Article Number, 13-digit variant) barcode encoding following the ISO/IEC 15420 and GS1… - [ean8](./src/symbologies/ean8.md) — Implements EAN-8 barcode encoding for small retail packages where space constraints make EAN-13 impractical. EAN-8 enco… - [itf](./src/symbologies/itf.md) — Implements ITF (Interleaved 2 of 5) barcode encoding for numeric-only data. ITF is widely used in logistics, shipping,… - [upca](./src/symbologies/upca.md) — Implements UPC-A barcode encoding and validation. UPC-A is the primary barcode format used in North American retail, en… - [upce](./src/symbologies/upce.md) — Implements UPC-E barcode encoding for the compressed 6-digit UPC symbology used on small retail packages where space fo… ## Symbologies | Symbology | Key | Description | |-----------|-----|-------------| | Code 128B | `code128` | ASCII 32–127; variable length; most versatile 1D format | | Code 39 | `code39` | 0–9, A–Z, special chars; industrial/logistics | | EAN-13 | `ean13` | 13-digit retail standard (ISBN-13, ISSN-13) | | EAN-8 | `ean8` | 8-digit compact retail for small packages | | UPC-A | `upca` | 12-digit North American retail | | UPC-E | `upce` | 8-digit compressed UPC-A for small packages | | ITF | `itf` | Interleaved 2 of 5; even-digit numeric; logistics/GTIN-14 | ## Install ```bash bun add @suaveplan/barcode ``` ## Quick Start ```ts import { encode } from "@suaveplan/barcode"; const result = encode("Hello World", "code128"); console.log(result.svg); // ... console.log(result.width); // pixel width ``` ## API ### `encode(data, symbology, options?): BarcodeResult` Main encoding function. Dispatches to the per-symbology encoder and renders an SVG. ```ts import { encode } from "@suaveplan/barcode"; const result = encode("5901234123457", "ean13", { width: 3, // bar width multiplier (default 2) height: 80, // bar height in pixels (default 100) margin: 15, // quiet zone (default 10) includeText: true, // render human-readable text (default true) color: "#000000", background: "#ffffff", }); ``` ### `validateBarcode(data, symbology): boolean` ```ts import { validateBarcode } from "@suaveplan/barcode"; validateBarcode("5901234123457", "ean13"); // true ``` ### `calculateCheckDigit(data, symbology): string` ```ts import { calculateCheckDigit } from "@suaveplan/barcode"; calculateCheckDigit("590123412345", "ean13"); // "7" ``` ### `parse(data, symbology): ParseResult` ```ts import { parse } from "@suaveplan/barcode"; const r = parse("5901234123457", "ean13"); // { symbology: "ean13", data: "...", valid: true, checkDigit: "7" } ``` ## Module Docs - [`src/errors/barcode-error.md`](src/errors/barcode-error.md) — Error class and code registry - [`src/symbologies/code128.md`](src/symbologies/code128.md) — Code 128B encoding - [`src/symbologies/code39.md`](src/symbologies/code39.md) — Code 39 encoding - [`src/symbologies/ean13.md`](src/symbologies/ean13.md) — EAN-13 encoding - [`src/symbologies/ean8.md`](src/symbologies/ean8.md) — EAN-8 encoding - [`src/symbologies/upca.md`](src/symbologies/upca.md) — UPC-A encoding - [`src/symbologies/upce.md`](src/symbologies/upce.md) — UPC-E encoding - [`src/symbologies/itf.md`](src/symbologies/itf.md) — ITF encoding - [`src/core/encoder/encoder.md`](src/core/encoder/encoder.md) — Central encoder and SVG renderer - [`src/core/validator/validator.md`](src/core/validator/validator.md) — Validation and parsing facade