Privacy Policy
In short: scanning happens on your device; your history and codes stay on your devices and, if sync is on, in your private iCloud. The free version shows ads from Google, Unity and other advertising companies working through them; they receive technical data such as your IP address and, only if you allow it, your device’s advertising identifier. Statistics and crash reports go to our own servers in the European Union and are never sold. If you use editable links or publish a code as a web page, we store what is needed to run them — and a published page can be seen by anyone who has its link.
1. Who we are
Scan QR is developed by Ivan Kuvshinov, an individual developer based in Portugal (“we”, “us”). Ivan Kuvshinov is the data controller for the processing described in this policy, except where a third party — such as an advertising company, Apple, Google or an app store — acts as an independent controller. For any privacy question write to support@qrcodeapp.org.
This policy covers all versions of the app. A particular version may not use everything described here — for example, it may have no ads, purchases or notifications.
2. Data on your device and in your iCloud
Scanning happens on your device: the camera image and the pictures you choose are analysed there and are never sent to us. Your scan history, the codes you create and your settings are stored on your device. On Apple devices they may also be synced through your private iCloud, which Apple operates and we cannot access; you can turn the sync off in the app’s settings.
The app asks only for the permissions it needs and uses the system screens to choose photos and contacts, so it receives only what you choose. Deleting the app removes its data from the device; data in iCloud can be deleted in your iCloud settings. Keys that the operating system keeps in its secure storage — the keychain on Apple devices, which may sync them through your iCloud Keychain — remain after the app is deleted, until you delete them in the app or remove them from your keychain; other apps cannot read them.
3. Editable links
An editable code points to a short link on our server that forwards to an address you choose. To run it we store the link, its destination and earlier destinations, the title you give it, dates, its status and the public part of a key that proves the link is yours; the private part stays on your devices.
When someone scans the code, our server forwards them to the destination and counts scans by day and country. The country is derived from the IP address, which is not stored with the counts, and we do not identify or track the people who scan. We check destinations against public lists of dangerous websites — without sending the addresses to anyone — and show a warning instead of forwarding to a dangerous one.
4. Sharing a code as a web page
A simple shared link carries the content of the code in the part of the address that stays in the browser and is not sent to our server; anyone who has the link can read it. When you publish a page, the app uploads the image of the code and the details shown on the page to our server; anyone who has the link can open the page and see them. When the page expires or you unpublish it, we delete its content and keep only a short record that the page existed.
5. Notifications
If you allow notifications, the app sends them to tell you about events in the app. To deliver them we store your device’s push token and your notification settings. Notifications are delivered through the push services of Apple and Google or of your browser, so the token and the text of a notification pass through them. You can switch notifications off at any time in the app or in your device settings.
A notification about something another user did — for example a friend — shows their nickname and profile picture; in the same way, notifications about what you do show yours to the people they are for. We prepare such pictures on our servers and delete them together with the profile picture they are made from.
6. Purchases
Paid features — one-time purchases or subscriptions — are sold and billed by Apple (App Store) or Google (Google Play). We never receive your payment details. To give you what you bought, the app or our server checks the purchase with the store, and we store its status, the product, the dates and the store’s transaction identifier. The stores also notify our server when a subscription is renewed, cancelled or refunded. If you have a paid subscription or a paid feature, other users see its mark — for example a badge or a profile decoration — wherever they see your nickname or profile picture.
To work with the stores’ purchase systems, the app may use software from other companies — for example Unity In-App Purchasing by Unity Technologies. When you start, make, renew or restore a purchase, such software may send its provider the record of the purchase, technical information about your device and the app, your IP address and identifiers of your device (on Apple devices — the identifier for vendor). We do not give it your name, email address or advertising identifier. The provider processes this data on our behalf and may also use transaction data for its own purposes — for example reporting, legal compliance and fraud prevention — as an independent controller, under its own privacy policy (Unity). When you delete your account or ask us to delete your data, we ask the provider to delete the data about your purchases; until then we may keep the identifiers needed for this request.
7. Advertising
The free version of the app shows ads. If you have paid to remove them, you see none.
- Who provides the ads. Ads are provided through the advertising platforms of Google and Unity and by other advertising companies working through them — advertising networks, exchanges and bidders and the advertisers they represent. The current lists are published by Google (mediation partners, ad technology providers) and Unity (advertising networks).
- What they receive. Depending on your choices: your device’s advertising identifier (on Apple devices — only if you allow tracking) and other identifiers of your device or installation; your IP address and the approximate location derived from it; technical information about your device and the app; the ads you are shown and how you interact with them; and your consent choices. In a browser they may also use cookies and similar technologies. With your consent, they may combine this with information collected in other apps and on websites.
- What they use it for. To select, show and measure ads, to prevent fraud, to report to advertisers and improve their products and — with your consent — to personalise ads. These companies are independent controllers of the data they receive and process it under their own privacy policies.
- Your choices. Where the law requires it, the app asks for your choices before personalised ads are shown: through the tracking permission request on Apple devices and through a consent form that lists the advertising companies and their purposes. Where the law allows, some of these companies rely on their legitimate interests; you can object in the same form. If you do not consent, you still see ads, but they are not personalised. The app works the same whatever you answer, and you can change your choices in the app’s settings or in your device settings.
- Ad reports. So that you can report an ad, the app remembers the identifiers of the last ads shown to you — up to eight and for no longer than 30 days — and sends them to us only when you report an ad yourself. If you report an ad, we may pass the advertising company that showed it (for example, Google) the identifier of the ad and the reason, so that the ad is reviewed and blocked; we do not pass it any other data from your report.
- United States. Under the laws of some US states, making data available to advertising companies for personalised advertising may count as “selling” or “sharing” personal data. You can opt out by declining tracking, by deleting or resetting your device’s advertising identifier and, where available, in the app’s settings.
Privacy policies: Google (and how Google uses data from apps that use its services); Unity. Each of the other advertising companies has its own privacy policy.
8. Usage statistics, crash reports and settings from our servers
To understand how the app is used and to fix problems, the app sends to our own servers:
- Usage statistics — events that describe what happens in the app, for example that a feature was used. They never contain what you scan or create. In the United States, statistics are on unless you turn them off in the app’s settings; elsewhere, only if you allow them. While statistics are on, each event carries a random identifier of your installation or account and technical information such as the app version, the type and model of the device, the operating system and the language. While they are off, in the European Economic Area, the United Kingdom and Switzerland — and wherever the app cannot tell the region — the app sends no events at all; elsewhere it sends only counters without an identifier, which cannot be linked to one device for longer than a day. The app treats you as being in the United States only when both the region of your device and its time zone are there. Our server derives an approximate location from the IP address of the request and does not store the IP address with the statistics. Statistics are not used for advertising, not shared with advertisers and not sold.
- Crash reports — technical details of an error, information about the device and the app, the app’s recent actions before the error and the IP address the report was sent from; while statistics are on, also the identifier of your installation. We use them only to find and fix errors and to protect our servers from abuse. You can switch crash reports off in the app’s settings.
- Requests for settings — the app asks our server which features and settings apply to it. The request includes technical information and an identifier: that of your account if you have one, including a guest account, that of your installation while statistics are on, and otherwise a one-time identifier made for that request. With a lasting identifier you consistently see the same variant of a feature, and we can turn a feature on or off for a particular user — for example to test it or to fix a problem.
You can change your choice about statistics at any time in the app’s settings.
Separately, we keep anonymous summaries that are not linked to any account, device or installation — for example the wrong answers entered in a game and how many times each was entered — to improve the content of the app. They cannot be used to tell who entered them.
9. Checking that the app is genuine
To protect our servers, results and leaderboards from forged requests, the app asks your device to confirm that a request comes from the genuine app: on Apple devices through Apple App Attest, on Android through the Google Play Integrity API. For this, Apple or Google receive information about the app and the device — for example the app’s identifier, version and signing certificate and the device’s attestation data — and process it under their own terms; we receive only the outcome of the check. On Apple devices we keep the public key the app created for this check. We keep the outcome with the request it confirms and use it only to protect the app and our servers from forgery and abuse — never to track you or for advertising. A request that does not pass the check is not accepted; for example, such a result is not counted in the leaderboards.
10. Earlier versions of the app
Devices that cannot run the current version keep version 1.x, which works differently from what is described in section 8: instead of our own servers it uses Google Firebase — statistics, crash reports and settings operated by Google, which may receive usage and diagnostic data, identifiers of the device and the installation and your IP address; see Google’s privacy information for Firebase. Its free version shows ads as described in section 7.
11. This website, support and email
The website shows no advertising. Like any web server, our servers process the IP address, the time and the requested address of every request — from the website, from the app and from links to our services — and keep technical access logs for security and troubleshooting. Requests may pass through the network of Cloudflare (section 12), which may set cookies strictly necessary to protect the website. If you choose a language on the website or open a link to a particular language version, the website remembers the language in a cookie named “lang” for one year; the cookie holds only the language code and is used only to show the website in that language.
Website statistics. To learn how the website is used and to improve it, we count visits — on our own statistics server in the European Union and with Cloudflare. Statistics record the pages viewed, links followed and forms sent (not their content), the website you came from, technical information about your browser and device and an approximate location derived from your IP address. They use no cookies, are not used for advertising and are not shared with anyone else.
If you write to us — by email or through the form on this website — we receive what you send: your name, email address and message and any details you add, such as your device and the app version. We use the IP address a form message is sent from only to protect the form from abuse; it is not included in the message. We use all this only to reply to you and to fix the problem. We also send email that the service needs, for example to reset a password.
If you report an ad from the app, we receive the reason you chose, your words if you added any, your nickname and account or installation identifier, your account email address if there is one, the app version, the system, the device model, the language and the identifiers of the last few ads shown to you, no older than 30 days. We use this to find the ad, block it and, where needed, report it to the advertising company.
12. Where your data is stored and who receives it
- Our servers. The data we collect is processed on servers we operate ourselves in the European Union, rented from a hosting provider that acts only as our processor. Requests to our websites and servers — including from the app — may pass through the network of Cloudflare, Inc., which delivers them, protects them from attacks and helps us count visits; it processes data on our behalf and, for the security of its network, under its own privacy policy.
- Third parties that act as independent controllers: the advertising companies described in section 7; Apple and Google when you use their services with the app — for example sign-in, purchases, notifications, sync or the check that the app is genuine (section 9); and the app stores, which may process data about downloads, purchases and diagnostics under their own privacy policies.
- Other users. If the app has a profile, other users see your nickname and profile picture — in leaderboards, friends lists, search and notifications.
- Protection. Companies that process data on our behalf do so under a contract and only on our instructions. We share data only with third parties that provide the same or equal protection of your data as described in this policy and required by law.
- We do not sell personal data for money; how advertising works is described in section 7.
- Legal bases. We process data to provide the app and its services to you under the Terms of Use (performance of a contract) — for example your account, the content you create or share with the app, and your purchases. Notifications, statistics with an identifier and personalised advertising rely on your consent, which you can withdraw at any time. In the United States, statistics with an identifier rely instead on our legitimate interest in understanding how the app is used and improving it; you can object at any time by turning them off in the app’s settings. Counters without an identifier, website statistics, crash reports, settings from our servers, server logs, the delivery and protection of our websites and servers, protection from abuse, the check that requests come from the genuine app, replies to your requests and handling ad reports rely on our legitimate interests in keeping the app and our servers working, fair and secure; you can object by writing to us. Where the law requires it, we process data to comply with a legal obligation. You are not required by law or by contract to give us personal data; but a feature that needs certain data — for example an account, shared content or a purchase — does not work without it.
13. How long we keep data
- Editable links — until you delete them; scan counts — up to 13 months.
- Published pages — for the period you choose or until you unpublish them.
- Statistics — up to 13 months; crash reports — up to 90 days; server logs and data used to prevent abuse — up to 30 days.
- The outcome of the check that the app is genuine — as long as the data it confirms; the key of this check on Apple devices — as long as the account it belongs to, and in an app without an account — no longer than 12 months after it was last used.
- Messages you send to support and ad reports — for as long as needed to handle your request, and no longer than two years.
- Purchase data that the provider of purchase software holds on our behalf, and the identifiers we keep to have it deleted — until you delete your account or ask us to delete your data; the provider’s service logs — up to 90 days.
- Backups — up to five weeks. Data you delete disappears from backups when they expire.
14. Children
The app is intended for people aged 16 and over and is not directed at children. We do not knowingly collect personal data from anyone under 16. If you believe a child has given us personal data, write to us and we will delete it.
15. International transfers
Our own servers and backups are in the European Union. Advertising companies, Apple, Google, the app stores and the other companies named in this policy may process data outside the European Economic Area — including in the United States, the United Kingdom, Israel, China, Singapore, Japan, Taiwan and Russia, not all of which the European Commission considers to provide an adequate level of data protection — relying on safeguards such as the European Commission’s Standard Contractual Clauses or the EU–US Data Privacy Framework; see their privacy policies. You can ask us which safeguards apply to your data.
16. Your rights
If you are in the European Economic Area, the United Kingdom or another jurisdiction with similar laws, you have the right to access, correct or delete your personal data, to object to or restrict its processing, to data portability, and to withdraw consent at any time. To exercise these rights, use the app’s settings, the Your data page on our website or write to support@qrcodeapp.org; we reply within one month. To make sure a request comes from you, we send a one-time code to your email, and we answer an email by writing to the email linked to your account, if you have one. You can also lodge a complaint with your data protection authority (in Portugal — the Comissão Nacional de Proteção de Dados, CNPD).
Right to object. Wherever you are, where we rely on our legitimate interests (see “Legal bases”), you can object at any time. In the app’s settings you can turn off statistics, counters without an identifier and crash reports; for anything else, write to us at support@qrcodeapp.org.
Where you have no account with us, statistics and crash reports are linked only to a random identifier of your installation, so we cannot find yours unless you give us that identifier. For data held by advertising companies, use their controls and the consent settings in the app.
We do not make decisions about you by automated means that have legal or similarly significant effects.
17. Security
Connections to our servers are encrypted. Access to the servers is restricted to the developer.
18. Changes
If this policy changes, the new version will be published on this page with a new effective date. Material changes will also be announced in the app or in its release notes.
19. Contact
The controller responsible for your data is:
Ivan Kuvshinov
Rua do Casalinho 186
Avelar, Leiria 3240-352
Portugal
support@qrcodeapp.org