Encrypted, never public
Any QR looks public.Only yours is private.
QR Agent encodes an opaque URL behind a private access gate. The payload is sealed with AES-256-GCM under a key belonging to your workspace alone, and never written to disk in plaintext — a scanner sees a standard QR; only the right person decrypts it.
AES-256-GCM · per-tenant keys · never stored in plaintext
/q/KeGsQbydAZMT — resolves nothing until the gate is passed
// 01 · FEATURES
Built for data that must stay private
Every layer is designed so that a breach of storage or network traffic reveals nothing useful.
// 02 · HOW IT WORKS
From plaintext to gated QR in four steps
Create
Paste the URL, text, or file you want to protect. Give it a label and choose an expiry.
Encrypt
The payload is sealed with AES-256-GCM under a key belonging to your workspace alone, and bound to this one code so the ciphertext cannot be moved to another.
Gate
Pick an access method: a time-limited magic link, a PIN, or an email OTP. The QR reveals nothing without it.
Share
Download the QR, embed it in a document, or link to it directly. Viewers pass the gate; everyone else sees nothing.
// 03 · SECURITY
Encryption is the product, not an add-on
Every design decision starts with the question: what does an attacker learn if this layer fails? The answer is always: nothing useful.
Three key layers, zero single points of failure
A KMS master key wraps a per-tenant data encryption key (DEK), which in turn wraps each individual QR payload. Compromising one layer does not expose any other.
Decrypted keys never touch disk or cache
The plaintext DEK lives in process memory only. It is never written to Redis, the database, or any persistent store. A database dump or cache leak contains only ciphertext.
PostgreSQL RLS as defense-in-depth
Every tenant-scoped row carries a tenant_id enforced at the application layer and backed by PostgreSQL row-level security policies — a second wall that blocks cross-tenant reads even in the presence of an application bug.
Delete the key, erase the data
To permanently destroy a payload, we delete its encryption key. The ciphertext becomes unrecoverable — no key, no data — even if the encrypted bytes persist on disk.
Read the full technical breakdown — key hierarchy, AAD binding, and audit-log design.
Security details// 04 · USE CASES
Any payload. Any gate. Total control.
If information is sensitive and needs to move via QR, it belongs behind a gate.
// 05 · PRICING
Start free. Scale as you grow.
Every plan encrypts your payloads at rest with a key for your workspace alone. Upgrade for more codes, seats, and advanced controls.
Need unlimited codes, scans and seats? Enterprise is priced on request.
See full pricing// 06 · EVIDENCE
No logos. Numbers you can check instead.
We are not going to show you a wall of companies we do not have. Every figure below is read out of the code that implements it, and each one is visible in the published contract or on the changelog.
A URL, a note, a file, a contact card, Wi-Fi, an event, a hosted page, the tap-to-act types and GS1 Digital Link — every one encrypted the same way.
Sign-in, magic link, PIN, email OTP, or more than one at once. A code reveals nothing until one of them passes.
Every one in a published OpenAPI document, with two generated clients kept in step by a build gate.
A closed set, served as JSON. A caller branches on the code, and a new one cannot ship without entering the catalogue.
Reading a payload is its own permission, so a credential that lists your codes does not necessarily open them.
Across 23 release days, latest 11 October 2026. The changelog is generated from the feature ledger in the repository, so it cannot claim something the product does not do.
// 07 · FAQ
Common questions
Start securing your QR codes
Try it free with no card, then go live from $4 a month. Encrypted payloads from your first QR.
Envelope-encrypted. Per-tenant keys. Never public.