tecnickcom/tc-lib-barcode

PHP library to generate linear and bidimensional barcodes

Maintainers

Package info

github.com/tecnickcom/tc-lib-barcode

Homepage

pkg:composer/tecnickcom/tc-lib-barcode

Transparency log

Fund package maintenance!

tecnickcom

Statistics

Installs: 8 542 989

Dependents: 44

Suggesters: 0

Stars: 299

Open Issues: 0

2.14.0 2026-08-27 14:19 UTC

README

PHP library for generating linear and 2D barcodes.

Latest Stable Version Build Coverage License Downloads

Sponsor on GitHub

💖 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 div elements
  • 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.