LAST UPDATED · 17 OCTOBER 2026

Privacy policy

How local QR processing, website hosting, optional advertising, and consent choices affect your information.

QR contents and uploaded logos

QR generation and file exports run in your browser. This application does not send the links, text, network credentials, contact details, or coordinates you enter to a QR generation server. Uploaded logos are decoded and resized locally. When you explicitly load a logo from an image URL, your browser requests that image from its host without sending the QR contents, cookies, or a referrer. The image host can process your IP address and other network information. The fetched image is then decoded and resized locally. Ordinary static QR contents do not enter a server database. If you explicitly create an editable QR link, its website destination or app name and store destinations, plus the optional label, are sent to the link service and stored as described below. Optional Google sign-in can associate editable links with your account; ordinary static generation requires no account.

QR values remain in page memory while you use the editor and are not deliberately saved to local storage. Reloading or closing the page clears the editor’s state, though your browser may independently restore form entries. Downloaded files are saved where your browser places them.

Optional editable QR links and aggregate counts

The editable-link tool uses a Cloudflare Worker and D1 database. Creating or editing an editable website link sends its destination URL and optional label to that service. A short App Link stores its app name, Google Play URL, App Store URL, website fallback, and optional label instead. The database also stores a random link ID, a cryptographic hash of its guest management key, the Google account identifier for signed-in links, creation/update timestamps, an aggregate visit count, and the time of the most recent counted visit. Daily aggregate counters use UTC dates. Older rows are removed on the next counted visit after about 30 days; inactive links may retain older rows until revisited or deleted. The lifetime count remains until the link is deleted.

The short App Link service reads the request’s user-agent transiently to choose an app store or website fallback. The application does not store scanner IP addresses, user-agent strings, referrers, country histories, device fingerprints, or tracking cookies for these statistics. Counts are redirect visits, not verified unique people or camera scans. HEAD requests, recognized bots, and requests carrying Do Not Track or Global Privacy Control signals are excluded. Unknown bots or repeated human visits can still count.

Cloudflare processes ordinary network information to deliver and protect the service. An IP address is used transiently as the rate-limit key for API requests and is not saved in the application’s D1 tables. Hosting/provider logs and retention practices are separate from this application’s counters. See Cloudflare’s privacy policy.

Guest management keys are generated in your browser and sent only in authorization headers to the configured backend. The editable-link page is opened as a separate document without loading advertising or CMP scripts. Keys stay in page memory and are not placed in URLs or browser storage. A recovery file you explicitly download contains the keys in readable form; anyone holding it can edit or delete the associated links. Imports are processed locally, and keys are sent only to the site’s configured backend.

Use your signed-in account or guest management key to delete a link and its counters. Lost keys cannot be retrieved from their hashes, and deleted links cannot be restored through the application. Stored destinations, labels, and counters otherwise remain while the service operates; ordinary provider backups may follow separate retention practices. These optional saved links depend on backend availability and free-tier usage limits.

Optional Sign in with Google

When configured, the editable-link manager offers Sign in with Google through Google Identity Services. Signing in shares your Google account’s stable identifier, verified email address, and available profile name with the link service. The service verifies Google’s signed identity token before creating a session. It does not request access to Gmail, Drive, contacts, calendars, or other Google account content. Google’s identity script is loaded only on the manager when sign-in is configured; Google processes the sign-in interaction under its own policies.

D1 associates account-owned links with the stable Google identifier rather than using your email as the ownership key. Session records contain a hash of a random session token, that identifier, your email and profile name for the private account display, and creation/expiry times. The Google identity token is not stored. Your account details are not included in public QR links, redirect pages, or scan counters. Signing out ends the current session; it does not delete your saved links.

Sign-in uses a Secure, HttpOnly, SameSite cookie for a session lasting up to seven days. A separate HttpOnly sign-in challenge cookie lasts ten minutes and is used once to protect login attempts. D1 stores only a hash and expiry for each challenge. These cookies provide requested account functionality rather than advertising tracking. Tokens are not saved in local or session storage. Expired session/challenge records are removed during subsequent sign-in activity; a maximum of ten active sessions is retained per account. Browser site-data controls can remove the cookies, and the Sign out button revokes the current server session.

You can manage account links by signing back in with the same Google account on another device. Existing guest links remain controlled by their recovery keys and are not automatically attached to an account. Account access depends on Google sign-in and link-service availability. Use Google’s third-party connections settings to manage the Google connection. Revoking Google access does not delete saved link records or automatically revoke this site’s already-issued sessions; sign out here and delete unwanted links first. See Google’s privacy policy.

