Security & privacy by design

Security.

freebmicalculatoronline.com is built to be as small and as honest a tool as possible. The security model follows from a single design choice: the site has no backend. Every number you compute is computed in your browser, on your device, and is never sent to us. This page lists exactly what that means, what we do on top of it, and where the limits of in-browser security still apply.

What we do

1. No backend. No database. No server-side state.

The site is generated as static HTML at build time and served from a global CDN. There is no application server, no API, no database, and no user account system. Your weight, height, age, gender, and waist circumference never leave your device. The only network requests made by the calculator itself are:

That is the entire attack surface. There is nothing to breach, no credentials to leak, no data to exfiltrate, because we never had it in the first place.

2. No third-party trackers by default

There is no Google Analytics, no Meta Pixel, no Hotjar, no Microsoft Clarity, no Mixpanel, no Segment — and no other analytics or retargeting script. The only third-party that can load is Google AdSense, which loads on every page. The cookie consent banner controls whether the ads shown are personalised (selected by our advertising partners using cookies in your browser) or non-personalised (contextual, with no tracking of your browsing history). The calculator and all on-site features work the same either way; the choice only affects the relevance of the ads you see.

The full list of cookies the site can set is in the Privacy Policy.

3. Strict security headers (every page)

The following headers are set on every response. They are configured for Cloudflare Pages (public/_headers), Vercel (vercel.json), and Netlify (netlify.toml) so the policy is the same regardless of where you deploy.

4. Cookies & consent

A localStorage.fbcoConsent:v1 key records whether you clicked Accept (personalised ads) or Decline (non-personalised ads) on the cookie banner. We don't use that value for tracking; we pass it to the ad network so it can decide which ad inventory to serve. The site itself never reads the value for any other purpose.

The site does not use any first-party analytics. We do not have access to your IP address beyond what the CDN log captures (which we never read and which Cloudflare rotates within 30 days).

5. Service worker is offline-only, never stores inputs

A service worker (/sw.js) is registered on HTTPS and localhost only. It caches the calculator shell and static assets so the page works offline, but it never caches form inputs, query parameters, or POST bodies. The worker's cache is also versioned; an updated deploy purges the old cache automatically.

6. Dependencies are minimal and pinned

The site uses Astro and Tailwind CSS, plus four small npm packages. The total JavaScript shipped to the browser is under 50 KB gzipped. There is no client framework runtime, no jQuery, no Lodash, no React, no Vue, no Svelte. Smaller surface area means fewer CVEs.

7. Dependencies are auditable

Every JavaScript file loaded by the page is part of the built bundle and contains no remote imports. The only external resources fetched are the self-hosted woff2 font files, served from the same origin.

What we don't do — and why it matters

Threat model — what this site is, and isn't, designed for

The security model above protects against:

It does not protect against:

Reporting a vulnerability

If you have found a security issue — XSS, an exposed endpoint, an information leak, anything — please email codemindsx@gmail.com with a clear description and a reproduction. We respond to legitimate reports within a few business days.

We do not run a paid bug-bounty program, but we credit reporters in the release notes for any responsible disclosure that leads to a fix.

Compliance summary

Related pages

Reviews

What people are saying.

No reviews yet for this page — be the first to leave one below.

Leave a review

Reviews are saved on this device only — your browser, your data. We don't run a server, so there is no global review feed.