Privacy policy
Most of this policy is about the data we do not have, because of how the product is built. The parts where data does reach a server are set out specifically, including the one place your own rows can leave the browser.
Last updated 2026-11-04. Contact: [email protected].
The short version
- Your datasets are not uploaded. Files you open are parsed and stored by your own browser. We have no copy and cannot produce one.
- We hold an account record if you sign in: your email address, your display name and avatar if your provider supplies them, and which provider you used.
- The AI assistant is the exception, and it is a narrow one: asking it a question sends your column names and types, statistics computed over your rows, and three sample rows. Not the file. Nothing is sent until you ask.
- Analytics are off until you allow them. The default is denied, not "denied once you find the setting".
What stays in your browser
Every file you import — CSV, TSV, JSON — is read by the page and stored in your browser's own IndexedDB, the same place a web application keeps your drafts. Queries, transforms, cleaning, charts, statistics and forecasts all run as JavaScript in that tab.
There is no upload step because there is no server-side copy to upload to. Clear your browser's site data and the dataset is gone; nobody has to be asked to delete it. This also means we cannot recover it for you.
What we store, and why
Your account
If you sign in, an account record is created on our behalf by Supabase, which hosts our database and authentication. It holds your email address, a display name and avatar URL where your sign-in provider gives them, which provider you used, your plan tier, and the dates the record was created and last changed. If you sign in with Google or GitHub, we receive those details from them; we never see your password for those services.
You can use Malytics without an account. Signing in is what makes saving, syncing and paid features possible.
Dashboards you save
Saving a dashboard stores its document: the layout, which charts and tiles exist, which columns and measures they refer to, and any text you have typed into it. It refers to your datasets by name. It does not contain your rows — those stay in your browser — so a dashboard opened on a machine without the data shows its structure and empty states.
The one way your rows reach a file is Export with data, which deliberately embeds them so the dashboard opens for someone who does not have the dataset. That produces a download on your machine. It is not sent to us.
Billing
Paid plans are handled by Stripe. Card details are entered on Stripe's own pages and never reach us or our servers — we store an invoice record: amount, currency, status, dates and Stripe's identifiers, so your billing history can be shown to you.
We record which email addresses have consented to hear from us, which messages were sent, and whether they were delivered, opened or bounced. Every message carries an unsubscribe link, and unsubscribing is honoured for all non-essential email. Messages about your account itself — a receipt, a password reset, a notice of change — are sent regardless, because they are part of providing the service.
Usage and analytics
Two things measure use, and both are off until you allow them.
- Our own records. A page view, a click on a named control, a sign-up or sign-in, and how long a visit lasted — stored against a random session identifier, not against you. Paths are recorded with the query string already stripped.
- Google Analytics (measurement ID
G-JD30RKK22T), which places cookies and receives the same kind of page-level information.
Both sit behind Google Consent Mode, which this site sets to denied before the analytics script is given any chance to run — not after. Until you choose otherwise, analytics and marketing storage are denied. You can change that decision at any time from the privacy controls in the app, and changing it takes effect immediately.
Abuse prevention
Cloudflare Turnstile protects the AI proxy and the URL-reading feature from automated abuse. It is a privacy-preserving alternative to a CAPTCHA and does not track you across sites.
Hosting
The site is served by Cloudflare Pages, and our database and authentication are hosted by Supabase. Both keep operational logs, including IP addresses, for security and reliability. We do not use those logs to build a profile of you.
The AI assistant — the one place your data can leave
When you ask the assistant a question about a loaded dataset, the request contains: your column names and types, the number of rows and columns, statistics computed over your rows (counts, ranges, averages, the most common values) for up to the first twenty columns, and the first three rows cut to their first six columns — labelled in the request itself as illustrating shape rather than as evidence. Your question goes with it. The file does not.
On a large dataset those statistics are computed from an evenly-spaced sample rather than every row, and the assistant is told to say so rather than present an estimate as exact.
You can check all of this yourself: open your browser's network tab and read the request. Because the analysis runs on your machine, the evidence is on your machine too.
Nothing is sent until you ask a question. Figures the assistant has already worked out may appear again in later turns of the same conversation.
Requests go through our proxy to the model provider, which processes them under its own terms. If that is more than you want to share, you can bring your own API key, in which case your requests go to the provider you have chosen — or you can leave the AI features alone. Everything else in Malytics works without them.
Your conversation history with the assistant is stored per account and is visible only to you.
Cookies and local storage
Malytics uses your browser's storage for things it cannot work without: your session so you stay signed in, your datasets, your preferences and your consent decision. These are not advertising cookies and are not shared with anyone. Google Analytics sets its own cookies, and only once you have allowed analytics.
What we do not do
- We do not sell your personal information, and we do not share it with advertisers or data brokers.
- We do not read your datasets. We are not able to — they are not on our servers.
- We do not use your data to train models.
- We do not run advertising or remarketing tags on this site.
Your rights
You can ask for a copy of what we hold about you, ask us to correct it, or ask us to delete it. Deleting your account removes your account record and the dashboards saved against it; anything still in your browser is yours to clear, and clearing your site data does it. Invoice records are kept where we are required to keep them for tax and accounting purposes.
Depending on where you live you may also have the right to object to processing, to restrict it, to receive your data in a portable form, and to complain to your national data protection authority. To exercise any of these, email [email protected].
How long we keep things
Account records and saved dashboards are kept while your account exists. Analytics records are kept in aggregate for product decisions. Email delivery records are kept so we can honour an unsubscribe and show that we did. Invoices are kept for the period the law requires.
Children
Malytics is not intended for children under 16, and we do not knowingly create accounts for them.
Changes to this policy
This policy describes how the software behaves today. When the behaviour changes, this page changes with it and the date at the top moves. Where a change materially affects what leaves your browser, we will say so rather than let the date speak for itself.