App Links and store destinations

Full App Link QR codes contain a URL whose fragment includes the destinations you provide. The browser reads that fragment locally, and the app chooser uses user-agent and touch-device information to select a configured store or website. This device information is not stored by the application. The chooser loads no advertising or CMP scripts and does not record visit counts. Destinations in the fragment are not sent to the hosting server as part of the page request, but anyone holding the complete link can read them.

Opening the chooser requires an internet connection and sends ordinary network information to the hosting provider. Following a store or website link sends a request to that destination, whose own privacy practices apply. Full App Links cannot be edited after sharing without creating a new link, and rely on this website remaining available. Optional short App Links store their destinations in D1 and use a short redirect URL. They can be edited through their owning Google account or guest recovery key, record the aggregate visits described above, and depend on the link service staying available. App names and destinations are public to anyone who can open the link; do not include secrets in them.

A QR image is readable information

The information in a static QR code is not encrypted by the code format. Anyone with the image can decode it. A Wi-Fi code reveals network credentials; a contact code reveals the contact details you chose. Share downloaded images with the same care you would give their underlying information.

Hosting and technical information

Visiting the site sends ordinary network information, such as your IP address, browser headers, and requested path, to the hosting provider. That provider may keep access or security logs under its own configuration and retention rules. Local QR processing does not mean that visiting the website involves no data processing.

Local preferences

The site stores a light/dark display preference in your browser’s local storage under qr-theme. This contains a theme choice rather than QR contents. You can remove it through your browser’s site-data settings. If storage is blocked, the theme control still works for the current session.

Google AdSense and third-party advertising

Advertising is optional and disabled until the site owner supplies a publisher ID, ad units, and the required consent configuration. When enabled and authorized by consent, Google AdSense and its advertising partners may process information including IP address, browser or device information, cookies, online identifiers, page context, ad interactions, and consent signals.

These services may use cookies and similar identifiers to select or personalize advertising, measure delivery and performance, limit repeated ads, and detect fraud or abuse. Non-personalized advertising can also involve cookies or identifiers. We do not claim that an advertising-supported visit collects no data.

QR input values and logos are not passed as ad targeting parameters by this application. Third-party scripts execute in the website context; their data processing is governed by their policies and the configured consent choices. Advertising is clearly labeled and kept separate from generator controls.

Read how Google uses information from sites using its services, Google’s advertising technology information, and Google My Ad Center to manage Google advertising preferences.

Consent and regional requirements

When configured, this site uses Cookiebot by Usercentrics, a Google-certified consent management platform, with its IAB Transparency and Consent Framework integration. The owner must configure an explicit opt-in banner for all visitors and the regional disclosures and opt-out mechanisms applicable to the regions served, including the EEA, UK, Switzerland, and relevant US states.

For advertising under the TCF, the site participates in the IAB Europe Transparency & Consent Framework and uses Cookiebot CMP (ID 134). The deployed consent interface communicates vendor and purpose choices through that framework. Advertising remains blocked when the CMP is missing, consent is unresolved, required choices are denied, or a Global Privacy Control signal is present.

The CMP itself may process your IP address, browser information, consent choices, timestamps, and a consent identifier to display the correct notice and maintain a record of your decision. Consent records and cookies are managed by that provider under its configuration. See Cookiebot’s privacy policy.

A basic custom cookie notice is not used as a substitute for a certified CMP. The generator remains usable if you decline advertising. Changing a previously granted choice reloads the page to stop further advertising requests from the old document; download or finish unsaved work before changing settings.

The consent service is not currently configured, so advertising stays blocked. You can manage or clear site data through your browser settings.

Your choices and requests

You can decline marketing consent, use the footer’s “Do not sell or share my personal information” control to record an advertising refusal, revisit cookie settings when the CMP is enabled, clear site data, block third-party cookies, or use applicable opt-out controls. Browser settings may affect third-party functionality. Depending on your region, you may have rights to access, correct, delete, restrict, or object to processing, or complain to a supervisory authority.

Use the contact page for the site owner’s published contact details. Do not include private QR payloads in a privacy request. Requests concerning Google or the CMP’s independent processing can also be directed to those providers.

Updates

This policy may change if site features or providers change. The date above identifies this version. The site owner should keep provider details, contact information, and actual deployment practices current.