Back to ToText

Privacy Policy

ToText Privacy Policy

Effective date: 2026-10-16 · Version: 2.15

ToText is a personal voice-note app for iPhone. It records your voice, turns it into text, writes a short summary, and lets you chat with that text. The app works without an account or sign-in. If you choose the optional ChatGPT or Codex connection, a separate account and a server copy of your shared library's text are created, as explained below.

This document tells you, in plain English, what happens to your data. If you have questions, write to company@lovelaceloom.com.


The short version

If you'd rather skip the rest, that's the whole story.


What we collect about you

This section describes ordinary app service requests without the optional ChatGPT or Codex connection. Separate optional crash, usage and ad measurement sharing is described below. Sign-in profiles, shared library text and connection logs are described in that connection's section below. For ordinary app service requests, we collect:

We do not collect:

No account or sign-in is required to use the app. The optional ChatGPT or Codex connection is the exception described below; support correspondence is described under "Feedback and support".

What we process on our servers (and for how long)

When you finish a recording, your content passes through our service so we can do the work. This section describes that temporary app processing, not the separate text library kept when you enable the optional connection:

Imported video: When possible, the app extracts audio on your device before uploading it. Otherwise, the selected file may be sent for processing in full, including its video. The same deletion rules apply.

The 30-minute and 24-hour windows above are enforced as access limits, not as a claim that AWS has physically erased every storage byte at the exact second. Once a row reaches its deadline, ToText's API does not return it or use its content to answer new requests, even if asynchronous cloud cleanup has not removed the expired row yet. An expired row encountered during a request is also deleted best-effort, and the database TTL and storage lifecycle remain cleanup backstops. This distinction does not extend the period in which ToText can serve or process the content.

Database recovery backups. Our DynamoDB table also contains the temporary Q&A transcript cache. Continuous backups are enabled with a rolling one-day recovery window, the shortest supported setting. An expired row may remain in the live database until asynchronous deletion completes, and earlier versions may remain recoverable in that backup window after deletion. The one-day setting is not a deadline for erasing every copy one day after upload or access expiry. It does not extend the API access limits above, and we do not use this recovery history to serve expired content or restore individual user libraries.

Subscription notices from Apple. When a subscription starts, renews, ends or is refunded, Apple notifies our server. We keep the type of event, the plan and the App Store country for about seven days, with nothing that identifies you, and send ourselves a short notice about it.

Unless you enable the optional ChatGPT or Codex connection, we do not maintain a permanent server-side library or search index of your content. Temporary processing copies and database recovery backups follow the retention rules above. Your library lives on your devices and, when enabled, in your personal iCloud. The connection's separate cloud copy follows the rules in its section below.

What stays on your device and in your own iCloud

These things live in ToText on your phone and, when iCloud Drive sync is on, in your personal iCloud. Temporary server processing and database recovery backups are described above:

If you delete a recording in ToText, it is removed from your phone and, where it applies, from your iCloud Drive - and because devices share that iCloud copy, deleting on one device can remove shared content, including audio, for your other devices too. If you uninstall ToText from a device, that device's local content goes with it; anything in your iCloud Drive stays until you delete it there.

What goes to your personal iCloud Drive

If you have iCloud Drive turned on for ToText (this is on by default, but you control it), the app saves two things to your own iCloud Drive:

This is your iCloud Drive, under your Apple ID, governed by Apple's privacy policy - not ours. We can't see those files. To stop the sync, open iOS Settings → your name → iCloud → Saved to iCloud → ToText, and turn it off. To delete the synced files, open the Files app and remove them, the same way you would for Voice Memos.

The ToText Keyboard

ToText includes an optional system-wide keyboard ("ToText Keyboard") that works in any app - Messages, Mail, Notes, anything with a text field - not just ToText itself. It is a real keyboard: it has number, punctuation and symbol keys, a space bar, a return key and a delete key, so you can type with it. It also has a dictation pill, which is what lets you speak instead of type.

