zetamaxsign in

About — Zetamax · v1.2 · updated 2026-05-25

Mental-math drill, kept lean.

Two minutes. Open the page, drill, see how you did. Zetamac-compatible by default — same operand ranges, same auto-submit, same instant feel. Practice and Competitive share one engine; only what happens after the round differs.

Round length2:00120s, ± 2s tolerance
Sign-inoptionalPractice = none · Competitive = Google
Storageyour devicelocalStorage1
Costfreeno paid tier

Practice

Local-only mode. The drill, with nothing after.

No sign-in, no backend. Your runs save to this device's localStorage. Stats are computed locally and live on the same device.

Competitive

Same engine, three flavours of post-round wrap.

Friend leaderboards on top of the same drill engine. Three flavours:

Rankedelo · margin-aware
every round counts. Server-issued seed, server-validated score, ELO updates per round with margin-aware math (a 47-30 win is bigger than 47-46).
Dailyall-time mean
one shared puzzle per day, one shot, leaderboard ranks the all-time mean. Reload mid-round forfeits that day; you can backfill past days you missed.
Leaguesshare url
share a URL, friends join, rank against just them. Open by default — no approval queue, anyone with the link is in.

Stats

Per-op accuracy, latency, trend, heatmap, focus.

Per-operation accuracy and latency, score trend across the last thirty rounds, a multiplication-fact heatmap, and a weak-pattern diagnostic that names the one thing you should drill next. Export to JSON or wipe at any time — it's your data.

How Learn works

Skill tags + pattern tags · empirical-bayes diagnostic · single Today's focus output.

Every problem you drill gets a skill tag (multi-carry addition, large multiplication) and zero or more pattern tags (by-9, near-square, doubles). Patterns trump skills — if a problem fits a known mental-math pattern, the pattern wins the attribution.2

After ~30 problems, the system starts looking for the tag that's consistently slow for you. Three guardrails keep it honest:

Log-transformed latencies
One eight-second blank can't dominate a tag's average — outliers stop being outliers in log space.
Empirical-Bayes shrinkage
Tags with few attempts get pulled toward your overall mean; tags with many attempts converge toward their raw average. No cliff at “I just hit 10 samples.”
Sample-size floors
30 problems total before the diagnostic wakes up; 10+ attempts on a specific tag before that tag is eligible. A tag is only flagged when the system is ≥70% confident it's genuinely slow versus your own baseline.

The result is a single Today's focus tag — the one weakness most worth drilling next. No top-3 dashboards; dashboards of deficits cause people to disengage. Just the next thing to work on.3

Where your data lives

Local stays local. Competitive scores go to the server.

Practice scores, lifetime totals, the multiplication heatmap, and the weak-pattern diagnostic all live in your browser's localStorage. Nothing about how you drill leaves your device. Competitive scores are saved to a server (so friends can see them on the leaderboard), but the per-tag diagnosis stays local.

Wipe everything from /me → Stats → Reset all stats, or export a JSON copy first.

Credit

Built by Thomas Ou. Inspired by Zetamac. Built to keep the keyboard feel intact while making the score stick.

Notes

  1. [1]Web Storage API · domain-scoped, persists across reloads, browser-imposed ~5 MB cap.
  2. [2]Attribution is versioned. When the tagging rules improve, prior rounds can be re-tagged without losing scores.
  3. [3]Late-round rushing is filtered — events from the last 10 seconds of a round don't count toward per-tag latency.