Privacy Policy

Effective 2 August 2026 · Last updated 10 September 2026

The short version

  • The Snapline app has no analytics, no telemetry, and no account. Nothing you capture is sent anywhere.
  • Screenshots, recordings, recognized text, and translations are created and kept on your Mac, in files you control.
  • The app connects to the internet for two things on its own: checking whether a new version has been published, and confirming this Mac's seat with our activation endpoint: at activation, at trial start, and occasionally alongside update checks.
  • The activation call carries your key and a salted SHA-256 hash of this Mac's hardware identifier. The raw identifier never leaves your Mac, and after activation the license verifies locally, offline.
  • Buying is the one point where personal data exists at all: your email address and the license issued to it.
  • This website counts its readers with our own cookieless counter. It never stores your IP address, and no third party receives any of it.

1. Who this policy is from

Snapline is a macOS application made by Ziad Ziadeh, an individual developer, who is the data controller for the small amount of personal data described here. This policy covers the Snapline app, the website at snap-line.app, and the purchase flow that issues license keys.

For anything in this policy, write to support@snap-line.app.

2. The app: what stays on your Mac

Snapline collects nothing from your Mac. There is no analytics SDK, no telemetry, no usage reporting, no crash reporting service, and no account to sign in to. Nothing you capture leaves your computer unless you send it somewhere yourself.

Everything the app produces is produced and kept locally:

  • Screenshots, scrolling captures, recordings, and GIFs are ordinary files on your disk, in the location you choose in Settings.
  • Recognized text (OCR) is produced on device by Apple's Vision framework and stored alongside your capture history so that searching works. It is never transmitted.
  • Translations are produced on device using macOS language packs. The packs are downloaded and owned by macOS, not by Snapline: the first translation of a language pairing may raise a system download prompt, which is Apple's, and any resulting network activity is between macOS and Apple.
  • Annotations, pins, and history are local application data.
  • Your license key is stored locally and checked locally.

Snapline asks for the system permission Screen Recording, which macOS requires before any app can read the contents of the screen. It is what capture is. Snapline asks for microphone access only when you turn on Microphone for a screen recording, and camera access only when you turn on Camera (the floating camera bubble) for a screen recording; that audio and video go into the movie file saved on your Mac and are never uploaded, transmitted, or stored anywhere else by Snapline. System Audio (what your Mac is playing) is captured through the same Screen Recording permission Snapline already has and needs no additional permission. Snapline asks for Input Monitoring only when you turn on Show Keystrokes for a screen recording; the keys you press are drawn directly into the recorded frames on your Mac and are never logged, stored, or transmitted separately, and if you decline, the recording simply proceeds without the keystroke overlay. Microphone, System Audio, Camera, and the input overlays (Highlight Clicks and Show Keystrokes) are all off by default. Snapline does not request Accessibility, Full Disk Access, contacts, or location.

3. The app: when it uses the network

Snapline uses the network for updates and licensing, including activation, status refreshes, trial leases, deactivation, and seat resets. Capture contents are not included in these requests.

Update checks

The app uses Sparkle to check for new versions: it fetches an update feed and, if you choose to install an update, downloads the update archive. On versions newer than 2.7.0, both requests go to our own domain, snap-line.app, served by Cloudflare, so Cloudflare receives your IP address and the request headers your system sends (as for the website, section 4), and GitHub, where the release files are stored, is contacted by our server rather than by your Mac. Versions 2.7.0 and earlier instead talk to GitHub directly (the feed from raw.githubusercontent.com and downloads from github.com), so on those versions GitHub receives your IP address and request headers until the install has updated once. Snapline does not attach a system profile, a unique identifier, or your license details to these requests, and receives no report about them itself.

These checks run automatically in the background, and the honest caveat is that the app has no switch to stop them today: a Mac kept offline, or an outbound firewall rule, is currently the only way to prevent them. If that matters to you, say so and it becomes a setting.

