17 formats · GS1 decoding

Scan barcodes.
Get structured records.

An SDK that scans barcodes and returns structured data, not raw strings you have to parse. It reads 17 formats, decodes GS1, and runs fully on-device.

Decoded elements

  • Format
    DataBar Expanded
  • (01)GTIN
    02012345678903
  • (3103)Net weight
    0.750 kg
  • (3922)Price
    3.49 €
  • Check digits
    Valid

Sveramā prece

Bio burkāni / Carrots

Svars0.750 kg
Cena4.65 €/kg
KOPĀ3.49 €

0102012345678903310300075039220349

scanning · on-device

Fully offline · no per-scan fees

17
barcode formats
GS1
decoded into fields
On-device
data processing
Native
for maximum speed

What it reads

Every code from the shelf to the boarding gate.

All seventeen barcode formats, grouped by where you meet them. Turn on the set you expect. Anything outside it is ignored, so the scanner stays fast.

Retail shelf

Priced products at any till, in any store.

  • EAN-13
  • EAN-8
  • UPC-E

UPC-A included. It arrives as EAN-13 with a leading zero.

Fresh & weighed goods

Scale labels, coupons and short-dated stock.

  • GS1 DataBar
  • DataBar Expanded
  • DataBar Limited

Screens & packs

Links, menus and payments, printed or on a screen.

  • QR
  • Micro QR

Warehouse & industry

Cartons, pallets, asset tags and lab tubes.

  • Code 128
  • ITF-14
  • Code 39
  • Code 93
  • Codabar

Pharma & parts

The small square that fits where nothing else does.

  • DataMatrix

IDs & travel

Driver’s licenses, boarding passes and rail tickets.

  • PDF417
  • Micro PDF417
  • Aztec

GS1 decoding

GS1 barcodes decoded into typed fields.

A GS1 barcode packs several facts into one string of digits. Barcode SDK splits it into named fields, with no parsing code on your side.

On the label

0102012345678903310300075039220349

The label a store scale prints for weighed goods: item, weight and price in one code.

GS1Document

In your app

  • Product number02012345678903
  • Net weight0.750 kg
  • Price3.49 €

Expiry, batch, serial and the rest come out the same way.

Check digits validated

Every field is verified, and isValid tells you the whole label passed.

Human-readable form

One call prints the label in readable form for logs and support tickets.

Works without a camera

Parse strings you already hold: manual entry, imports, legacy scanners.

Why Barcode SDK

Built for retail, logistics and healthcare apps.

Scans what you aim at

On a shelf full of barcodes, only the code in the window is read. No wrong picks.

Structured GS1 output

GS1 payloads arrive as GTIN, batch, expiry and weight. No parsing on your side.

100% on-device

Camera frames never leave the phone. No upload, no scanning backend to secure.

Your interface, your branding

Size, brackets, radius and dim are all yours to set. It looks like your app.

One flat price

A fixed annual license per app. Scan a million times, the invoice stays the same.

Integrates in an afternoon

A configuration struct, a view controller and one delegate method. That is all.

How it works

From camera frame to structured record in three steps.

  1. Step 1

    Present the scanner

    A child view controller with your configuration. The camera starts and stops with view appearance.

  2. Step 2

    Read inside the window

    Frames are analyzed on the device, restricted to the visible scan window. Nothing is uploaded.

  3. Step 3

    Take the record

    Your delegate receives the format, the payload and, for GS1 carriers, a decoded document.

What a scan gives you

scanned_barcode.jsonjson
{
  "format":    "dataMatrix",
  "payload":   "01040123456789051726063010AB123",
  "gs1": {
    "gtin":       "04012345678905",
    "expiry":     "2026-06-30",
    "batch":      "AB123",
    "is_valid":   true
  }
}

Privacy & control

Everything happens on the phone.

No uploads, no scanning backend, and no vendor UI you have to live with.

Read on the phone

Frames are read inside your app. No Scantic server, nothing to host or secure.

The scan window is yours

Size, position, brackets and dim are all yours. Scanning can stay inside the window.

Camera controls exposed

