Textracto_
Legal

Privacy Policy

Textracto is a Mac app that reads your screen. That is exactly the kind of app whose privacy policy you should read carefully — so this one is written to be read, not skimmed past. It describes what the app does with what it sees, what the website does when you visit it, and what happens when you buy a license.

Effective 2 August 2026 · Last updated 4 August 2026
The short version
  • Your screen never leaves your Mac. Capture and text recognition happen entirely on-device using Apple's frameworks. Captured images are held in memory and discarded the moment recognition finishes. With Accessibility granted, a capture also reads the text apps publish for assistive software — held the same way, and never for passwords.
  • There is no account, no telemetry, and no analytics in the app. Nothing is logged to a server, ever — there is no server that receives usage data.
  • The app makes exactly one kind of network request: fetching a small version file to check for updates, at most once a day. It sends nothing about you, and you can switch it off in Settings.
  • Your license key is verified offline using a signature check on your own machine. It is never transmitted.
  • Payments are handled by Lemon Squeezy, who act as the merchant of record. They collect your billing details; I only ever see your email address and what you ordered.
The responsible party

Who I am

Textracto is built and sold by Armand Halbert, an individual sole proprietor in Illinois, United States. For the purposes of the GDPR and similar laws, I am the data controller for the small amount of personal data described here.

Contact for any privacy question, request, or complaint: hello@textracto.app. I answer these myself.

The part that matters

What the app does with your screen

When you press a capture shortcut, Textracto asks macOS for the pixels of the focused window (or of every window), runs Apple's on-device Vision text recognizer over them, and shows you the recognized lines in the palette. If you have granted Accessibility, it also reads the text those same windows publish for assistive software, which is more accurate than recognizing it from pixels. Every step of that happens inside the app's own process on your machine.

Screen captures

Captured images exist in memory only. They are not written to disk, not cached, not placed in a temporary folder, and not transmitted. They are released as soon as text recognition finishes — typically within a fraction of a second of the palette appearing.

Recognized text

The recognized lines live in memory for as long as the palette is open, so you can search them. When you dismiss the palette, they go away with it. Nothing about a capture survives to the next one, and nothing is retained after the app quits.

What you copy

When you copy a match, the text is placed on the macOS clipboard — the same shared clipboard every app uses. From that point it is handled by macOS, not by Textracto, and it may be visible to other apps you have installed and synced to your other Apple devices if you have Universal Clipboard enabled. Textracto keeps no clipboard history of its own.

Text published by other apps

With the Accessibility permission granted, a capture also reads the accessibility information the captured windows publish — the same information macOS exposes to VoiceOver and other assistive software: the text of labels, fields and documents, and the names of controls. This is what lets Textracto give you the exact characters rather than its best guess at them, and reach text that has scrolled out of view.

Two limits are deliberate. Textracto does not read the contents of secure text fields — the field type macOS uses for passwords. And it reads only the windows a capture covers, only at the moment you ask for one; nothing is read in the background or while the app sits idle in the menu bar.

What it reads is held in memory exactly like the recognized text: not written to disk, not cached, not transmitted, and gone when you dismiss the palette. Without the Accessibility permission this step does not happen at all, and Textracto works from the screen image alone.

Clicking, selecting and editing

Pointer actions work by synthesizing mouse and keyboard events through macOS, and by asking the target app directly to scroll to, select, or press an element. That interaction is momentary and never recorded or transmitted.

The two permissions, and why. Screen Recording is what lets Textracto read the pixels — macOS grants no way to read on-screen text without it. Accessibility does two jobs: it lets Textracto read the text other apps publish for assistive software, and it lets Textracto move the pointer and type on your behalf. Textracto works without it, from the screen image alone. Both are granted by you in System Settings and can be revoked there at any time.
  • No microphone, no camera, no location, no contacts, no files. Textracto requests none of these and cannot access them.
  • No keystroke logging. The app receives the keys you type into its own palette, and nothing else. It does not observe input to other applications.
  • No screen recording in the everyday sense. Nothing is filmed, buffered, or continuously watched. Capture happens only in the instant you press a shortcut.
  • No biometrics. Textracto uses Apple's Vision framework for text recognition only. It does not perform face detection or face-geometry analysis, and does not collect, capture, store, or disclose any biometric identifier or biometric information within the meaning of the Illinois Biometric Information Privacy Act (740 ILCS 14) or any comparable law. If a face happens to be on your screen, nothing about it is recognized, measured, or retained.