Licensing requests and stored records

  • Activation and status refreshes. Activation sends the license key, a salted SHA-256 hash identifying this Mac, and a random request nonce. Status refreshes send that hash and nonce with the key or a signed receipt; trial requests do not need a purchased key. The raw hardware identifier is not sent. The hash is a persistent pseudonymous identifier used for seats and trials, not capture analytics.
  • When refreshes run. The app attempts a refresh at launch, daily while running, and during update checks. A paid receipt continues to work when the service cannot be reached; an explicit revocation or deactivation can change its status. Trials need connectivity to renew a lease, valid for at most three days and never beyond the trial end.
  • A trial record also keeps a country. When a trial starts, we store the two-letter country code Cloudflare had already worked out from the connection before our code ran — so we can count which countries Snapline is being tried in, and nothing finer. Your Mac does not send it and is never told it. The IP address it was derived from is not stored, no region or city is kept, and the code sits beside the trial's start date under the same anonymous hash, which is not linked to your purchase or to anything you did in the app.
  • Seat records. Each license has records keyed by the machine hash, including activation and revocation state. Deactivation or a seat reset marks a seat revoked rather than deleting its record; later activation can reuse it. These requests carry the key and machine hash.
  • No content upload. Captures, recognized text, and translations are never sent anywhere by the app.

Links inside the app (Buy, Renew, the GitHub repository) open in your browser when you click them, at which point that site's own policy applies.

Crash reports

Snapline embeds no crash reporting service, so a crash sends us nothing. macOS writes crash logs locally, as it does for every app, and Apple's own Share with App Developers setting may pass anonymized diagnostics to developers under Apple's terms. We use no such feed and receive no crash data from it. If you want to send us a crash log, you would have to attach it to an email yourself.

4. The website