Full Access. iOS asks you to grant the keyboard "Full Access" before dictation works. We need it for one thing: the handoff to the ToText app. The keyboard itself can't record audio - Apple doesn't allow that. Full Access is what lets the keyboard use a small shared area on your phone (an "App Group") and open the ToText app, so it can tell the app to start or stop recording and read back the finished transcript. The recording, the transcription, and any network request all happen in the ToText app - never in the keyboard.

The keyboard has no network access of its own. There is no networking code anywhere in the keyboard: it does not connect to our servers, to Apple's, or to anyone else's. It has no way to send your typing - or anything else - off your phone.

What Full Access does not do: the ToText Keyboard never reads what is already sitting in the field you're typing into. It writes into that field - the characters you tap, a space, a new line, a deleted character when you tap delete, and the words you dictate - but it never reads any of that back, and it does not log, store, or transmit your keystrokes. The single thing it ever reads from the field is whether that field wants a light or a dark keyboard, so it can match your appearance.

Without Full Access, the keyboard still types normally. Only the dictation pill is disabled; it shows "Full Access needed" instead of starting a recording.

Two ways to finish a dictation:

On-device handoff storage. Between the moment a dictation finishes and the moment the keyboard inserts it, the transcript is held briefly in shared storage on your iPhone - not visible outside the app and keyboard. It's deleted as soon as it's inserted, and if it's ever left behind (for example, if you switch away before the keyboard reopens), the app purges it automatically a short time later.

Third parties we rely on

To run the app, a small number of service providers briefly handle your data on our behalf, under contract and only to provide the service:

Crash reports, usage statistics and ad measurement use a few more service providers, described in the next section.

We do not use:

We use our own service usage and request counters to understand usage and reliability, as well as to enforce limits. These counters contain no recordings or text. We do not use them for advertising or cross-app tracking.

How we improve ToText and measure our ads

To fix bugs, improve the app and see which of our ads work, ToText uses service providers for the sharing options below. These options are separate from audio processing and the optional connected text library.

Your choice. Crash reports help us keep ToText stable, so they may be on from the start. Usage statistics and ad measurement run only if you turn them on. You can enable or turn off each one anytime in the app's Settings, under Privacy. Turning them off does not change app features, your Free allowance or your paid plan.

Our providers handle this data under agreements that protect it as this policy describes, including when it is processed outside your country. Ad platforms have their own ad settings; for X, see X's ad settings.

ToText in ChatGPT and Codex (optional)

This section applies only if you enable the connection. The app still works without it. This release shares an existing text library; it does not offer new audio uploads or transcription from ChatGPT.

How sharing works

In the ToText app, open Settings > ChatGPT, read and accept the consent screen, and sign in with Apple. The connection creates a separate account and copies eligible completed recording text to our servers. Add ToText in a supported ChatGPT or Codex host and use the same Apple account to reach that cloud copy. Sharing runs while ToText is open and connected to the network; it is not an immediate, offline or always-running background delivery guarantee. After a successful sync, the assistant can reach the cloud copy even when the phone is off. Changes made through the assistant return to the app on its next successful sync.

Data used for the connection

What the assistant receives and can change

For a request about your library, ToText returns relevant search titles, recording links, short excerpts and passage times; recording details, summaries, tags and tasks; paginated transcript segments and speaker labels; or connection status, plan, remaining-minute counters, last sync, shared count and a plans link. Status can distinguish a personal library from the synthetic reviewer demo and state that uploads are unavailable. Legacy upload status can be returned for existing links. Tools do not return your sign-in profile, internal account identifier, access tokens or technical logs.

At your request, the assistant can rename recordings, change tags or favorites, rewrite summaries, and add, edit, complete, reopen or delete tasks. It cannot delete recordings or create new audio upload links in this release. These edits are stored and sync back to the phone. We receive the tool request needed for the action, not your whole conversation; search words are used for the answer and are not kept as search history. Optional host hints about locale, approximate location, device or conversation identifiers are ignored by library tools.

Returned content becomes part of your conversation with OpenAI. OpenAI handles it under its own privacy policy, terms and your account settings, including applicable history, memory and model-improvement choices. Deleting the ToText cloud copy does not delete content OpenAI already received; manage those conversations in ChatGPT or Codex separately.

Purpose, providers and location