Torch, zoom and pinch-to-zoom built in. Zoom 1 means the same on every device.

Camera frame

stays on the phone

Barcode SDK reads it

inside your app · in the window

A typed record

to your delegate

For developers

Integrate barcode scanning in an afternoon.

  • Small and native

    A thin native SDK on the system camera and vision stack. Barely a dent in app size.

  • No third-party components

    Nothing else ships with it: no bundled engines, no packages to audit or keep updated.

  • Fast and reliable

    Starts instantly and reads in real time, frame after frame. Nothing to warm up.

iOS 15+AVFoundation · VisionAndroid & Flutter on request
ScanViewController.swiftswift
import BarcodeKit

var configuration = BarcodeReaderConfiguration()
configuration.formats = BarcodeFormat.retail    // or .all / .oneDimensional
configuration.isGS1DecodingEnabled = true

// The scan window is yours: size, corner radius, brackets, dim.
configuration.viewfinder.widthRatio = 0.72
configuration.viewfinder.aspectRatio = 1.5
configuration.viewfinder.restrictsScanningArea = true

let scanner = BarcodeReaderViewController(withConfiguration: configuration)
scanner.delegate = self

addChild(scanner)
view.addSubview(scanner.view)
scanner.didMove(toParent: self)

Pricing

One fixed annual price. Unlimited scans.

One fixed annual price

Per app. Budget it once. No metering, no surprise invoices.

Unlimited scans

Unlimited scans, users and devices, on every build you ship.

Nothing to activate

No keys, no expiry dates, nothing that blocks a release mid-quarter.

One license. Everything included.

  • Unlimited scans, users & devices
  • All 17 formats and GS1 decoding
  • Updates & support
  • No third-party dependencies

We reply fast.

FAQ

Frequently asked questions

How do I add barcode scanning to my iOS app?
Add Barcode SDK to your project, create a BarcodeReaderConfiguration with the formats you care about, and present the BarcodeReaderViewController as a child view controller. Results arrive on a delegate as ScannedBarcode values with the format, the raw payload and, for GS1 carriers, a decoded document. A typical integration takes an afternoon.
Which barcode formats does it read?
Seventeen symbologies. One-dimensional: EAN-13, EAN-8, UPC-E, Code 39, Code 93, Code 128, ITF and ITF-14, Codabar, and the GS1 DataBar family (standard, expanded, limited). Two-dimensional: QR, Micro QR, DataMatrix, PDF417, Micro PDF417 and Aztec. UPC-A codes are reported as EAN-13 with a leading zero.
Does it decode GS1 barcodes into fields?
Yes. Payloads from GS1 carriers are parsed into application-identifier elements with typed accessors: GTIN, SSCC, batch number, serial number, production, best-before and expiration dates, net weight and item count. Check digits are validated, and the human-readable element string is available too. You can also parse a GS1 string on its own, without the camera.
Are there per-scan fees?
No. Scanning runs entirely on the device, so there is no metering, no per-scan cost and no server bill that grows with volume.
Can I customize the scan window?
The viewfinder is configuration, not a fixed vendor UI. Width ratio, aspect ratio, vertical offset, corner radius, bracket width and color, and the dim color are all yours to set, and recognition can be restricted to the visible scan window so a code outside the frame is ignored.
Does barcode scanning work offline?
Yes. Recognition runs on the device using the system camera and vision frameworks. No network connection is required, and no image or payload is sent anywhere.
How does it handle torch, zoom and camera permission?
Torch and zoom are properties on the scanner. Pinch-to-zoom is on by default, and the wide-angle lens is normalized on multi-camera devices so zoom factor 1 means the same thing everywhere. Camera permission is handled through a CameraAuthorization helper, and a denied or unavailable camera is reported to your delegate so you can present your own alert.

See it read your label

Watch Barcode SDK decode one of your own labels.

A 20-minute live demo on your own labels, covering the scan window, GS1 decoding and how the data is handled.

Runs offline · no per-scan fees

Book a demo

The demo request form loads here.

Tally form pending. Add the URL in consts.ts → FORMS.