The site sets no cookies and stores nothing in your browser. It counts its readers with a small counter we wrote ourselves, running on the site's own domain. Each page view sends an event to the site's /api/metrics endpoint, which records the event name, the page path, the country and region Cloudflare already attaches to every request, the host name of the site you arrived from (only the host, never the page or its query, and nothing at all when you arrived directly or from one of our own pages), your platform family (Mac, iPhone, iPad, Android, Windows, Linux, or other, read from the browser's own description of itself), and a visitor number made by hashing the request's IP address and browser signature together with the current date. The hash cannot be reversed, the IP address itself is never stored, and the number changes every day; it can say that two page views on the same day were the same person, and nothing more. The site also counts, as bare totals, how many readers reach the pricing section, scroll to the bottom of the landing page, play the tour video, and click the download and buy buttons. No third party receives any of it; there is no tracking pixel, no advertising network, and no visitor profiling.

"Email me the link." On a phone or tablet the landing page offers to email you the download link instead. If you use it, the address you type is sent to our license server, which sends one fixed message to it through Amazon SES, our email provider, and keeps a hash of the address (not the address) for 24 hours so that the same address is sent at most one message a day. The address itself is not stored, not logged, and not used for anything else; nothing further is ever sent to it. The message says who asked for it and what to do if that was not you.

Those counts live in Cloudflare's Workers Analytics Engine, in a dataset called snapline_site, and Cloudflare ages them out after 90 days. Requests whose browser identifies itself as a bot or a crawler are dropped before anything is written, so the numbers are readers rather than machines.

The site is hosted on Cloudflare Pages. Like any web host, Cloudflare processes the technical data a request necessarily carries (IP address, user agent, the URL requested, timestamps) to deliver the page and to protect the site from abuse. We keep no log of that raw traffic ourselves; the counter described above is the only record of a visit we hold, and it never contains the address.

The site's fonts, scripts, and styles are served from snap-line.app itself. One third-party resource is loaded, on the pages that show a price, and it sees your IP address and user agent because that is how the web works:

Loaded fromPagesWhat for
Paddle (cdn.paddle.com and its checkout) Home, Buy, Renew Displaying the price in your local currency, and running the checkout. Paddle sets its own cookies and local storage for the checkout and for fraud prevention, and infers your country from your IP address so the price shown is the price you would pay.

On the home page Paddle's script only fetches the localized price; the checkout, and the storage that comes with it, exists on the Buy and Renew pages.

5. Buying a license, and what we keep

Paddle.com Market Ltd is the Merchant of Record for every Snapline purchase. That means Paddle, not us, sells you the license, takes the payment, and handles sales tax. Paddle collects and processes what a payment requires: your name, email address, billing address, country, payment card or wallet details, and the transaction record. Card numbers never reach us and are never stored by us.

Paddle is an independent controller of that payment data and handles it under its own policy, which is at paddle.com/legal/privacy.

What reaches us, after a completed payment, is your email address and the transaction's identifiers. A small Cloudflare Worker uses them to mint your license key, store it so a lost key can be reissued and so a webhook retry never issues you a second one, and then send the key to you by email.

Everything we keep about a purchase lives in Cloudflare Workers KV, and this is all of it:

DataWhy it existsKept
Your email address To send the license key, to find your key again if you lose it, and to extend the right update window when you renew. For as long as the license exists, since a perpetual license has to stay reissuable.
The license key issued to you, and its identifier So that one purchase yields exactly one key, however many times the payment webhook is retried. Same.
Purchase date, update-window end date, number of seats The terms of the license itself, and what a renewal extends. Same.
Paddle transaction and customer identifiers To match a support request or a refund to the right license. Same.
Support email you send us To answer you, and to remember the answer if you write again. Up to 3 years from the last message in the thread.

That table, the seat and trial records described in section 3, and the page counter in section 4 are the whole of what we hold. There is no profile, no behavioral record, no list of what you captured, and nothing derived from your use of the app, because the app reports nothing. The counter and your purchase are never joined: nothing in the metrics dataset identifies a buyer, and nothing in the license record says anything about a visit.

Ask us to delete your license record and we will. Be aware of the trade-off, which we would rather state than bury: once the record is gone we can no longer prove the license was yours or reissue the key, so keep your own copy of it first. Your existing installation is unaffected either way: the key keeps verifying offline.

6. Who else handles it

ServiceRoleSees
Paddle.com Market Ltd Merchant of Record, independent controller Name, email, billing address, payment details, tax location.
Cloudflare, Inc. Processor: site hosting, the license-issuing Worker, the KV store, and the metrics dataset Site request metadata, the page counts from section 4, and the license records above.
Amazon Web Services, Inc. (Amazon SES) Processor: email delivery Your email address and the license email itself.
GitHub, Inc. (Microsoft) Storage of the app's release files and update feed, fetched by our server For installs running 2.7.0 or earlier only: the IP address and headers of update checks and downloads. Nothing from newer installs or website downloads.
Google LLC Font delivery for the website The IP address and headers of the font request.

We do not sell personal information, we do not share it for advertising or cross-context behavioral advertising, and there is no other recipient. If that ever changes, this list changes with it before it happens.

7. Why we are allowed to hold it

For readers in the EU, the UK, and anywhere with a comparable law, the legal bases under the GDPR and UK GDPR are:

  • Performance of a contract: issuing your license key, emailing it to you, reissuing it, and extending it on renewal. Without your email address there is nowhere to send what you bought.
  • Legitimate interests: answering support requests, and keeping the purchase flow from issuing duplicate or fraudulent licenses. The interest is narrow and the data is the minimum the job takes.
  • Legal obligation: tax and invoicing records, which are kept by Paddle as the Merchant of Record rather than by us.

We do not rely on consent for anything described here, because nothing described here is optional to the purchase. There is no marketing list; we do not email you unless you bought something or wrote to us.

8. Your rights

Depending on where you live you have some or all of these rights over the data described above: to know what is held, to get a copy, to have it corrected, to have it deleted, to restrict or object to how it is used, and to receive it in a portable form. California residents have the equivalent rights under the CCPA, including the right not to be discriminated against for exercising them.

Exercise any of them by emailing support@snap-line.app from the address you bought with, or telling us the address you bought with. We answer within 30 days, and there is no charge. We may ask you to confirm the request from that address, since it is the only thing tying a person to a record.

For payment data, the faster route is Paddle directly, since Paddle holds it. If you are in the EU or the UK and think we have handled your data badly, you can complain to your national data protection authority.

9. International transfers

Snapline is made and run by one person, and the services it relies on are global. Cloudflare, Amazon Web Services, and GitHub process data in the United States and elsewhere; Paddle operates from the United Kingdom with infrastructure in the EU and the US. Where personal data leaves the EEA or the UK, those providers rely on the European Commission's Standard Contractual Clauses and the UK Addendum, or on an adequacy decision, in their agreements with us.

10. Changes to this policy

If this policy changes, the date at the top changes with it, and the previous versions remain visible in the site's public history. If a change is material (a new recipient of data, a new category collected, a new purpose), we will say so plainly here rather than quietly amending a sentence. Nothing in an update applies retroactively to data already deleted.

11. Contact

Ziad Ziadeh, developer of Snapline.
Email: support@snap-line.app

A postal address for formal data requests is available on request to that address.

See also the Terms of Service and the Refund Policy.