Barcodes
A universal bar/QR code generation library for Rust, supporting many symbologies.
Zero external dependencies, no_std compatible (requires alloc).
Features
- Zero external dependencies (default)
no_stdcompatible (requiresalloc)- SVG output built-in (
to_svg_string()) - Optional image output (PNG, GIF, WebP) via
imagefeature - Supports 16+ barcode symbologies: linear, 2D, and postal
Installation
Add barcodes to your Cargo.toml.
Default (no_std, SVG only):
[]
= "0.1"
With image output (PNG/GIF/WebP):
[]
= { = "0.1", = ["image"] }
Supported symbologies
| Symbology | Module | Status |
|---|---|---|
| QR Code (Model 2) | barcodes::qrcode |
✅ |
| EAN-13 | barcodes::ean_upc::ean13 |
✅ |
| EAN-8 | barcodes::ean_upc::ean8 |
✅ |
| UPC-A | barcodes::ean_upc::upca |
✅ |
| UPC-E | barcodes::ean_upc::upce |
✅ |
| Code 128 (A/B/C) | barcodes::linear::code128 |
✅ |
| Code 39 | barcodes::linear::code39 |
✅ |
| Code 93 | barcodes::linear::code93 |
✅ |
| Codabar (NW-7) | barcodes::linear::codabar |
✅ |
| ITF (Interleaved 2 of 5) | barcodes::linear::itf |
✅ |
| GS1-128 | barcodes::gs1::gs1_128 |
✅ |
| GS1 DataBar Omnidirectional | barcodes::gs1::databar |
✅ |
| PDF417 | barcodes::twod::pdf417 |
✅ |
| Data Matrix (ECC 200) | barcodes::twod::datamatrix |
✅ |
| Aztec Code | barcodes::twod::aztec |
✅ |
| USPS Intelligent Mail (IMb) | barcodes::postal::imb |
✅ |
| Royal Mail RM4SCC | barcodes::postal::rm4scc |
✅ |
Usage
QR Code
use ;
let mut outbuffer = vec!;
let mut tempbuffer = vec!;
let qr = encode_text.unwrap;
println!;
EAN-13
use BarcodeEncoder;
use Ean13;
// 13 digits (check digit validated) or 12 digits (check digit auto-computed)
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
UPC-A
use BarcodeEncoder;
use UpcA;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Code 128
use BarcodeEncoder;
use Code128;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Code 39
use BarcodeEncoder;
use Code39;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Code 93
use BarcodeEncoder;
use Code93;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Codabar (NW-7)
use BarcodeEncoder;
use Codabar;
// Digits and -$:/.+ ; A/B start/stop guards are added automatically
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
ITF (Interleaved 2 of 5)
use BarcodeEncoder;
use Itf;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
GS1-128
use BarcodeEncoder;
use Gs1_128;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
EAN-8
use BarcodeEncoder;
use Ean8;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
UPC-E
use BarcodeEncoder;
use UpcE;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
GS1 DataBar Omnidirectional
use BarcodeEncoder;
use GS1DataBar;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
PDF417
use BarcodeEncoder;
use Pdf417;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Data Matrix
use BarcodeEncoder;
use DataMatrix;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Aztec Code
use BarcodeEncoder;
use Aztec;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
USPS Intelligent Mail Barcode (IMb)
use BarcodeEncoder;
use Imb;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Royal Mail RM4SCC
use BarcodeEncoder;
use Rm4scc;
let output = encode.unwrap;
let svg = output.to_svg_string;
println!;
Image Output
Enable the image feature to generate raster images (PNG, GIF, WebP).
// Requires `image` feature enabled
use BarcodeEncoder;
use Ean13;
let output = encode.unwrap;
let img = output.to_image; // module_size = 2px
img.save.unwrap;
For QR Code:
use ;
let mut outbuffer = vec!;
let mut tempbuffer = vec!;
let qr = encode_text.unwrap;
let img = qr.to_image; // module_size = 4px
img.save.unwrap;
no_std Support
This library is no_std compatible by default and only requires the alloc crate.
Enable the std feature if you need standard library support.
Image output (to_image()) requires the image feature, which implies std.
Modules Overview
| Module | Description |
|---|---|
barcodes::common |
Shared traits, types, errors, and output helpers |
barcodes::qrcode |
QR Code Model 2 encoder |
barcodes::ean_upc |
EAN-13, EAN-8, UPC-A, UPC-E |
barcodes::linear |
Code 128, Code 39, Code 93, Codabar, ITF |
barcodes::gs1 |
GS1-128, GS1 DataBar |
barcodes::twod |
PDF417, Data Matrix, Aztec Code |
barcodes::postal |
USPS IMb, Royal Mail RM4SCC |
Contributing
Contributions are welcome! To get started:
- Fork the repo
- Create a feature branch
- Run
cargo testandcargo clippy - Submit a pull request
License
MIT — see LICENSE for details.