Add WIA Code to your existing scanner

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.

How it fits

Camera frame decoded by the existing QR library and wiascan-core.js in parallel 📷 camera frame Your existing QR library unmodified + wiascan-core.js added — detectAuto() Your result handler same callback, either payload

The existing QR path is untouched. WIA Code decoding runs alongside it, on the same frame.

Minimal integration

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.jsevaluation kit ↗.

Which of your scanners can do this

This is a software change, not a hardware one — but only for scanners that capture an image in the first place.

scanner typesoftware-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.

Scanners you haven't integrated yet already work — today

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

Open pledge

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

See also

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.