For POS, kiosk, and scanner SDK teams already running a QR decoder. This is the shortest path to reading WIA Code alongside it — without touching the QR path you already ship.
The existing QR path is untouched. WIA Code decoding runs alongside it, on the same frame.
Same frame, one extra call. If your QR library finds nothing, hand the same
ImageData to WiaScan.detectAuto().
async function onFrame(imageData) {
// your existing decoder, unchanged:
const qr = existingQrLib.decode(imageData);
if (qr) return handleResult(qr.data);
// same frame, handed to WIA Code:
const wia = WiaScan.detectAuto(imageData, { psf: true, deep: true });
if (wia && wia.decoded) return handleResult(wia.text);
}
This exact detectAuto() call was run against a real conformance
vector (clean_square_url.png, evaluation kit) before this page was published, and decoded it
correctly — this is not untested sample code.
Verify your own build the same way: run the reference engine against all 30
conformance vectors with node verify.js — evaluation kit ↗.
This is a software change, not a hardware one — but only for scanners that capture an image in the first place.
| scanner type | software-upgradable? | why |
|---|---|---|
| Camera-based 2D imager, phone/kiosk/webcam |
Yes | It captures a real image frame — the same input the example above decodes. |
| Laser-based 1D/CCD laser barcode scanner |
No | It never captures an image — it only measures reflected laser intensity along a line. There is no frame to hand to detectAuto(). |
No exaggeration: a laser scanner will not read this with a firmware update. That is a physical limit of the sensor, not a gap on a roadmap.
Every WIA Code carries a small standard QR patch (the booster) that points to
wiacode.com/s.html. Any existing QR reader — including yours, unmodified — can already scan that
patch and reach the WIA web scanner in a browser. Native integration is what removes the extra step.
| booster only (not integrated) | native decode (this page) | |
|---|---|---|
| steps to the payload | 2 — scan the booster, load the page, point the camera at the code again | 1 — your own pipeline decodes it directly |
| network | required — it loads a web page | none — fully offline |
| what you get | nothing directly — the booster only carries a fixed redirect URL | the exact original payload string, in your own app |
| shapes recognized | only the small embedded square patch | all 8 published silhouettes |
| decode latency | your QR read, plus a network round trip | single-frame decode — ≈386ms per frame measured on the reference engine's own debug HUD |
Implementing WIA Code is free for everyone who passes the conformance test — no royalty, no exception carved out for a competing scanner. Read the full pledge and get the evaluation kit ↗
Questions after running the kit? Bulk issuance, partnership, and commercial adoption inquiries go to the same address. wiasoom@smilestory.ai
WIA Code is a product of SmileStory Co., Ltd. The booster QR is a fixed redirect, not a copy of the payload — native integration is what your scanner is missing.