xBarcode API

High-performance barcode generation library written in Rust. Supports 34+ symbologies with vector output.

Rust Native SVG / EPS Output 34+ Formats GS1 Compliant

Overview

๐Ÿš€ High Performance

Pure Rust implementation with zero external dependencies for core encoding.

๐Ÿ“ Vector Output

Generate SVG and EPS formats for infinite scalability and print quality.

๐ŸŽจ Full Customization

Configure colors, rotation, quiet zones, and output sizes.

โœ… Standards Compliant

Implements ISO/IEC and GS1 specifications for all supported formats.

Supported Barcodes (34 Types)

1D Linear Barcodes

Type Name Character Set Usage Standard
code128Code 128 (Auto)Full ASCIILogistics, TrackingISO/IEC 15417
code128aCode 128 AUpper + ControlIndustrialISO/IEC 15417
code128bCode 128 BASCII PrintableLabelsISO/IEC 15417
code128cCode 128 CNumeric pairsHigh-densityISO/IEC 15417
gs1128GS1-128AI + DataSupply ChainGS1 General Spec
code39Code 39A-Z, 0-9, symbolsIndustrialISO/IEC 16388
code93Code 93Full ASCIILogisticsโ€”
codabarCodabar0-9, - $ : / . +Libraries, Labsโ€”
ean13EAN-1312-13 digitsRetail (Intl)ISO/IEC 15420
ean8EAN-87-8 digitsSmall ProductsISO/IEC 15420
upcaUPC-A11-12 digitsRetail (US)ISO/IEC 15420
upceUPC-E6-8 digitsSmall ProductsISO/IEC 15420
itfITFEven digitsWarehouseISO/IEC 16390
itf14ITF-1413-14 digitsShippingGS1 General Spec
msiMSI PlesseyNumericInventoryโ€”
isbnISBN10/13 digitsBooksISO 2108
ssccSSCC17-18 digitsShipping UnitsGS1 General Spec
upus10UPU S1013 charsInternational MailUPU S10
uspsimbUSPS IMb20-31 digitsUS MailUSPS

2D Matrix/Stacked Barcodes

Type Name Capacity Usage Standard
qrcodeQR Code~4,296 charsMobile, URLsISO/IEC 18004
microqrMicro QR~35 charsSmall itemsISO/IEC 18004
datamatrixData Matrix~2,335 charsIndustrialISO/IEC 16022
pdf417PDF417~1,850 charsID CardsISO/IEC 15438
micropdf417Micro PDF417~150 charsSmall labelsISO/IEC 24728
aztecAztec Code~3,832 charsTicketsISO/IEC 24778
maxicodeMaxiCode~93 charsUPS ShippingISO/IEC 16023
gs1qrcodeGS1 QR~4,296 charsSupply ChainGS1 General Spec
gs1datamatrixGS1 DataMatrix~2,335 charsHealthcareGS1 General Spec

GTIN Family

TypeNameDigitsEquivalent
gtin8GTIN-88EAN-8
gtin12GTIN-1212UPC-A
gtin13GTIN-1313EAN-13
gtin14GTIN-1414ITF-14

API Reference

Core Functions

FunctionDescriptionReturns
create_encoder(format)Create encoder by nameOption<Box<dyn Encoder>>
supported_formats()List all supported formatsVec<&str>
render_svg_configured(matrix, config, type)Render to SVGString
render_eps(matrix, config, type)Render to EPSString

Encoder Trait

pub trait Encoder {
    fn encode(&self, contents: &str) -> Result<BitMatrix, BarcodeError>;
    fn barcode_type(&self) -> BarcodeType;
    fn format_name(&self) -> &'static str;
}

Configuration Options

RenderConfig

FieldTypeDefaultDescription
formatOutputFormatSVGSVG, PNG, EPS
fg_colorColor#000000Foreground color
bg_colorOption<Color>NoneBackground (None = transparent)
rotationRotationR0R0, R90, R180, R270
quiet_zoneQuietZoneModules(0)Margin around barcode
sizeOutputSizeModulePixels(4)Output dimensions

Default Values by Barcode Type

BarcodeEC LevelShapeColumnsModeQuiet Zone
qrcodeM (15%)โ€”โ€”Auto4 modules
microqrMโ€”โ€”Auto2 modules
datamatrixโ€”Squareโ€”Auto1 module
pdf417Level 2โ€”Autoโ€”2 modules
aztec23%โ€”โ€”Auto0
maxicodeโ€”Hexagonalโ€”40
code128โ€”โ€”โ€”Auto10 modules
itf14โ€”โ€”โ€”โ€”10 modules

Color Formats

// HEX format
Color::hex("#FF0000")      // Red
Color::hex("#FF000080")    // Red with 50% alpha

// sRGB format (0.0-1.0)
Color::srgb(1.0, 0.0, 0.0)           // Red
Color::srgba(1.0, 0.0, 0.0, 0.5)     // Red with 50% alpha

// RGB format (0-255)
Color::rgb(255, 0, 0)      // Red

// Predefined
Color::BLACK
Color::WHITE
Color::TRANSPARENT

Code Examples

Basic Usage

use xbarcode::{create_encoder, render_svg_configured, RenderConfig};

// Create encoder
let encoder = create_encoder("qrcode").unwrap();

// Encode data
let matrix = encoder.encode("Hello, World!").unwrap();

// Render to SVG with defaults
let svg = render_svg_configured(&matrix, &RenderConfig::default_svg(), "qrcode");

Custom Configuration

use xbarcode::{
    create_encoder, render_svg_configured, render_eps,
    Color, RenderConfig, Rotation, QuietZone, OutputSize, OutputFormat,
};

let encoder = create_encoder("datamatrix").unwrap();
let matrix = encoder.encode("Product ID: 12345").unwrap();

// Custom render config
let config = RenderConfig {
    format: OutputFormat::SVG,
    fg_color: Color::hex("#1a1a2e").unwrap(),
    bg_color: Some(Color::WHITE),
    rotation: Rotation::R90,
    quiet_zone: QuietZone::Standard,
    size: OutputSize::ModulePixels(8),
};

let svg = render_svg_configured(&matrix, &config, "datamatrix");
let eps = render_eps(&matrix, &config, "datamatrix");

List Supported Formats

use xbarcode::supported_formats;

for format in supported_formats() {
    println!("{}", format);
}
// Output: qrcode, datamatrix, pdf417, code128, ean13, ...

Technical Standards

ISO/IEC 18004

QR Code and Micro QR Code bar code symbology specification.

ISO/IEC 16022

Data Matrix bar code symbology specification.

ISO/IEC 15438

PDF417 bar code symbology specification.

ISO/IEC 24778

Aztec Code bar code symbology specification.

ISO/IEC 16023

MaxiCode bar code symbology specification.

ISO/IEC 15417

Code 128 bar code symbology specification.

ISO/IEC 15420

EAN/UPC bar code symbology specification.

GS1 General Specifications

GS1-128, GS1 DataMatrix, GS1 QR, SSCC, and application identifiers.