TELEMETRY

Counts, never content.

CKey SDKs can send anonymous, aggregate scan counts to openckey.org so the project can see whether scanning works in the field. It is easy to turn off, and it never includes what was scanned.

Docs: Overview · Payloads · SDKs · Telemetry · API

The three modes

MODECOUNTS ON THE DEVICESENDS TO OPENCKEY.ORG
0 offno — and existing counters are purgedno
1 on (default)yesaggregate batches, at most one per hour
2 local onlyyesnever; the app can read the counts itself

Only the scanner records anything. Encoding, rendering, and one-off image decodes never do — so this site’s renderer records nothing, and it loads the SDK with telemetry off anyway.

What is collected

What is never collected

Opt out in one line

SDKLINE
SwiftCKey.telemetry = .off
Webckey.telemetry = 0 or loadCKey({ telemetry: 0 })
Android (Kotlin)CKey.telemetry = 0
.NETCKey.Telemetry = 0;
C / C++ckey_telemetry_set_mode(0); or build with -DCKEY_BUILD_TELEMETRY=OFF

Any value other than 0, 1, or 2 is an error, and the mode is never silently reset to 1. Apps that leave telemetry on may need to mention it in their own privacy disclosures.

How openckey.org handles it

The counts are unauthenticated and can be spoofed, replayed, or inflated, and without identifiers they cannot be deduplicated. Treat them as a coarse signal. The public summary at /api/telemetry/v1/summary carries the label “Reported by SDKs with telemetry on; not total usage, unique users, or worldwide scans.”

Live summary

Loading the last 30 days…

The normative rules are in docs/adoption-and-telemetry.md.