On disk

What's stored on your Mac

Textracto keeps a handful of preferences in the standard macOS user-defaults store, inside your own user library. Nobody but you and the software running under your account can read them, and deleting the app's preferences removes them all.

WhatWhy
Your capture shortcutsSo your chosen key combinations survive a restart.
Recognition languagesWhich languages the OCR engine should expect.
Target-preview settingWhether the on-screen target marker is shown.
A running count of actionsA single integer, used to know when the free tier's reminder should appear. It records how many actions you have taken — never what they were, what you copied, or where.
Your license key, if you have oneSo you only enter it once.
Update-check preference and timestampWhether automatic checks are enabled, and when the last one ran, so it happens at most once a day.

That is the complete list. There is no database, no log file, no history of what you searched for, and no record of what you copied.

About your license key

A Textracto license key encodes the email address the license was issued to, together with a cryptographic signature over it. The app verifies that signature entirely offline, against a public key compiled into the app. No part of this involves a network request, an activation server, or a device fingerprint. Your key is stored on your Mac and used only locally.

Being precise

The one network request

Textracto can make a single kind of outbound request: an update check. It fetches a small JSON file from textracto.app that names the latest released version, compares it to yours, and tells you if a newer one exists.

  • It is on by default, and runs at most once a day, at launch. Security and correctness fixes are worth little if they never reach anyone, and most people never open a settings window.
  • You can turn it off in Settings, in one click. With it off the app makes no network requests at all, and you can still check manually with Check Now.
  • It sends nothing about you. The request carries no identifier, no license key, no usage data, and no screen content — it is an ordinary anonymous fetch of a public file, the same one your browser would get.
  • It is not a usage signal. The version file is static and identical for everyone. Nothing on the receiving end counts installs, distinguishes one Mac from another, or knows whether you are a licensed user.
  • The web server sees what any web server sees: your IP address, the time, and a user-agent string, recorded in standard access logs by the site's host. These are not linked to you, your license, or any other record, and I do not analyse them to profile users.

If you choose to install an update, the app then downloads the release archive from the same site and verifies its Apple code signature before installing anything. Updates are never installed silently — you are always asked first, and you can decline and download it in your browser instead.

Want it completely airtight? Turn automatic update checks off in Settings and the app never opens a socket. You can also block it at the firewall with no loss of functionality — every feature works offline, permanently, including license verification. You would then be responsible for checking for updates yourself.
textracto.app

The website

This site is a set of static pages. It sets no cookies, has no login, comment box, or form that submits anywhere, and does not track you across other sites. It does count page views — cookielessly, and without identifying you — as described next.

  • Page-view measurement. The pages here (but not the tutorial, and never the app) load a small script from Cloudflare Web Analytics that records that a page was viewed, which page, and which site you arrived from. It sets no cookies, stores no identifier on your device, does not fingerprint your browser, and cannot follow you to any other site. Cloudflare processes the request on my behalf and receives your IP address in doing so, but does not retain it as part of the measurement. I use it to answer one question: which places send people here. Their handling is described in the Cloudflare privacy policy.
  • Server logs. The host serving these pages keeps ordinary access logs — IP address, timestamp, requested page, user agent — for security and operational purposes. I also summarise them to count how many people downloaded the app and which sites referred them. The summary is aggregate — totals per page, per referrer, per day — and I do not build profiles from the logs or share them.
  • Fonts. The pages load two typefaces from Google Fonts (fonts.googleapis.com and fonts.gstatic.com). Your browser therefore contacts Google to fetch them, and Google receives your IP address and user agent as part of that request.
  • The demo video. The front page shows a still image, served from this site, with a play button over it. Nothing is requested from YouTube unless you press play. No player, no script and no cookie is loaded before that, so simply visiting or scrolling the page sends nothing to Google on the video's account. If you do press play, the player is loaded from youtube-nocookie.com — YouTube's privacy-enhanced host, which does not set advertising cookies for playback — and from that moment YouTube receives your IP address and user agent like any embedded video, under Google's privacy policy. The same recording is on the front page's own server as a plain file if you would rather not load the player at all.
  • Google Fonts, Cloudflare Web Analytics, and the YouTube player described above — which loads only on request — are the only third-party resources on the site.
  • Outbound links. Links to the checkout, or to any other site, are governed by that site's own privacy policy once you follow them.

