Privacy and data
For the Times Tables Games app. The printable worksheets have a page of their own.
The short version
- Nothing is collected or sent anywhere. The questions are made and checked in your browser.
- No account is needed, and there are no cookies, ads, analytics, or tracking.
- Progress and settings are saved only in your own browser, so the app remembers them next time. Clearing your browser's data for this site erases them.
- So it opens without a connection, the app keeps a copy of its own files in your browser. The copy holds nothing about your child.
- The app never asks for a child's name to save. The name typed onto a printed diploma certificate goes to the printed page and is never saved. The cartoon dog in the park game gets a name picked from a fixed list; nothing can be typed there.
- The page loads everything, fonts included, from this site and contacts no other site.
The following covers data and privacy in more detail.
What the app is
- A web page (HTML, CSS, and JavaScript) that asks times tables and division questions and keeps score in the browser.
- It is made and run by one person, Andrew McEachin (the site owner), not a company. Contact details are at the end of this page.
- The code that runs in the browser can be read there, as on any website. The full source code can be shared with a school or district that is reviewing the app.
Information collected
- None. The app and its owner collect no personal information from anyone, including students and children under 13. Like any website, the host receives the standard details of each page request (see Hosting below).
- The page has no forms that submit anywhere. Besides loading its own files from this site, it makes no network requests: no tracking pixels, beacons, or background calls.
- Because nothing is collected, nothing is shared with or sold to anyone. Progress belongs to the child, and it stays on their device.
- The app does no tracking, so a browser's Do Not Track setting changes nothing.
Signing in
- Signing in is not available. An optional sign-in for families, to keep progress across devices, is being built.
- The page already includes that feature's code, switched off. While it is off, nothing on the page offers sign-in, the page never contacts the sign-in server, and a sign-in kept in a browser from an earlier test is dropped. The page's security policy also tells the browser to refuse any connection to another site, so this holds even if the switch were turned on by mistake.
- This page will be updated before sign-in is offered, to say exactly what it stores, where, for how long, and how to delete it.
What is stored on the device
- Progress is saved in the browser's local storage under
ttg.progress.v1: for each fact (such as 4 × 7 or 28 ÷ 4; times tables and division facts are kept apart), how many times it was asked, how many times it was right (a pair found in Memory match counts as both), the current run of right answers, the fastest right answer, the latest time, and when it was last asked; plus a summary of each of the last 50 sessions (practice, speed test, review, a learn check, a diploma, a round of Balloon pop, a memory match, a two-player game (only the answers of the player picked to save), or a walk to the park, the tables, how many were asked, how many were right, the average time, and when), which tables have passed the learn check (the range used and when), the best speed test run for each combination of tables and settings (how many right, how many asked, the average time, and when) and the best Balloon pop round with the stopwatch on for each combination of tables and settings (the time, how many right, how many asked, and when), and which diplomas are earned (when, the range tested, whether mixed order was on, and the time taken). The dog game adds the dog's record: its name and coat, when they were last chosen, how many walks in all, how many times each street was walked, when it was last walked, and the best stars there, which dog friends were met, how many bones were found, and, for each challenge on the map finished at least once (the empty lot, where the dog's house is built, and Splash Pond, where the dog swims with its friends), how many times and when last, and for the house the look picked (the wall color, the roof color, and what goes on top); a walk's session summary also names the street, a challenge's names the challenge, and a Balloon pop round's names its speed (Calm, Steady, or Quick) and, with the stopwatch on, how long the round took. A session of division says so, and the Learn ticks, the speed test bests, and the diplomas are kept for times tables and for division separately. - The dog's name is picked from a fixed list of dog names; there is no way to type one. It is never put in a link.
- The tables last chosen are saved under
ttg.tables, and the settings (times tables or division, the multiply-by range (the answers, in division), the mixed order switch, whether answers are typed or chosen, the speed test length and cap, the Balloon pop speed and stopwatch switch, and the Less motion switch that the dog game, Balloon pop, and two players share) underttg.settings.v1. - The name typed onto a diploma certificate goes to the printed page only: it is not saved, and it is not put in the page's address.
- So the app opens with no connection after the first visit, the browser keeps a copy of the app's own files in its Cache Storage, named
ttg-offline-and a version: the page, the stylesheet, the scripts, the fonts and their licenses, this page, and the accessibility statement. They are the same files anyone can load from the site, and the copy holds nothing about the child. A small script,sw.js(a service worker), keeps the copy and lists every file in it. When the site changes, the next visit with a connection replaces the copy as a whole, and the change shows from the visit after that. - Saved progress stays on that device and is never sent anywhere. On a shared computer, the next person to open the app sees the same progress bars, unless each student has their own browser profile (as on school Chromebooks where students sign in to the device). The chart screen has a "Clear progress on this device" button that removes this app's progress, its settings, and its offline copy, and nothing else; the next visit with a connection makes a new copy. Clearing the browser's site data for timestables.hearthandwit.com also removes them.
- For five seconds after Start in Balloon pop, the tab's session storage holds that round's address under
ttg.balloon.arm, so a page that reloads in that moment keeps the round. It holds nothing about the child, is used once, and goes as soon as the child moves on or the tab closes. - No cookies are set.
Network requests
- All requests go to
timestables.hearthandwit.comover HTTPS, the app's own host, which serves nothing else: the page itself, one stylesheet, four scripts, and up to four font files, each fetched when text first needs it. - On the first visit, on the first visit after the site changes, and on the first visit after the copy was cleared or lost,
sw.jsalso fetches the app's own files in the background to keep the offline copy (above). Once the copy is there, opening the app needs no connection; with one, the browser only checks whethersw.jshas changed. - No third-party services are used: no font services, content delivery networks, analytics, or ads. The fonts (Andika and Atkinson Hyperlegible, both under the SIL Open Font License) are served from this site.
- The app plays no sound and never uses the microphone or camera.
Hosting
- The site is hosted on GitHub Pages, a service of GitHub, Inc.
- Like any web host, GitHub's servers receive the standard details of each request (such as IP address and browser type) to deliver the pages. GitHub's documentation says it logs visitor IP addresses for security purposes. See the GitHub General Privacy Statement.
- The site owner gets no visitor logs or analytics.
For schools and district IT
- Only
timestables.hearthandwit.comneeds to be allowed. The host serves the app and nothing else, so no path rule is needed. The app never needsttg-sync.andrew-mceachin.workers.dev(the switched-off sign-in's server), and districts can block it. - The offline copy is kept by a service worker limited to this host. Every file it holds, with its SHA-256, is listed in
/sw.js. It fetches only those files, from this site, and the page's security policy allows a worker from this site only. - Students use it without signing in. If the app's Google OAuth client (
677374343800-u9t4q3tmeqc475ifqg7su50vkam3mljs.apps.googleusercontent.com) appears in your Google Admin console, leave it blocked: nothing in the app needs it. - The app works as a plain link, for example a custom link or bookmark in the Clever Portal. It needs no single sign-on, rostering, or LTI integration.
- It works in current web browsers on computers, tablets, and phones. See the accessibility statement for what works with a keyboard and a screen reader, and how to report a problem.
- Printing a certificate uses the device's own print dialog. Nothing about printing goes to this site.
The move from the old address
- Until November 2026 the app was at
www.andrew-mceachin.com/times-tables-games/. That address now shows a one-time page that reads the progress, tables, and settings this app saved there, and opens the app here with them in the part of the link after the#, which browsers never send to any server. The app joins them with whatever is saved here, the link is tidied at once, and nothing is removed at the old address or read beyond those three items. - Printed diplomas from before the move name the old address. It keeps working for as long as it is kept.
Changes and contact
- If what the app collects, or how it is used, is going to change, this page will be updated before the change goes live, and the date below will change.
- Questions, or a problem to report: amceachin@gmail.com, or call (949) 436-9921. You will get a reply within five school days.
- By mail: Andrew McEachin, 250 El Camino Real, Ste 108, Tustin, CA 92780.