Privacy Policy
What leaves your device, and what never does.
Last updated: 16 August 2026
The short version: nothing you write is ever measured, and nothing about you is sold. No tracking pixels, no advertising, no cookies for any of it, and no profile of you anywhere. We do keep an anonymous count of which parts of the app get used — how many exports happen, how many documents are started — and you can switch that off in Settings. It never carries a title, a folder name or a sentence. Your writing is saved to your own device first and synced to our server only so you can reach it from another one.
1. Who is responsible
The controller of your personal data is GRANULARITYLABS - SANDBAKK, Carstenvegen 6B, 6017 Ålesund, Norway. Contact: support@minimalwriter.app.
2. What we hold, and why
| Your email address | So you can sign in and so we can reach you about your account or a change to the service. Legal basis: performance of our contract with you. |
|---|---|
| Your documents and folders | The text you write, its titles, its structure, its version history and its language. Held so it can sync between your devices. Legal basis: performance of our contract. |
| Your personal dictionary | Words you add to the spellchecker, so they follow you to another machine. Legal basis: performance of our contract. |
| Subscription state | Your plan, its status and its renewal date, sent to us by Paddle. We never see or store your card details — those stay with Paddle. Legal basis: performance of our contract, and our legal obligation to keep billing records. |
| Crash reports | Only when the app breaks, and only from the deployed app. Legal basis: our legitimate interest in a writing tool that does not lose your work. See section 4. |
| Anonymous usage counts | That an export happened, that a document was started — never which one, and never by whom. No account is attached and no identifier follows you between visits. Legal basis: our legitimate interest in knowing which parts of the app are worth building on. You can switch it off. See section 4. |
We do not ask for your name, your address, your phone number or your date of birth, and we do not build a profile of you. If you subscribe, the Paddle checkout collects the name and billing address that tax law requires — that goes to Paddle, not to us, and we never receive it.
We use your email address to confirm the account, to send one welcome message after you confirm it, to send a password reset link or confirm a change of address when you ask for one, and — if we ever need to — to reach you about the account itself, such as a payment that failed or something breaking. There is no mailing list, no newsletter and nothing to unsubscribe from, because we never signed you up to anything.
3. What stays on your device
Minimal Writer is local-first. Every document is written to your browser's own database (IndexedDB) before it is sent anywhere, and the app keeps working with no connection at all. A handful of preferences — your theme, your typeface, your writing mode, which document you had open — live in local storage on that device only and are never uploaded.
Spellchecking runs entirely on your device. We ship our own Hunspell checker in a background worker and serve the dictionaries from our own domain, rather than using the browser's built-in checker or a third-party CDN. Nothing you type is sent anywhere to be checked, and no one else learns which languages you write in.
4. Crash reports and usage statistics
When the app crashes we send a report to Sentry so it can be fixed. What goes out is deliberately narrow, and enforced in code rather than promised here:
- the error type, message and stack trace, and which browser it happened in;
- the page path — with the query string and the URL fragment stripped off;
- no user id, no email, no session replay, no performance tracing;
- no console output and no record of what you clicked or typed — those breadcrumbs are switched off at the source rather than filtered afterwards.
The one thing we cannot promise mechanically: an error thrown deep inside a library could quote the text it failed on. We treat any such report as a bug to fix at the source.
Separately, we count what the app is used for, through
Umami — analytics that sets no cookie,
stores no identifier that follows you between visits, and builds no profile. What is sent
is one page view and a short, fixed list of named events: a document was created, a file
was exported, the writing mode was changed, a plan was viewed. Some carry a value the app
itself chose, such as pdf or sentence.
Nothing you wrote is ever part of it — not a document title, not a folder name, not a word of the text, not the id of any document. That is enforced in code: a value long enough to be a sentence is discarded rather than shortened. It is also switched off entirely, without you asking, if your browser sends Do Not Track or Global Privacy Control.
You can turn it off yourself at any time in Settings → About → Usage statistics. It is a per-device setting and takes effect immediately.
5. Who processes data for us
| Supabase | Database, authentication and server functions. Hosted in
the EU (Ireland, eu-west-1). |
|---|---|
| Resend | Sends all our account email — confirmation, welcome, password reset and address changes. Resend sees the address the message goes to and the message itself; our account is on Resend's EU region, and open and click tracking are switched off, so nothing reports back whether or when you read one. Operated by Resend, Inc. — see Resend's privacy notice. |
| Cloudflare | Hosting and content delivery for the app itself. |
| Paddle | Payments, invoicing and tax, as Merchant of Record. Paddle is a controller in its own right for the payment — see Paddle's privacy notice. |
| Sentry | Crash reports only, as described above. Sent to Sentry's EU region (Germany). |
| Umami | Anonymous usage counts only, as described above, on Umami Cloud. Umami never receives an account, an email or anything you wrote. The statistics are not sold, and they are not used for anyone else's purposes. Operated by Umami Software, Inc. — see Umami's privacy notice and the suppliers it uses in turn. |
| Only if you choose "Sign in with Google". Otherwise Google is not involved at all. |
Some of these process data outside the EEA. Where they do, transfers rely on the European Commission's Standard Contractual Clauses or an adequacy decision. We do not sell personal data, and we never have.
6. How long we keep it
Your documents stay until you delete them or delete your account. Version-history snapshots thin out over time automatically: recent ones are kept in full, older ones are reduced to one a day, and a document keeps a capped number in total.
Deleting your account removes your documents, folders, snapshots, dictionary and profile from our servers. Billing records that we are legally required to keep stay with Paddle for as long as tax law requires.
7. Cookies
The app sets no advertising cookies and no analytics cookies, so there is no consent banner — the usage counts in section 4 are deliberately cookieless for exactly this reason. Signing in stores an authentication token in your browser so you stay signed in, and your settings are kept in local storage on that device; both are strictly necessary to provide the service you asked for. The Paddle checkout, when you open it, sets its own cookies for the payment; those are covered by Paddle's notice.
8. Your rights
If you are in the EEA or the UK you can ask for a copy of your data, ask us to correct it, ask us to delete it, object to processing based on legitimate interest, or ask for it in a portable form. Two of those you can do yourself, right now, without asking:
- Portability — export any document to Markdown from the app. It is free, open, and never behind a plan.
- Erasure — delete your account from Account settings. It is immediate and permanent.
For anything else, email support@minimalwriter.app. You can also complain to your data protection authority — in Norway, Datatilsynet.
If you live in the United States, including California: we do not sell your personal information, and we do not share it for cross-context behavioural advertising. We have never done so, and there is nothing in this app built to.
9. Changes
If this policy changes in a way that affects you, we will say so by email or in the app before it takes effect. The date at the top always says when it was last revised.