Skip to content
Client v5: BLE, BLE Hosting, HTTP, Jobs - Linux, MacOS, & Blazor Support! Full AOT, RX on BLE only & MANY other features! Power up!

Barcodes & QR Codes | Symbologies

The BarcodeFormat enum lists every symbology the renderer supports. The same enum drives the MAUI Format, the Blazor Format, and the headless BarcodeRenderer.

FormatDimensionUse forSample payload
QRCode2DURLs, vCards, Wi-Fi configs, generic texthttps://shinylib.net
Aztec2DTransport tickets, boarding passesM1JOHNDOE/EXAMPLE...
DataMatrix2DTiny labels, electronics, healthcareSKU-12345
Pdf4172D (stacked)Driver’s licenses, shipping labelslarger structured data
Code1281DGeneral-purpose, shipping, IDsABC-12345-XYZ
Code391DLegacy industry / military / automotiveHELLO 42 (uppercase + a few symbols)
Code931DCompact alternative to Code 39HELLO123
Codabar1DLibraries, blood banks, FedEx airbillsA123456789B
Ean81DRetail (small packages)96385074 (valid GTIN-8)
Ean131DRetail (Europe / global)5901234123457 (valid GTIN-13)
UpcA1DRetail (North America)036000291452
UpcE1DRetail (compact, small packages)04252614
Itf1DCarton labels, ITF-14 / SCC-14even-length numeric string
  • Encoding a URL, text, contact, or Wi-Fi join?QRCode. It’s the most widely scannable 2D code and the only one with a tunable error correction level.
  • A retail product?Ean13 (or UpcA in North America). The payload must be a valid GTIN with a correct check digit.
  • A general-purpose 1D code (shipping, asset tags, IDs)?Code128. It’s compact and handles the full ASCII range.
  • Very small label, lots of data, square footprint?DataMatrix packs a lot into a tiny area.
  • Boarding pass / transit ticket?Aztec (no surrounding quiet-zone required, common in transport).
  • A lot of structured data on a 1D-style label?Pdf417 (stacked, high capacity — used on IDs and licenses).

1D symbologies have strict input rules — fixed lengths, restricted alphabets, and check digits:

  • EAN-13 / EAN-8 / UPC-A / UPC-E — numeric only, fixed length, and a valid check digit. (ZXing can compute the final check digit for you depending on input length, but supplying a full, correct GTIN is the safe path.)
  • ITF — numeric only and an even number of digits (it encodes digits in pairs).
  • Code 39 — uppercase letters, digits, and a small symbol set (- . $ / + % and space).
  • Code 93 / Code 128 / Codabar — each has its own character set; Code 128 covers the widest range (full ASCII).

QR codes embed redundant data so they can still be read when partially damaged or obscured. The QRErrorCorrection level controls how much redundancy is added — higher levels survive more damage but leave less room for your actual data at a given module count.

LevelApprox. recoveryUse when
Low~7%You need maximum data capacity in the smallest code, and the code lives on-screen / undamaged
Medium (default)~15%General use — a sensible default for most apps
Quartile~25%Printed codes that may get light wear or partial coverage
High~30%Print/stickers that may be scuffed, curved, or partly covered (e.g. with a logo)

Set it via:

  • MAUIQRCodeView.ErrorCorrection
  • BlazorQRCodeView.QRErrorCorrection (or BarcodeView.QRErrorCorrection when Format = QRCode)
  • HeadlessBarcodeRenderOptions.QRErrorCorrection

The setting is ignored for every non-QR format.