Privacy Policy

MailBalance is a single web page that runs entirely inside your browser. There is no server, no account, and no database. Nothing you connect to it is ever transmitted to us, because there is nowhere for it to be transmitted to.

Last updated: 21 September 2026

In one sentence

MailBalance asks Google for the sizes and headers of your emails, adds them up in your browser tab, shows you which senders and years are eating your storage, and stores that tally on your own device. It never reads a message body, never deletes anything, and never sends your data anywhere.

Who runs this

MailBalance is an independent tool published at mailbalance.emergence.md. It is not affiliated with, sponsored by, or endorsed by Google LLC.

Contact for privacy questions: privacy@mailbalance.emergence.md

What data MailBalance accesses

When you choose to sign in, MailBalance requests exactly one Google OAuth scope:

ScopeWhat it grantsWhy MailBalance needs it
https://www.googleapis.com/auth/gmail.metadata Read-only access to email metadata — labels, headers and message size. It does not grant access to message bodies or attachments. Message size is the entire product. Ranking your heaviest senders, labels and years is impossible without reading each message's size and headers.

This is the least permissive scope that can do the job. The broader gmail.readonly scope would also work technically, but it would grant access to the full content of every email — access MailBalance neither needs nor wants. No other scope is requested, now or conditionally.

Specifically, from each message MailBalance reads:

It does not request, receive, or store message bodies, attachments, recipient lists, or the Received: routing chain.

Where that data goes

Nowhere. The requests go from your browser directly to Google's API servers over HTTPS, and the responses come straight back to your browser tab. MailBalance has no backend, no API server, no analytics pipeline that touches your mail, and no third-party processor. Your email metadata is never seen by us or by anyone else.

The resulting index is written to your browser's local IndexedDB storage, on your own device, so that reopening the page does not force a full rescan. It holds the fields listed above for each message, your label names, and a running total of what you have cleaned up. Your OAuth access token is held in sessionStorage and disappears when you close the tab. Two preferences (which label you have marked as "keep", and whether to skip the Gmail deletion steps) are held in localStorage.

What stays on your device

The index is not tied to your Google sign-in. It stays in this browser after you close the tab or quit the browser, until you erase it. When MailBalance is opened again in the same browser, it shows that index straight away — read-only, without signing in — so you can pick up where you left off.

That means anyone who uses the same browser can see the senders, subjects and sizes it lists. They cannot reach your mailbox through it: refreshing the index requires signing in to Google again, and the sign-in token is discarded when the tab is closed.

On a shared or public computer, erase the index before you leave: choose "Sign out", then "Erase and sign out". Or use a private / incognito window, which discards the index when it is closed.

How to delete it

Because we hold nothing, there is no deletion request to send us and nothing for us to delete on your behalf.

Google API Services Limited Use disclosure

MailBalance's use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

In particular, MailBalance does not:

Site analytics

The site uses Cloudflare Web Analytics to count page views. It is cookieless, sets no identifiers, and collects no personal data — only aggregate page-level counts. It is entirely separate from the Gmail data path and can see nothing about your mailbox.

MailBalance sets no advertising or tracking cookies.

Children

MailBalance is not directed at children under 13 and does not knowingly collect data from them.

Changes to this policy

If this policy changes materially — in particular if a scope is ever added — the change will be published on this page with a new "last updated" date before it takes effect.