Skip to content
Shiny Controls v1.0 - The Ultra Control Suite for .NET MAUI & BlazorO...M...G!

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.

Format Dimension Use for Sample payload
QRCode 2D URLs, vCards, Wi-Fi configs, generic text https://shinylib.net
Aztec 2D Transport tickets, boarding passes M1JOHNDOE/EXAMPLE...
DataMatrix 2D Tiny labels, electronics, healthcare SKU-12345
Pdf417 2D (stacked) Driver’s licenses, shipping labels larger structured data
Code128 1D General-purpose, shipping, IDs ABC-12345-XYZ
Code39 1D Legacy industry / military / automotive HELLO 42 (uppercase + a few symbols)
Code93 1D Compact alternative to Code 39 HELLO123
Codabar 1D Libraries, blood banks, FedEx airbills A123456789B
Ean8 1D Retail (small packages) 96385074 (valid GTIN-8)
Ean13 1D Retail (Europe / global) 5901234123457 (valid GTIN-13)
UpcA 1D Retail (North America) 036000291452
UpcE 1D Retail (compact, small packages) 04252614
Itf 1D Carton labels, ITF-14 / SCC-14 even-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.

Level Approx. recovery Use 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.