We use connection data to provide the library access and edits you request, keep libraries separate, record consent, verify plans, prevent abuse and troubleshoot reliability. We do not sell it, use it for advertising or behavioral profiling, or use the cloud library to train our own AI models.

AWS stores the cloud library in Frankfurt, Germany, encrypted in transit and at rest. Auth0 operates the connection identity and sign-in in its United States region, including Apple identifiers, sign-in profiles and authentication metadata. Its hosted sign-in uses necessary cookies to maintain authentication and single sign-on; this can remember the last signed-in account. Apple handles Sign in with Apple. OpenAI receives the library content requested by its tools. These services can process information outside your country; the US and your country may provide different data protections. Auth0's handling is described in its data-processing information and Okta privacy policy. The optional connection does not send new audio to the app's speech-to-text or AI providers.

Share only content you have the right to share, including permission from other people where needed. Do not share protected health information, payment-card data, government identifiers, passwords, API keys or other authentication secrets through this connection. OpenAI's restricted-data rules apply; consent does not waive them. The connection is not a medical-record service and does not guarantee that prohibited information is automatically detected or removed.

Retention and deletion

You can review and correct shared text in ToText and through supported assistant tools, withdraw sharing consent by disconnecting and deleting, or contact us about access, export or deletion. Disconnect the app in each host to stop that host's access. Removing access cannot retract content already received by the host. The reviewer demo contains only invented sample recordings and is separate from personal libraries. This connection is not intended for children under 13.

Subscriptions and payments

ToText offers a free tier and two paid subscriptions (Basic and Pro). All purchases are handled by Apple's in-app purchase system. We never see your credit card or your Apple ID.

When the app needs to confirm your tier - for example, to apply your paid quota - it asks Apple's StoreKit framework for a signed receipt and sends it to our server only to be checked. We verify the signature, read out the tier, and discard the receipt itself. We do not store the receipt.

We do keep one small anti-fraud record per subscription, so that a single receipt copied onto many devices doesn't go unnoticed. It contains Apple's transaction ID for that subscription, the one-way hashed device IDs that have presented it, and the first and last time we saw it. That's all it contains: no name, no email, no billing details, no card number, and none of your recordings or text. It becomes eligible for asynchronous deletion about 30 days after the subscription expires (about a year for a one-off, non-expiring purchase).

Connected accounts additionally keep the verified plan and expiry and a one-way proof reference to prevent reuse across connection accounts, as described in the optional connection section. The signed receipt is not stored there.

To manage or cancel your subscription, open iOS Settings → your name → Subscriptions, the same as any other app.

Feedback and support

Normal use of ToText never asks you for a way to reach you. When you choose to write to us, the app offers two routes in Settings → Help & feedback, and they are deliberately different:

The routes land in support inboxes operated for us by our email providers and are kept there like other correspondence for as long as we need them to handle the request and keep a record of what was agreed. To have an email support conversation deleted, write to us from the same address and we will delete the thread. Because feedback without contact details is not linked to a name or reply address, we generally cannot identify a particular message as yours or delete it on request. If you put identifying information in the message despite the warning, that information will be present in the email we receive.

Security

Your rights (GDPR and CCPA)

App use without the optional connection gives us no sign-in name, email or account. The connection's separate library and profile, and your choices about them, are described above. If you contact support by email, or type identifying information into optional feedback despite the warning, that support correspondence can identify you as described above. The following device-based rights and counters describe ordinary app processing, not the connection's cloud library:

About device-based monthly counters. For allowances based on a device, we hold under your device's anonymous ID the counter of minutes used in the current month, plus small daily request counters that expire by themselves within two days. Being precise about how that ID works matters here, because it decides what deletion is possible. Your phone generates a random identifier and sends it to us with every request - it is what tells our server the request is yours. We never store it. What we store is a one-way hash of it, salted with a secret only the server holds. So while a request is in front of us we can reach exactly your rows, which is how the erasure endpoint below is able to work at all - but we hold nothing that ties those rows to you as a person: no name, no email, no account. And we cannot run it backwards, from a row to a device or from an email address to a row. That is the honest obstacle to deleting by email: not that the rows are unreachable, but that we have no way to know which rows are yours. We would have to ask you to hand us your device's identifier, which would mean giving up the anonymity that is the whole point. Write to company@lovelaceloom.com if you want to talk it through and we will explain exactly what is held.

