# Barcode formats and scanning effort

Supported Tapirscan barcode formats, format presets, variant limitations and four effort modes.

Canonical: https://tapirscan.f-kleinicke.de/formats/

## Supported formats and variants

Tapirscan supports linear and 2D barcode formats. EAN13, UPCA, EAN8 and UPCE are enabled by default; select additional formats as needed. Inclusion in a preset does not guarantee every barcode of that format will decode.

- [Supported variants and limitations](https://github.com/kleinicke/tapirscan/blob/main/docs/FORMATS.md)

## Format presets

Preset names are case-sensitive. Retail is the default. Enable the formats you need: broader selections may require more work.

| Preset | Formats |
|---|---|
| retail | EAN13, UPCA, EAN8, UPCE |
| common1D | EAN13, UPCA, EAN8, UPCE, Code128, Code39, ITF |
| common | EAN13, UPCA, EAN8, UPCE, Code128, Code39, ITF, QRCode, DataMatrix |
| 1D | EAN13, UPCA, EAN8, UPCE, Code128, Code39, ITF, Codabar, Code93, DataBar, DataBarExpanded |
| 2D | QRCode, DataMatrix, PDF417, Aztec, MaxiCode |
| all | EAN13, UPCA, EAN8, UPCE, Code128, Code39, ITF, Codabar, Code93, QRCode, DataMatrix, PDF417, Aztec, DataBar, DataBarExpanded, MaxiCode |

## Effort modes

Choose low, medium, high or very-high. Medium is the default. Higher effort permits more search; it does not guarantee a read or lower latency on any particular image. `low` is the fastest mode, intended for live camera frames; it can miss difficult codes that higher modes read. These are scanner effort modes, not downloadable neural models.

## Results and limitations

Multiple symbols can be returned. A missing read is not proof that an image has no barcode. Empty result arrays mean no barcode was decoded.

- [JavaScript guide](https://tapirscan.f-kleinicke.de/docs/javascript/)
- [Python guide](https://tapirscan.f-kleinicke.de/docs/python/)
