tecnickcom / tc-lib-barcode
PHP library to generate linear and bidimensional barcodes
Fund package maintenance!
Requires
- php: ^8.2
- ext-ctype: *
- ext-gd: *
- ext-pcre: *
- tecnickcom/tc-lib-color: ^3.0
Requires (Dev)
- carthage-software/mago: ^1.47.4
- pdepend/pdepend: ^2.16
- phpunit/phpunit: ^11.5 || ^12.5 || ^13.3
Suggests
- ext-bcmath: Speeds up the arbitrary precision arithmetic used by the IMB and PDF417 barcode types (a pure-PHP implementation is used when missing)
- ext-imagick: Alternative PNG renderer used by getPngData() when the extension is loaded
This package is auto-updated.
Last update: 2026-08-27 14:22:10 UTC
README
PHP library for generating linear and 2D barcodes.
💖 Part of the tc-lib-pdf / TCPDF ecosystem (100M+ installs). Sponsor its maintenance →
Overview
tc-lib-barcode is a pure-PHP library that encodes data as linear, 2D and postal barcode symbols and renders them as SVG, PNG, HTML or text.
| Namespace | \Com\Tecnick\Barcode |
| Author | Nicola Asuni info@tecnick.com |
| License | GNU LGPL v3 - see LICENSE |
| API docs | https://tcpdf.org/docs/srcdoc/tc-lib-barcode |
| Packagist | https://packagist.org/packages/tecnickcom/tc-lib-barcode |
Supported Formats
Linear
| Format | Description |
|---|---|
| C39 | CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9 |
| C39+ | CODE 39 + CHECKSUM |
| C39E | CODE 39 EXTENDED |
| C39E+ | CODE 39 EXTENDED + CHECKSUM |
| C93 | CODE 93 - USS-93 |
| S25 | Standard 2 of 5 |
| S25+ | Standard 2 of 5 + CHECKSUM |
| I25 | Interleaved 2 of 5 |
| I25+ | Interleaved 2 of 5 + CHECKSUM |
| C128 | CODE 128 |
| C128A | CODE 128 A |
| C128B | CODE 128 B |
| C128C | CODE 128 C |
| EAN2 | EAN 2-Digits UPC-Based Extension |
| EAN5 | EAN 5-Digits UPC-Based Extension |
| EAN8 | EAN 8 |
| EAN13 | EAN 13 |
| UPCA | UPC-A |
| UPCE | UPC-E |
| MSI | MSI (Variation of Plessey code) |
| MSI+ | MSI + CHECKSUM (modulo 11) |
| CODABAR | CODABAR |
| CODE11 | CODE 11 |
| PHARMA | PHARMACODE |
| PHARMA2T | PHARMACODE TWO-TRACKS |
| LRAW | 1D RAW MODE (comma-separated rows of 01 strings) |
2D
| Format | Description |
|---|---|
| AZTEC | AZTEC Code (ISO/IEC 24778:2008) |
| DATAMATRIX | DATAMATRIX (ISO/IEC 16022) |
| PDF417 | PDF417 (ISO/IEC 15438:2006) |
| QRCODE | QR-CODE |
| SRAW | 2D RAW MODE (comma-separated rows of 01 strings) |
Postal
| Format | Description |
|---|---|
| POSTNET | POSTNET |
| PLANET | PLANET |
| RMS4CC | RMS4CC (Royal Mail 4-state Customer Bar Code) |
| KIX | KIX (Klant index - Customer index) |
| IMB | IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 |
| IMBPRE | IMB - Intelligent Mail Barcode pre-processed |
Output Formats
- SVG image (file, inline code, or standalone document)
- PNG image (via GD or Imagick)
- GD image object
- HTML
divelements - Character grid string
- Array of bar coordinates
Width, height, padding, foreground and background color are set per barcode.
Requirements
- PHP 8.2 or later
- Extensions:
gd - Optional extensions:
bcmath(speeds up the arbitrary precision arithmetic used by the IMB and PDF417 types, a pure-PHP implementation is used when it is missing) - Composer
Installation
composer require tecnickcom/tc-lib-barcode
Quick Start
<?php require_once __DIR__ . '/vendor/autoload.php'; $barcode = new \Com\Tecnick\Barcode\Barcode(); $bobj = $barcode->getBarcodeObj( type: 'QRCODE,H', code: 'https://tecnick.com', width: -4, height: -4, color: 'black', padding: [-2, -2, -2, -2], )->setBackgroundColor('white'); echo $bobj->getInlineSvgCode();
For more formats and rendering options, see the example/ directory.
Development
make deps
make help
make qa
To preview the example app in a browser:
make server
Then open http://localhost:8000/ (served from the example/ directory).
To use a different port:
make server PORT=8080
Build artifacts and reports are generated in target/.
Packaging
make rpm make deb
For system packages, bootstrap with:
require_once '/usr/share/php/Com/Tecnick/Barcode/autoload.php';
Contributing
Contributions are welcome. Please read CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md before submitting a pull request.