Privacy Policy
Last Updated: September 2026
1. Overview
MasteryExams ("we," "our," or "us") operates the website at masteryexams.com (the "Site"). This Privacy Policy explains what data we collect when you visit the Site, why we collect it, how we use it, and how you can control it. By using the Site you agree to the practices described here.
2. Data We Collect and Why
2a. Anonymous User Identifier
When you first visit the Site, we automatically create a random, anonymous identifier for your browser using Firebase Anonymous Authentication (a Google service). This identifier — called a Firebase UID — is a randomly generated string that contains no personal information and is not linked to your name, email address, or any external account. The UID is stored in your browser's local storage. The data linked to it is stored in Google Firebase (Cloud Firestore) and is used only to:
- Save your test scores, test history and progress totals ("My progress")
- Store questions you bookmark ("Saved Questions")
- Track questions you answered incorrectly ("My mistakes")
- Keep simple visit statistics: when you first visited, when you last visited, and how many visits and days you have been active
- Record your approximate location and browser language (see 2b and 2e below)
If you clear your browser's local storage or use a different browser, a new anonymous UID is created and no link to your previous data is retained.
2b. Approximate Location (Country & City)
To understand our audience at a regional level, we use a third-party service, api.country.is, to look up the approximate country, state/region, and city associated with your visit. This service determines location from your IP address on its servers. We never receive or store your IP address — only the resulting country, region, and city strings are saved to your Firestore user record. City-level results are approximate (mobile carriers and VPNs often resolve to a hub city). The lookup result is cached in your browser's local storage for seven days to avoid repeated requests.
2c. Test Performance Data
When you complete a test, we store the following in Firebase Firestore, linked only to your anonymous UID:
- Subject and topic of the test
- Score and total number of questions
- Accuracy percentage
- Time spent (in seconds)
- Timestamp (server-generated)
No personally identifiable information is attached to these records.
2d. Bookmarks and My mistakes
Questions you save or answer incorrectly are stored as arrays of question document IDs in your Firestore user record. Only the document IDs are stored — not the question text itself.
2e. Browser & Device Information
On session creation we record your browser's preferred language (navigator.language) and time zone (Intl.DateTimeFormat) in your Firestore user record to help us localise content in the future. We also keep simple visit statistics on that record: when your identifier was created, when you last visited, how many visits you have made and on how many different days, so we can see how many visitors return. No device identifiers are collected.
3. Google Analytics
We use Google Analytics 4 (GA4) — measurement ID G-75SDF85NMH — to understand aggregate traffic patterns such as page views, session duration, and which subjects are most popular. GA4 uses cookies and similar technologies to distinguish visitors. Google may process this data on servers outside your country. Analytics scripts are only loaded on production builds; they are not active when you visit a preview or development version of the Site.
- Cookies set by GA4:
_ga,_ga_*(expire after 2 years by default) - Opt out: Install the Google Analytics Opt-out Browser Add-on or use a privacy-focused browser extension.
- Google's privacy policy: policies.google.com/privacy
4. Google AdSense
We display advertisements served by Google AdSense (publisher ID: ca-pub-9450566881370913). Google AdSense uses cookies and device identifiers to serve ads that may be personalised to your interests based on your browsing activity across sites. We do not control the content of these ads or the data Google collects for this purpose.
- Manage ad personalisation: adssettings.google.com
- Google's ad privacy policy: policies.google.com/technologies/ads
- You can also opt out of interest-based advertising through the Digital Advertising Alliance or Your Online Choices (EU).
5. Firebase & Cloud Infrastructure
MasteryExams uses Google Firebase (Cloud Firestore, Firebase Authentication) to store question content and user records. Firebase is operated by Google LLC and may process data on servers in multiple regions. Data stored in Firestore is protected by server-side security rules that allow a user to read and write only their own records (matched by their anonymous UID). Questions are published with the site's pages, so no sign-in is needed to practise; browsers cannot read the question database directly.
Firebase privacy information: firebase.google.com/support/privacy
Bot protection: To keep automated traffic away from our database, we use Firebase App Check with Google reCAPTCHA v3. It runs invisibly in the background (there is no puzzle or checkbox) and analyses browser and interaction signals to tell real visitors from bots. reCAPTCHA may use cookies and send limited device and usage information to Google, which is subject to the Google Privacy Policy and Terms of Service.
6. Cookies & Local Storage
| Name / Key | Type | Purpose | Expiry |
|---|---|---|---|
| _ga, _ga_* | Cookie | Google Analytics visitor tracking | 2 years |
| mx:geo | LocalStorage | Cached approximate location (country, city) | 7 days |
| mx:user-synced | SessionStorage | Flag to avoid duplicate profile writes per tab | Tab close |
| mx:quiz:* | SessionStorage | In-progress test state (questions, answers, timer) | Tab close |
| mx:fc:progress, mx:fc:saved | LocalStorage | Flashcard review schedule (when each card is due again) and the flashcards you saved. Stays on your device; never sent to us | Until cleared |
| mx:activity, mx:streakBest | LocalStorage | Daily goal and streak: how many tests and flashcards you did each day. Stays on your device; never sent to us | Until cleared |
| mx-pages-*, mx-assets-*, mx-data-* | Cache Storage | Offline copies of site pages and question files, so the site (or the installed app) works without internet. Contains only public site content | Until cleared or the site updates |
| firebase:* | IndexedDB / LocalStorage | Firebase Auth token and anonymous UID | Until cleared |
You can clear all local storage and session storage via your browser's developer tools or privacy settings. Doing so will reset your anonymous UID and erase locally cached data.
7. Contact Form
If you submit a message via our contact page, we collect your name and email address solely to respond to your inquiry. This information is not added to any mailing list and is not shared with third parties.
8. Data Sharing
We do not sell, rent, or trade your data to any third party. Data is shared only with the service providers listed in this policy (Google Analytics, Google AdSense, Firebase) strictly for the purposes described above. We do not share data with advertisers beyond what Google AdSense's standard ad-serving process involves.
9. Children's Privacy
MasteryExams is intended for users who are at least 13 years old. We do not knowingly collect personal information from children under 13. If you believe a child under 13 has submitted personal data through our contact form, please contact us so we can delete it promptly.
10. Your Rights
Depending on your jurisdiction, you may have the right to:
- Request access to the data associated with your anonymous UID
- Request deletion of your data — contact us with the UID (visible in your browser's local storage under the
firebase:authUser:*key) and we will delete all Firestore records linked to it - Opt out of personalised advertising (see Section 4)
- Opt out of Google Analytics tracking (see Section 3)
Because we use only anonymous identifiers, we cannot link a request to a real person without the UID being provided by the requester.
11. Changes to This Policy
We may update this Privacy Policy as our services evolve or legal requirements change. The "Last Updated" date at the top of this page will reflect the most recent revision. Continued use of the Site after changes are posted constitutes acceptance of the updated policy.
For questions or data deletion requests regarding this policy, contact us at contact@masteryexams.com.