When you choose Settings → Delete all my data, the app removes local content, attempts to clear its iCloud content, and requests immediate deletion of the server rows that can be addressed safely: rows under your anonymous device partition (apart from the two counter families below) and processing jobs still known to the app. If iCloud or a network request fails, the app reports that cleanup is incomplete and retries the pending work on a later launch; it does not repeat the local database wipe or intentionally delete recordings created afterwards.

The current month's device-based minute counter and the daily rate-limit counters are retained so deletion cannot be used to reset free allowances or rate limits. Daily counters expire within two days. As the updated monthly-retention setting is deployed, device-based monthly counters written or updated by that version receive an expiry about two months after the month they count. Counters created before that setting, including ones not subsequently updated, may not have an automatic expiry; a later erasure request removes eligible legacy rows. We document that limitation rather than claiming every existing row already has an expiry.

Subscription-based metering is being introduced in stages. Until it is enabled, paid allowances remain device-based. When subscription-based metering is enabled and a verified subscription identifier is available, the monthly minute counter is kept under a secret-keyed, one-way hash of the subscription identifier Apple issues to your purchase (the same identifier the app already sends us inside the signed receipt). Devices presenting that same subscription then share one monthly allowance. That counter row holds only the minutes used, the last activity time and an expiry about two months after the month it counts. Because it is not filed under your device partition, Delete all my data does not remove it; expired rows are removed asynchronously. While a recording is being processed and during its short handover window, its job row links the hashed subscription-pool key and the hashed ID of the device that submitted it, so completion, failure or cancellation updates the correct allowance. Separately, the StoreKit anti-fraud record described above keeps Apple's subscription transaction identifier together with the hashed IDs of devices that presented it until that record expires. These technical links associate usage with a subscription and its pseudonymous devices. The counter contains no name, email, billing details, audio, transcript or summary and does not identify you to us as a person. If verified subscription identity is unavailable, device-based metering may still apply.

Some bounded rows use different database keys and cannot be reached by the device-partition erasure request. A Q&A transcript cache becomes inaccessible after 30 minutes; upload idempotency and any processing job no longer known to the app become inaccessible after about 24 hours; finished-result handover objects have a one-day lifecycle safety net; device and subscription minute counters receiving the updated retention setting get an expiry about two months after their month, subject to the rollout and legacy device-row limitations above; and the StoreKit anti-fraud observation record expires on the schedule described above. Physical removal by database TTL and storage lifecycle is asynchronous. IP-derived rate-limit counters cannot be linked to a device and stop being used within minutes to two days.

Deleting a live database row does not immediately remove its earlier versions from recovery backups; the backup window described above still applies.

If you enabled the optional connection, also use Settings > ChatGPT > Disconnect and delete to request removal of its cloud copy. The app's Delete all my data flow can request connection deletion too; if sign-in has expired, complete the separate Apple verification needed for deletion. The connection's asynchronous content cleanup and separate sign-in profile failure conditions described above still apply.

The IP-derived rate-limiting counters described under "What we collect about you" are a separate case. We store no mapping between them and your device ID, so a device erasure request cannot identify them. They hold only a request count, stop being used within minutes to two days, and are removed asynchronously afterwards.

Children

ToText is rated 4+ in the App Store but designed for general use. We do not knowingly collect data from children under 13 or direct the app at children. Ordinary app use has no age profile; the optional ChatGPT or Codex connection is not intended for children under 13. If a parent believes a child has shared information, contact us about deletion; device-counter removal is described above.

Changes to this policy

When something material changes, we'll update the version number and effective date at the top of this document. The current version always lives on this page, which is what the app opens when you tap Settings → About → Privacy Policy - so what you read in the app and what you read here are the same document.

Contact

Privacy questions, comments, deletion requests, or anything else:

company@lovelaceloom.com

ToText is operated by Eyal Ronen under the LovelaceLoom brand.