Redirect chain & mutability
Trace every hop. Detect Bitly + Linktree chains. Identify indirection-service operators. Surface the parties who can change the destination after print.
A QR code is a stranger handing you an envelope. Open it without checking and you can land on a credential-phishing page, an evil-twin WiFi, a wallet-drainer transaction, or an Android intent that sideloads malware. We trace the chain, screen the destination, and tell you who can change it after the QR was printed — the question that decides whether a parking-meter sticker, a restaurant menu, or a corporate MFA flyer is actually safe.
Scan a QR code using your camera, upload an image, paste an image, or paste decoded text.
Camera and image decoding happen in your browser. Only the decoded text is sent to our analyzer.
Your browser decodes the QR locally (jsQR). The image never leaves your device. We only see the textual payload.
The payload is classified by URI scheme, structured-format prefix, or content heuristic into one of 13 categories: HTTP URL, WiFi, vCard, telephony, mail, Android intent, cryptocurrency, content-addressed, inline data, calendar, geo, hard-blocked scheme, or plain text. Each category goes to its dedicated analyzer.
For HTTP URLs, we trace the redirect chain through indirection services (Bitly, Linktree, QR Tiger, & ~80 others), record per-hop intermediaries, classify mutability (static / dynamic-single / dynamic-chained / ad-interstitial / cyclic), and attribute control to each indirection-service operator. In parallel we screen the destination against Google Safe Browsing and URLhaus.
We compose a single verdict shape that's invariant across payload types: threat_class, mutability, chain, attribution, sub_payloads, plain-language disclosure. Sub-payloads embedded in a parent (URLs in a vCard NOTE field, SSIDs containing a link, etc.) are recursively dispatched.
URL-class threat scanners cover only one of 13 payload categories that a QR code can carry. Each of the other 12 has its own type-specific attack surface.
Trace every hop. Detect Bitly + Linktree chains. Identify indirection-service operators. Surface the parties who can change the destination after print.
SSID normalized against a high-mimicry-target list (Starbucks WiFi, airport free WiFi, hotel chains). Confusables-decoded. Open / weak-WEP / hidden flags surfaced.
Detect CRLF injection and BEGIN-block smuggling. Homograph FN / ORG. URL, TEL, EMAIL sub-fields recursively analyzed. NOTE-field URL extraction.
Match against US 900/976, UK premium-rate prefixes, IRSF country codes (Inmarsat, Globalstar, satellite ranges). SMS body URL extraction.
Display name vs. brand list with confusables. Mail-domain reputation. Subject + body URL extraction and credential-phrase detection.
Target package matched against allowlist + blocklist (MMRat, banking-trojan packages). Typosquat-package detection. Browser fallback URL recursively analyzed.
Per-chain address format + checksum validation. EVM function-selector detection (approve, setApprovalForAll, permit). Chainabuse reputation.
Resolve IPFS CIDs through public gateway with bounded budget. Flag IPNS as mutable (owner can change). Magnet infohash + display-name analysis.
VEVENT sub-field URL extraction (LOCATION, DESCRIPTION, URL). ATTENDEE / ORGANIZER dispatched to mail analyzer. Far-future-date flag for meeting-spam patterns.
MIME-allowlist enforcement (image/* + text/plain only). Base64 decode + magic-byte check for MZ, ELF, shebang. Hard-block on match.
javascript:, file:, ftp:, gopher: — no network egress, immediate block with a "do not proceed" UI affordance.
Detect Ignore previous instructions-class patterns. Match leaked Stripe / AWS / GitHub / JWT / PEM secrets without echoing them. Mixed-script density flag.
"https://bit.ly/3xyz → walmart.com — clean ✓"
True. But the QR sticker on a parking meter routes through Bitly first. The account that owns bit.ly/3xyz can change the destination to a phishing page in 30 seconds. Every subsequent scan from that printed sticker now goes to phishing.
"Dynamic-single via Bitly. The Bitly account holder can change where this QR ends up after print. Currently routes to walmart.com (clean)."
Two independent verdict fields. Threat is about now; mutability is about who can change later. Both matter when the QR is on a printed surface that you can't un-print.
Browser decoding is unmetered. Server-side classification (chain walk + reputation + 13-analyzer suite) is metered.
$0
No signup, just scan.
$0
Email signup. More room to scan.
$29/mo
For builders, brands, and security-aware teams.
$149/mo
For wallets, MSSPs, and high-volume products.
Custom
Stop credential-phishing QRs at the corporate edge. Per-seat licensing for the workforce.
Enterprise pricing reflects the real cost of quishing: a single employee clearing a malicious QR on the corporate network is the same attack surface as a phishing email that bypassed Microsoft Defender. Paid tiers map to disclosures in our pending QR-payload threat classification patents.
Same engine, native on macOS, Windows, Linux, iOS, and Android. Camera scan stays on-device; classification goes to the same endpoint. abundera.app →
Existing tools classify whether a URL is currently malicious. We additionally classify whether the destination is controllable by a third party after the QR was printed — a property we call mutability. A clean dynamic QR routed through a shortener is still high-risk for a parking-meter sticker or wedding invitation: the shortener account holder can change the destination at any time. We surface this control-posture as a first-class verdict field alongside the threat-content verdict.
No. The decoded payload travels to our server over HTTPS so we can walk the chain and query reputation databases — that's a functional necessity, not a choice — but it is never persisted. Verdicts are cached by a SHA-256 hash of a per-payload-type discriminator concatenated with a server-held secret salt. The original payload cannot be reconstructed from any cache entry.
qr.abundera.ai is a generator that promises everything-client-side: nothing leaves your device. This safety checker transmits the decoded payload to the server by necessity. We separate the two surfaces so the client-only promise stays clean on the generator domain, and the inverted-privacy-model surface stays clearly labeled here.
Pro tier. Submit a QR for tracking, and we re-walk the chain on a periodic cadence. Email when the redirect targets, terminal destination, or the set of indirection-service operators changes. This catches the most common quishing-in-the-wild pattern: print a clean QR, switch the destination to phishing months later, harvest scans from the printed asset.
Yes, on the Pro tier. The API is RESTful, returns a structured JSON verdict with payload-type, threat-class, mutability, redirect chain, per-hop control attribution, and sub-payload findings. Designed for embedding in wallet apps, mobile security suites, enterprise URL filtering, and corporate Slack / Teams link-preview enrichers.
Not at this time — the codebase backs pending patents on multi-modal QR payload threat classification (QR-17 + QR-18). Once the non-provisionals file, we'll publish reference implementations of the disclosed algorithms.