Measurement on this site is deliberately limited to counting visits and downloads. There is no product analytics, no session recording, no heatmapping, no advertising or remarketing pixel, and no attempt to identify who you are — and there will not be. If that ever changes, this policy is updated before the change ships, and any change that materially reduces what is described here is announced on the front page rather than quietly amended in here.

None of this applies to the app. Textracto itself contains no analytics of any kind, and nothing about your screen or your usage is ever sent anywhere. Visiting a website is a different act from running the app, and only the former is counted.

Buying a license

Payments and licenses

Purchases are processed by Lemon Squeezy, which acts as the merchant of record for the sale. That means the transaction is legally between you and Lemon Squeezy; they handle payment, fraud checks, invoicing, and sales tax or VAT.

At checkout, Lemon Squeezy collects what a payment processor needs: your name, email address, billing address, country for tax purposes, and payment details. Payment card numbers go to their payment providers and are never transmitted to or stored by me. Their handling of that data is described in the Lemon Squeezy privacy policy.

What reaches me is limited to the order record: your email address, the product bought, the amount, the date, and the country used for tax. I use it for exactly three things — issuing your license key, honoring refunds, and answering you if you write in. Order records are kept as long as needed to support the license and to meet tax and accounting record-keeping obligations, then deleted.

  • No marketing email. Buying a license does not subscribe you to anything. There is no mailing list.
  • Nothing is sold or shared. Your data is never sold, rented, or handed to advertisers or data brokers, under any circumstances.
  • Your email is in your key. Because keys are tied to the purchaser's email, that address is encoded in the key itself — which is why keys should not be shared publicly.
When you write in

Email support

If you email hello@textracto.app — for support, a refund, a bug report, or a feature request — I receive your message, your email address, and whatever you choose to include. It is used to answer you and to improve the app, and is stored in the mailbox handling that address. Threads are kept while they are useful and deleted when they are not.

Please don't paste screenshots or logs containing sensitive information unless they're necessary to reproduce a problem.

What you can ask for

Your rights

Depending on where you live — including under the GDPR in the EU and UK, and under the CCPA/CPRA in California — you have the right to access the personal data held about you, to have it corrected or deleted, to receive a copy of it, to object to or restrict its processing, and to withdraw consent where processing rests on consent. California residents additionally have the right not to receive discriminatory treatment for exercising these rights; note that no personal information is ever sold or shared for cross-context behavioral advertising, so there is nothing to opt out of.

In practice the only personal data I hold about a customer is an order record and, possibly, an email thread. To exercise any right, write to hello@textracto.app. I will respond within 30 days. Billing records held by Lemon Squeezy are subject to their policy; I will help you reach them if that is where your request needs to go.

Legal bases

Where the GDPR applies, order data is processed to perform the contract of selling you a license and to comply with legal obligations around tax records; support correspondence is processed under a legitimate interest in answering customers. The update check relies on a legitimate interest in keeping installed software secure and current — it transmits no personal data beyond the IP address inherent in any web request, and you can object to it at any time by switching it off in Settings.

International transfers

I am based in the United States, and Lemon Squeezy is a US company, so order and support data is processed in the US. Lemon Squeezy relies on Standard Contractual Clauses for transfers of EU and UK personal data; details are in their policy.

Children

Textracto is a developer utility, not directed to children, and I do not knowingly collect personal data from anyone under 16. If you believe a child has provided data, write to me and I will delete it.

Security

The design does most of the work here: the app holds nothing worth stealing, and screen content never travels anywhere it could be intercepted. Order and support data sits with providers that use industry-standard encryption in transit and at rest. No system is perfect, but the attack surface is deliberately close to nil.

Complaints

If you are in the EU or UK and are unhappy with how I have handled your data, you may complain to your local supervisory authority. I would appreciate the chance to put it right first.

Housekeeping

Changes to this policy

If this policy changes, the "last updated" date at the top changes with it, and the revised version is posted here. For any change that materially reduces the protections described above — adding analytics, adding telemetry, transmitting anything about your screen — I will say so plainly on the site's front page, not quietly amend this text.

Questions: hello@textracto.app.