Privacy Policy
KAVRO reads QR codes on your device. Data leaves your device only when you ask for a reputation check. This policy explains both.
Who is responsible
KAVRO is created and owned by Omar Mashharawi, Riyadh, Saudi Arabia. This policy covers the KAVRO apps, the KAVRO reputation service and the KAVRO pages on mashharawi.com. On the Apple App Store, the seller shown on the listing is the holder of the Apple Developer account that publishes KAVRO. Omar Mashharawi remains its creator and owner, and is responsible for this policy. If you build your own copy, you run your own service and this policy doesn't apply to it.
The short version
| Happens on your device | Happens online, only if you ask |
|---|---|
| Reading QR codes, security analysis, scan history, settings | Reputation checks of a link you choose. KAVRO shows you exactly what will be sent first |
KAVRO does process some data. When you request a reputation check, an address leaves your device and reaches the services listed below. Without such a request, the app itself sends nothing.
Image processing
QR images are processed on your device, with Apple's Vision framework on iOS and the ZXing.Net library on Windows. Images are never uploaded and never saved by KAVRO.
Camera
The iOS app doesn't use the camera and doesn't ask for camera permission. The Windows version uses your webcam to read QR codes, only after you start it from the scan screen and Windows has your permission. It stops when you leave that screen or a code is found. Video is processed in memory on your device, one frame at a time. It is never saved or uploaded. If you refuse permission, you can still read QR codes from image files.
Photo library
On iOS, KAVRO uses the system photo picker, so it doesn't ask for access to your library. It only receives the image you select.
Scan history
History is off until you turn it on in Settings. When it's on, history is stored locally on your device and isn't sent to us. It contains the decoded text and the scan date, and never the image.
KAVRO removes Wi-Fi passwords and payment identifiers before saving a new entry. Other decoded text is saved as it appears, and can still be sensitive, such as a link containing a private token. Entries saved by an earlier version stay on your device unchanged until you clear them, and sensitive values in them are masked on screen. You can turn history off or clear it in Settings. A device backup may include it.
Network requests
The app makes a network request of its own only when you tap Check Reputation or Look Up Store Listing and confirm. Opening a link, handing off to a payment app or reporting a link happens in another app, only after you confirm, and that app's own policy applies.
You can turn reputation checks off in Settings. Decoding and local analysis keep working offline.
Threat intelligence providers
When you request a check, the KAVRO reputation service passes the address to the threat databases enabled on it. These can include Google Web Risk or Google Safe Browsing, VirusTotal and URLhaus. They receive the request from our service, so they don't see your IP address, but they do see the address you approved and may keep it under their own policies.
| Service | Run by | Receives | Their policy |
|---|---|---|---|
| KAVRO reputation service | Omar Mashharawi, hosted on Cloudflare | The address you approved, and your IP address while the request is handled | This page |
| Google Web Risk or Google Safe Browsing | The address you approved | policies.google.com/privacy | |
| VirusTotal | Google (VirusTotal) | The address you approved, or only its domain | virustotal.com |
| URLhaus | abuse.ch | The address you approved, or only its domain | abuse.ch |
| Apple App Store lookup | Apple | Only the App Store ID of an app you chose to look up | apple.com/privacy |
VirusTotal is only queried. KAVRO doesn't submit URLs for scanning, because submitted URLs can become visible to its community.
To check whether a site offers HTTPS or redirects elsewhere, our service also sends HEAD requests to that site. The site sees a request from our service, not from you.
URL query parameters and sensitive information
A URL can contain private details, such as reset tokens, invitation codes or email addresses, often after a question mark.
- By default only the scheme, domain and port are sent.
- The full URL is sent only if you turn that on for that one check. KAVRO warns you when a link appears to contain private details.
- Usernames, passwords and page fragments in a URL are always removed before sending.
Server logs and IP addresses
Our service code writes no logs of addresses or IP addresses, and platform request logging is turned off.
Your IP address is necessarily visible to Cloudflare, our host, while delivering and protecting the service. For rate limiting we keep a salted one-way hash of it for about two minutes. Cloudflare's own processing is covered by its privacy policy.
Data retention
| Data | Where | How long |
|---|---|---|
| QR images | Memory on your device, during the scan | Discarded after the scan. Never saved |
| Scan history | Your device, only if you turn history on | Until you clear it or delete the app |
| Settings | Your device | Until you delete the app |
| Reputation result | KAVRO service cache, under a one-way hash. The checked address isn't stored, but a result can include host names it redirects to | Up to 30 minutes |
| Hashed IP address for rate limits | KAVRO service | About 2 minutes |
| Emails you send us | Our mailbox | As long as needed to answer you. Ask us to delete them |
Data deletion
Clear history in Settings, or delete the app to remove all local data. Our service holds no record that can be tied to you, so there's nothing for us to look up. For addresses already sent to a provider, contact that provider. To delete emails you sent us, write to [email protected].
Your privacy rights
Depending on where you live, you may have rights to access, correct, delete, restrict or object to the processing of your personal data, to withdraw consent, and to complain to a data protection authority. Contact us to use these rights. We don't sell personal data, and we don't use it for advertising or tracking.
International transfers
Our host and the providers operate in several countries, so a checked address may be processed outside your own.
Children
KAVRO isn't directed at children and doesn't knowingly collect their personal data.
Changes
Changes are published on this page with a new date. We keep a history of this document.
Contact
Omar Mashharawi, [email protected], https://mashharawi.com