Privacy policy
Effective: [EFFECTIVE DATE]
This policy explains what HandToText (handtotext.app) does with information about you when you visit the site, transcribe pages, buy page packs or restore a purchase. Questions go to support@handtotext.app.
Who we are
Data Controller
Geometry Lab L.L.C-FZ, Licence No. 2651608.01 · Formation No. 2651608, Meydan Grandstand, 6th floor, Meydan Road, Nad Al Sheba, Dubai, United Arab Emirates.
EU Representative (Art 27 GDPR)
Prighter EU Rep GmbH, Schellinggasse 3/10, 1010 Vienna, Austria.
UK Representative (Art 27 UK GDPR)
Prighter Ltd, 20 Mortlake High Street, London, SW14 8JN, United Kingdom.
You can exercise your privacy rights through the Prighter rights portal, by emailing support@handtotext.app, or by writing to privacy@geometryapps.com. The Geometry app directory is at geometryapps.com.
The short version
- You do not need an account. Your first pages are free; after that you can buy page packs from Paddle, which sells them as the merchant of record.
- Your browser shrinks each page and sends it to our server, which passes it to OpenAI to read the handwriting. The text comes back to your browser. HandToText keeps no page images and no transcripts.
- Your browser keeps a random browser id that holds your free and purchased pages. On our server we store that id, page counts, purchase records from Paddle and visit statistics.
- HandToText sets no cookies of its own and has no third-party analytics or advertising trackers. In the EEA, the UK, Switzerland and the territories listed under Visit statistics, we ask before linking a visit's statistics to your browser id.
- We do not sell your information or share it for advertising.
Your pages and their text
Before a page leaves your device, your browser prepares it:
- A photo or scan is drawn again as a new JPEG image, at most 2,048 pixels on its long side. The new image does not carry the original file's name or the photo details embedded in it, such as camera or location data.
- A PDF is opened in your browser, and each of its pages is drawn there as an image. The PDF file itself is never uploaded.
When you press Transcribe, your browser sends the page images one at a time to our server, which runs on Cloudflare. The server sends each image to an AI model from OpenAI through OpenAI's API, with OpenAI's response storage turned off, and returns the text to your browser. OpenAI receives the page image and our instructions for transcribing it. Our server does not send OpenAI your browser id, your name or your email address. Under OpenAI's API terms, data sent through the API is not used to train OpenAI's models by default and may be kept for up to 30 days to monitor for abuse.
Our server holds the image and the text only in memory while it handles the request. It does not save them, and its logs do not contain them. In your browser, the images and the text exist only on the open page: they are gone when you close or reload it, so download or copy your text first.
After each page that counts against your free or purchased pages, our server keeps a short-lived receipt: a one-way, keyed hash of the page image, your browser id and the time. The hash cannot be turned back into the image. If the text of a counted page is lost on its way back to you and your browser sends the same page again within 30 minutes of the counted run, it runs again without counting. Once that free run has returned the text, or once the 30 minutes have passed, the same page counts as a new page. A cleanup that runs every 15 minutes deletes receipts older than 30 minutes, so each one lasts at most about 45 minutes.
The pages you upload can contain information about you or about other people, such as names in a letter or details on a form. We process that content only to return its text to you.
Your browser id and free pages
The first time you transcribe a page, open checkout or restore a purchase, our server creates a random browser id, and your browser saves it in its local storage for this site. The id lets the tool count your free pages and know which purchased pages this browser can use. On our server the id is stored with the time it was created, the number of free pages it has used and, after a purchase or a restore, a link to that purchase record. For each page you transcribe, we also record the time it was used, never its content.
To keep the free pages from being taken without limit:
- Before your browser gets its id, it completes Cloudflare Turnstile, a check that the request comes from a person using a browser and not from an automated program. It usually runs without you doing anything. To decide, Cloudflare processes signals from your browser and connection, such as your network (IP) address and browser type, and our server then sends Cloudflare the check's result and your network address to confirm it. See Cloudflare's Turnstile Privacy Addendum.
- Our server limits how many free pages and requests come from one network address. For this it uses a one-way, keyed hash of your network address that also includes the date, so the same address gives a different value each day. These counters are deleted when their time window ends, after at most 24 hours, and are never stored with visit statistics or purchases.
- To cap what the tool spends on AI and email, our server also counts the pages each browser uses and the restore emails each address receives, under one-way hashes. A cleanup that runs while the tool is in use deletes these counters once they are more than 40 days old.
Purchases and restoring pages
Page packs are sold by Paddle (Paddle.com), our authorized reseller and the merchant of record for all orders. At checkout you give your email address, payment details and billing details to Paddle, not to us, and Paddle handles them as an independent controller under its own privacy notice, available on paddle.com. We never receive your card details. Paddle makes buyers' order details, such as the email address and country, available to us in its seller dashboard, and we use them only to handle refunds and support requests.
When you open checkout, the page passes Paddle your browser id, so that the purchase can be credited to the browser that bought it. Where linking is allowed (see Visit statistics), it also passes a random id for the current visit. When the payment completes, Paddle notifies our server, and we keep a purchase record with:
- Paddle's transaction id and customer id, the pack and its number of pages, the time, and the amounts Paddle reports: price, tax, Paddle's fee and our earnings;
- your browser id;
- where linking is allowed, how you reached the site: the visit in which you opened checkout, with its channel, campaign, ad group, keyword, ad and country, or failing that the channel that first brought your browser. Where the page asks you first (see Visit statistics), the purchase record keeps none of this unless you chose Allow;
- a one-way, keyed hash of the email address you used at checkout, which our server reads once from Paddle after the purchase. We keep only the hash, never the address.
Paddle also tells us about refunds and chargebacks (their amounts, status and dates), and we record the pages each one took back or returned.
Restoring purchases. To use your purchased pages in another browser, choose Restore purchases and type the email address you used at checkout. Our server hashes the address and looks for a matching purchase record, and the page shows the same message whether or not it finds one. If it finds one, it sends a 6-digit code to that address through Resend, our email provider, and stores only a hash of the code. The code works for 15 minutes and for a limited number of attempts. When you enter the right code, that browser is linked to the same purchase record and the code's hash is deleted. We do not store the email address you type; Resend receives it to deliver the code.
Visit statistics
We count visits ourselves, to see how many people visit, try the tool and buy, and which ads and other channels bring them. There are no third-party analytics or advertising tags on the page, and HandToText sends no information about your visit or purchase to Google or any other ad platform. If you arrive from an ad, the ad platform records your click under its own privacy policy.
When the page opens, it sends our server a visit event with:
- the page path and the time;
- the campaign details in the link that brought you, if any (source, medium, campaign, keyword, ad, ad group and match type, as set in the link), and whether the link carried an ad click identifier, such as Google's gclid, and of which kind. We do not store the identifier's value;
- the name of the site that referred you, which our server uses to sort the visit into a channel, such as search, an AI assistant, another site or direct, and does not store;
- your country, which Cloudflare works out from your network address. Your network address itself is not stored with the event.
Later events from the same page view record what happened, for example a first free page, a page used, being asked to pay, checkout opened or completed, or an analytics choice made. They are tied to the visit by a random visit id that exists only for that page view.
Linking to your browser id. In the EEA (including the EU's overseas regions and Åland), the UK, Gibraltar, Jersey, Guernsey, the Isle of Man and Switzerland, and whenever Cloudflare cannot tell your country, the page asks you first. If you choose Allow, the events are linked to your browser id; if you choose Don't allow, or make no choice, they are recorded without it. Everywhere else, these events are linked to your browser id once your browser has one, so we can see, for example, which channel first brought a browser that later bought pages. The tool works the same whatever you choose. The same choice decides whether a purchase record notes how you reached the site (see Purchases).
Changing your choice. Where the page asks you first, the Analytics choice button at the bottom of the page lets you change your answer at any time. Pressing it forgets your choice, so nothing more is linked until you choose again, and shows the question again. Events that were already linked stay linked unless you ask us to delete them (see Your rights).
Cookies and storage in your browser
HandToText sets no cookies of its own. The page saves two items in your browser's local storage for this site:
- the browser id described above (
tool.device), saved the first time you transcribe a page, open checkout or restore a purchase. The tool needs it to provide what you asked for: without it, it cannot count your free pages or hold your purchased pages. - your analytics choice (
tool.consent), saved only when you answer the question where the page asks first, so that it does not ask again, and removed when you press Analytics choice.
Both stay until you clear this site's data in your browser.
The page also loads code from three other services. Each receives your network address and browser details when your browser fetches its code, and handles them under its own privacy notice:
- Cloudflare Turnstile, which loads for the check before your browser gets its id. The check runs in a frame from challenges.cloudflare.com, where Turnstile uses its own cookies and local storage. It sets no cookie on handtotext.app.
- Paddle's script, which loads only when the page asks you to buy a pack or when you press Buy, to show prices in your currency and to run checkout. Until then the page shows list prices.
- The pdf.js reader from cdnjs, a public library service run by Cloudflare, which loads only when you choose a PDF. The PDF is read in your browser and is not sent to cdnjs.
Operational logs
Our server writes short log lines about errors, limits and spending: event names, status and error codes, error messages and, for some errors, the server address that failed or Paddle's transaction id. They never contain your pages or their text, your network address or the headers your browser sends with a request. We do not keep a log of every request. Cloudflare keeps these log lines for 7 days, and we use them to keep the tool working and to investigate failures and abuse.
Emails you send us
If you write to support@handtotext.app, we receive your email address and your message, and we use them to answer you, for example about a refund.
Why we use information
For visitors in the EEA and the UK, our legal bases under the GDPR and the UK GDPR are:
- To provide the tool you ask for (contract, Art 6(1)(b)): transcribing your pages, the browser id, counting free and purchased pages, the receipts that stop a resent page from counting twice, crediting purchases, restore codes, refunds and answering your messages.
- Our legitimate interests (Art 6(1)(f)), balanced against your rights and interests: the human check, request and spending limits and operational logs, which keep the tool working and the free pages from being abused; and visit statistics that are not linked to your browser id. You can object to this processing at any time.
- Your consent (Art 6(1)(a)): where the page asks you first, linking visit statistics to your browser id and noting in a purchase record how you reached the site. You can withdraw it at any time with the Analytics choice button.
- Legal obligations (Art 6(1)(c)): keeping purchase and refund records for as long as accounting and tax laws require, and answering lawful requests from authorities.
You do not have to give us anything to visit the site. To transcribe a page, your browser has to send it; to buy, Paddle needs your payment details; to restore a purchase, you need the email address you used at checkout.
We make no decisions about you with legal or similarly significant effects by automated means. The human check and the free-page limits work automatically; if they stop you by mistake, write to us.
Who receives information
- Cloudflare hosts the site, our server, the database and counters and our operational logs, and runs Turnstile and cdnjs. Cloudflare processes your network address and request details to deliver the site.
- OpenAI receives each page image to transcribe it, as described above.
- Paddle sells page packs as the merchant of record and is an independent controller of the details you give at checkout. It receives your browser id at checkout, and the visit id where linking is allowed, and sends us the purchase details described above.
- Resend delivers restore codes and receives the email address and the code.
- The people at Geometry who run HandToText can read the database, which holds no page images, transcripts, email addresses or network addresses, and Paddle's seller dashboard. We use the statistics in aggregate reports, such as visits, uses, purchases and refunds per day and channel.
We do not sell personal information or share it for cross-context behavioral advertising. We disclose information to authorities only when the law requires it.
International transfers
Geometry Lab L.L.C-FZ is based in the United Arab Emirates, and our providers operate in many countries. Processing may take place in the European Union, the United Kingdom, Switzerland, the United Arab Emirates, the United States and the other locations listed in each provider's subprocessor notice. Where European or UK transfer rules apply, transfers rely on the providers' Standard Contractual Clauses or UK transfer terms, together with data minimization, encryption in transit and access controls.
How long we keep information
- Page images and transcripts: not kept by HandToText. OpenAI may keep API data for up to 30 days to monitor for abuse.
- Page receipts (a keyed hash of a page image, the browser id and the time): at most about 45 minutes.
- Your browser's storage: until you clear this site's data.
- Browser records with no purchase: deleted 400 days after they were created.
- Purchase records, the page balance with its use, refunds and chargebacks, and browser records linked to a purchase: kept for as long as we offer HandToText, because purchased pages do not expire, and longer where accounting or tax law requires it.
- Visit statistics: kept for 400 days, counted by calendar day, and then deleted.
- Paddle notification ids, kept so that a repeated notification changes nothing: 90 days.
- Restore codes: a code works for 15 minutes. Its hash is deleted when the code is used, and otherwise within 15 minutes after it expires.
- Request counters: deleted when their time window ends, after at most 24 hours. Spending counters: deleted once they are more than 40 days old, by a cleanup that runs while the tool is in use.
- Operational log lines: 7 days.
- Database recovery history: Cloudflare keeps earlier versions of our database for up to 30 days so it can be restored after a failure, so a deleted record can remain there for up to 30 days.
- Emails you send us: for as long as we need them to handle your request and any follow-up.
- Paddle and Resend keep their own records under their own retention rules.
Your rights
Depending on where you live, you may have the right to access, correct or delete your information, to restrict or object to its use, to receive it in a portable format and to withdraw your consent at any time. You can also complain to a data protection authority: in the EEA, the authority where you live or work; in the UK, the Information Commissioner's Office; in Switzerland, the Federal Data Protection and Information Commissioner.
To exercise a right, use the Prighter rights portal or write to support@handtotext.app. We answer within one month. HandToText has no accounts, so we find your records this way:
- If you bought a pack: tell us the email address you used at checkout. We confirm the request through that address before we disclose or delete anything.
- If you never bought anything: the only link between you and our records is the browser id kept in your browser. We will explain how to find it so you can send it to us. Clearing this site's data in your browser removes the id from your browser, after which the records stored under it can no longer be connected to that browser. We delete a browser record with no purchase 400 days after it was created in any case.
If we delete a purchase record at your request, its pages can no longer be used or restored. We keep the purchase and refund details that accounting or tax law requires.
Children
HandToText is for people aged 16 and over and is not directed at children. We do not knowingly collect information from children under 16. If you believe a child has used HandToText, write to us and we will delete the records we can find. Purchases are made with Paddle under Paddle's own age rules.
Security
Connections to the site use HTTPS. Our server signs the browser id so that it cannot be forged; email addresses, network addresses, restore codes and page receipts are kept only as one-way, keyed hashes; each notification from Paddle is checked against Paddle's signature; and request and spending limits stop abuse. No security measure removes all risk.
Changes to this policy
We update this policy when the tool, our providers or the law change. The effective date above shows the current version.
Contact
- Support and privacy: support@handtotext.app
- Data protection enquiries: privacy@geometryapps.com
- Rights portal: app.prighter.com/portal/geometry
- Post: Geometry Lab L.L.C-FZ, Meydan Grandstand, 6th floor, Meydan Road, Nad Al Sheba, Dubai, United Arab Emirates