ML Kit is Google’s on-device machine-learning kit, and its barcode module reads 13 formats. TRAKWIND Scan is the barcode engine we wrote ourselves, and it reads those same 13 plus 13 more — the DataBar sticker on a tray of mince, the bullseye on a UPS label, the Micro QR on a circuit board.
A comparison of what the two engines read and how each is built. Where we claim a measured difference, the measurement is published with the handsets, versions and conditions it was taken under — and where we have not measured something, we do not assert it.
What each one is
Google ML Kit
A general-purpose on-device machine-learning kit from Google, in which barcode scanning is one module among many rather than the point of the library. It is free, and it runs on the device rather than in a datacentre.
It ships two ways. The bundled variant compiles the model into your app and adds a few megabytes to it. The unbundled variant keeps the app small by fetching the model through Google Play Services on first use, which means it needs Play Services present and a network connection the first time it runs.
TRAKWIND Scan
A barcode and QR decoding engine and nothing else. No borrowed decoder and no third-party scanning SDK underneath it — we wrote it and we maintain it, which is the whole reason the format list looks different.
It runs entirely on the phone with no Play Services dependency and no model to download, and the core is portable: the same decoder is what we offer as an SDK for Android, for iOS and, through WebAssembly, for the browser.
The actual difference
Format coverage, one by one
This is where the two engines part company, and it is the only part of the comparison that is not a matter of degree. A decoder either has the format or it does not. ML Kit reads 13; TRAKWIND Scan reads those 13 and 13 more.
The 13 only TRAKWIND Scan reads
ML Kit has no decoder for any of these. Not a setting, not a worse result — the format is not in the library.
MSI Plessey, MicroPDF417, DotCode and the 4-state postal codes are off until you switch them on under Settings → Scanning engine. They are the ones most easily misread from a label that was never meant to carry them, so they are opt-in on purpose.
The 13 both engines read
Switching engines costs you none of these. TRAKWIND Scan reads every format ML Kit reads.
Less visible than the format list and often what decides it, particularly for a fleet of devices that has to work the same way on every handset.
How they are built, and what that costs you
What you are choosing between
ML Kit
TRAKWIND Scan
Barcode formats read
13
26
Runs on the device
Yes — nothing is sent to a server
Yes — nothing is sent to a server
Google Play Services needed
For the unbundled model, yes; the bundled variant avoids it by adding to app size
No, in either case
Works on a device with no network, from first launch
Bundled variant yes; unbundled fetches its model on first use
Yes — there is no model to fetch
GS1 fields broken out of the scan
Returns the raw value; application identifiers are yours to parse
Weight, batch, expiry and the rest split out in the app’s GS1 panel
Getting a new format added
Google’s roadmap, on Google’s schedule
Our own code — tell us which format and where it is printed
Android
Yes
Yes
iOS
Yes
Yes — the same core, packaged for iPhone and iPad
In a web page
No web build
Through WebAssembly, on the visitor’s own device
When something does not scan
Public issue tracker and community forums
Send us the label and talk to the people who wrote the decoder
Price
Free
Free in the keyboard app, on every edition
Everything stated about ML Kit here comes from Google’s published documentation for the barcode-scanning API, not from our own testing.
In the app
What switching actually involves
If you are using the keyboard app, this is not a migration. It is a setting, and it is reversible with the same tap.
1
Update the app
TRAKWIND Scan is in the current version on Google Play. There is no separate download and no licence to buy.
2
Settings → Scanning engine
The engine is a setting. Open Settings → Scanning engine and choose TRAKWIND Scan.
3
Switch on the formats you need
DotCode, MSI Plessey, MicroPDF417 and the 4-state postal codes are off until you enable them, on the same screen.
4
For a fleet, set it centrally
The engine and the format list can be set and locked through MDM managed configuration using the keys scanEngine and trakwindReadFormats, or pushed from our cloud configuration for fleets without MDM.
Nothing downstream changes
TRAKWIND Scan replaces the decoder and only the decoder. Every scan still flows into the features you already use, unchanged:
Keyboard input — the value is typed into whatever field you are in
Scan history
Lookup
The GS1 parser and its data panel
The short version
Which one you want
ML Kit is enough if
Every code you scan is an EAN, UPC, Code 128, Code 39, QR, Data Matrix, PDF417 or Aztec
Nothing you scan is going badly enough to be worth changing a setting over
You want TRAKWIND Scan if
You have met a label your phone simply will not read — DataBar on chilled food, a carrier’s MaxiCode, a Micro QR on a board
You scan pharmacy, grocery, tobacco or postal items, where the awkward formats live
You need GS1 fields — batch, expiry, weight — split out rather than handed to you as one string
The devices cannot rely on Google Play Services, or have to work from first launch with no network
You need the same decoder in a web page or inside your own app
And if you are not sure, the cost of finding out is one tap in settings, and one tap back again if you were wrong.
Using it in your own software rather than our keyboard
TRAKWIND Scan is also the engine we offer as an SDK — in your own Android app, on iOS, or through WebAssembly inside a web page, where ML Kit has no build at all. Tell us which formats you have to read and where you have to read them.
Thirteen: EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, Code 93, Codabar, ITF, QR Code, Data Matrix, PDF417 and Aztec. It has no decoder for GS1 DataBar, Micro QR, rMQR, MaxiCode, MicroPDF417, DotCode, MSI Plessey or the 4-state postal codes.
Can ML Kit read GS1 DataBar?
No. GS1 DataBar is not among the formats ML Kit decodes, so a phone using it cannot read the DataBar stickers on chilled food, loose produce or pharmacy packs however good the camera is. TRAKWIND Scan reads DataBar Omnidirectional, Truncated, Stacked, Stacked Omnidirectional, Limited and Expanded.
Can ML Kit read DotCode?
No. DotCode — printed at high speed on cigarette packs, pharma cartons and beverage packaging, and the format behind tobacco track and trace — is not in ML Kit’s format list. TRAKWIND Scan reads it; it is off by default and switched on under Settings → Scanning engine.
Is TRAKWIND Scan faster than ML Kit?
We publish measurements rather than adjectives, and only for tests we have actually run, with the handsets, versions and conditions written down beside them. What we will say without qualification is that TRAKWIND Scan reads 13 formats ML Kit has no decoder for, which is a difference in kind rather than in speed.
Does TRAKWIND Scan need Google Play Services?
No. The engine runs entirely on the phone with no model to download and no Play Services dependency, so it works on a device from first launch with no network and on handsets where Play Services is absent or restricted. ML Kit’s unbundled model fetches itself through Play Services on first use; its bundled variant avoids that by adding the model to your app.
Do I lose any formats by choosing TRAKWIND Scan?
No. TRAKWIND Scan reads all 13 of the formats ML Kit reads, and 13 more besides. In the keyboard app the scan still flows into keyboard input, history, lookup and the GS1 parser exactly as before, and changing the engine back is the same single tap in settings.
Is TRAKWIND Scan free, like ML Kit?
In the keyboard app, yes — no licence, no extra purchase, no separate download, on every edition including Free. Using the engine as an SDK inside your own software is a commercial conversation; tell us what you are building.
Can ML Kit scan barcodes in a web page?
No. ML Kit builds for Android and iOS, and has no web build, so it cannot run inside a browser page. TRAKWIND Scan compiles to WebAssembly as well as to Android and iOS, so the same decoder reads a label in a web page on the visitor’s own device — no app to install and no round trip to a server.
Try it on the label that has been beating you
If the code you cannot scan is one of the thirteen ML Kit has no decoder for, no amount of better lighting or a steadier hand will fix it. Switch the engine and point the phone at it.