Times tables, one diary entry at a time

My eight-year-old needs to know her times tables by heart. I built her a game around what the research says actually makes math facts stick, then dressed it up as the doodle diary she’d want to write in every day.

The diary’s home screen: a bubbly title, sticky notes counting facts colored in, days in a row, and stickers, and a big Write today’s entry button
The home screen on an iPad after three weeks of practice. Screenshots use a sample diary rather than hers.

Start with how facts stick

In the US, kids are expected to know every product of two one-digit numbers by the end of third grade. England goes further: its Year 4 check covers everything up to 12 × 12, with six seconds per question. I went up to 12 × 12. Before designing anything game-like, I read up on how math facts are learned. The research is unusually consistent, and it turned into five rules the game had to follow.

  • Recall, never recognizeEvery answer is typed. Multiple choice lets you eliminate and guess; pulling the answer out of memory is what makes it stick.
  • Little and oftenA day’s entry is about 20 questions, three to five minutes. Facts she knows come back at growing intervals instead of all at once.
  • Mostly winsNew or shaky facts are slotted in between ones she already knows, a technique called incremental rehearsal. Most questions should feel easy, and a few should stretch her.
  • Fix mistakes on the spotA miss shows the answer, a strategy, and a dot picture. Then she types it from memory with the answer covered, and the fact comes back twice more before the entry ends.
  • Speed matters, but there’s no clockKnowing a fact by heart means answering in about three seconds without counting. The game times every answer silently, because a visible countdown is one of the best-documented ways to make a kid anxious about math.
A practice question, 6 × 3, beside a large handmade number pad
Every answer goes through a big on-screen keypad, so the iPad keyboard never covers the question.
After a miss: 6 × 6 = 36 with the hint five 6s is 30, plus one more 6, and a dot array of five pink rows and one teal row
A miss becomes a small lesson: the answer, a strategy, and dots grouped in fives. Then she types it from memory.

Shrinking the mountain

A 12 × 12 chart has 144 facts, which sounds like a mountain. It isn’t. Teach turnarounds first (3 × 8 is the same as 8 × 3) and there are 78. Teach a handful of strategies in the right order and almost all of those can be worked out. What is left, the six facts where 6, 7 and 8 meet each other, is the part that genuinely has to be memorized.

The 144 facts from 1 × 1 to 12 × 12, colored by the strategy that unlocks each one, with turnarounds left blank1122334455667788991010111112121 × 1 = 1 · Rules11 × 2 = 2 · Rules21 × 3 = 3 · Rules31 × 4 = 4 · Rules41 × 5 = 5 · Rules51 × 6 = 6 · Rules61 × 7 = 7 · Rules71 × 8 = 8 · Rules81 × 9 = 9 · Rules91 × 10 = 10 · Rules101 × 11 = 11 · Rules111 × 12 = 12 · Rules122 × 1 is the turnaround of 1 × 2, so there’s nothing new to learn2 × 2 = 4 · Doubles and fives42 × 3 = 6 · Doubles and fives62 × 4 = 8 · Doubles and fives82 × 5 = 10 · Doubles and fives102 × 6 = 12 · Doubles and fives122 × 7 = 14 · Doubles and fives142 × 8 = 16 · Doubles and fives162 × 9 = 18 · Doubles and fives182 × 10 = 20 · Rules202 × 11 = 22 · Doubles and fives222 × 12 = 24 · Doubles and fives243 × 1 is the turnaround of 1 × 3, so there’s nothing new to learn3 × 2 is the turnaround of 2 × 3, so there’s nothing new to learn3 × 3 = 9 · Build from known93 × 4 = 12 · Build from known123 × 5 = 15 · Doubles and fives153 × 6 = 18 · Build from known183 × 7 = 21 · Build from known213 × 8 = 24 · Build from known243 × 9 = 27 · Pattern tricks273 × 10 = 30 · Rules303 × 11 = 33 · Pattern tricks333 × 12 = 36 · Build from known364 × 1 is the turnaround of 1 × 4, so there’s nothing new to learn4 × 2 is the turnaround of 2 × 4, so there’s nothing new to learn4 × 3 is the turnaround of 3 × 4, so there’s nothing new to learn4 × 4 = 16 · Build from known164 × 5 = 20 · Doubles and fives204 × 6 = 24 · Build from known244 × 7 = 28 · Build from known284 × 8 = 32 · Build from known324 × 9 = 36 · Pattern tricks364 × 10 = 40 · Rules404 × 11 = 44 · Pattern tricks444 × 12 = 48 · Build from known485 × 1 is the turnaround of 1 × 5, so there’s nothing new to learn5 × 2 is the turnaround of 2 × 5, so there’s nothing new to learn5 × 3 is the turnaround of 3 × 5, so there’s nothing new to learn5 × 4 is the turnaround of 4 × 5, so there’s nothing new to learn5 × 5 = 25 · Doubles and fives255 × 6 = 30 · Doubles and fives305 × 7 = 35 · Doubles and fives355 × 8 = 40 · Doubles and fives405 × 9 = 45 · Doubles and fives455 × 10 = 50 · Rules505 × 11 = 55 · Doubles and fives555 × 12 = 60 · Doubles and fives606 × 1 is the turnaround of 1 × 6, so there’s nothing new to learn6 × 2 is the turnaround of 2 × 6, so there’s nothing new to learn6 × 3 is the turnaround of 3 × 6, so there’s nothing new to learn6 × 4 is the turnaround of 4 × 6, so there’s nothing new to learn6 × 5 is the turnaround of 5 × 6, so there’s nothing new to learn6 × 6 = 36 · The final six366 × 7 = 42 · The final six426 × 8 = 48 · The final six486 × 9 = 54 · Pattern tricks546 × 10 = 60 · Rules606 × 11 = 66 · Pattern tricks666 × 12 = 72 · Build from known727 × 1 is the turnaround of 1 × 7, so there’s nothing new to learn7 × 2 is the turnaround of 2 × 7, so there’s nothing new to learn7 × 3 is the turnaround of 3 × 7, so there’s nothing new to learn7 × 4 is the turnaround of 4 × 7, so there’s nothing new to learn7 × 5 is the turnaround of 5 × 7, so there’s nothing new to learn7 × 6 is the turnaround of 6 × 7, so there’s nothing new to learn7 × 7 = 49 · The final six497 × 8 = 56 · The final six567 × 9 = 63 · Pattern tricks637 × 10 = 70 · Rules707 × 11 = 77 · Pattern tricks777 × 12 = 84 · Build from known848 × 1 is the turnaround of 1 × 8, so there’s nothing new to learn8 × 2 is the turnaround of 2 × 8, so there’s nothing new to learn8 × 3 is the turnaround of 3 × 8, so there’s nothing new to learn8 × 4 is the turnaround of 4 × 8, so there’s nothing new to learn8 × 5 is the turnaround of 5 × 8, so there’s nothing new to learn8 × 6 is the turnaround of 6 × 8, so there’s nothing new to learn8 × 7 is the turnaround of 7 × 8, so there’s nothing new to learn8 × 8 = 64 · The final six648 × 9 = 72 · Pattern tricks728 × 10 = 80 · Rules808 × 11 = 88 · Pattern tricks888 × 12 = 96 · Build from known969 × 1 is the turnaround of 1 × 9, so there’s nothing new to learn9 × 2 is the turnaround of 2 × 9, so there’s nothing new to learn9 × 3 is the turnaround of 3 × 9, so there’s nothing new to learn9 × 4 is the turnaround of 4 × 9, so there’s nothing new to learn9 × 5 is the turnaround of 5 × 9, so there’s nothing new to learn9 × 6 is the turnaround of 6 × 9, so there’s nothing new to learn9 × 7 is the turnaround of 7 × 9, so there’s nothing new to learn9 × 8 is the turnaround of 8 × 9, so there’s nothing new to learn9 × 9 = 81 · Pattern tricks819 × 10 = 90 · Rules909 × 11 = 99 · Pattern tricks999 × 12 = 108 · Pattern tricks10810 × 1 is the turnaround of 1 × 10, so there’s nothing new to learn10 × 2 is the turnaround of 2 × 10, so there’s nothing new to learn10 × 3 is the turnaround of 3 × 10, so there’s nothing new to learn10 × 4 is the turnaround of 4 × 10, so there’s nothing new to learn10 × 5 is the turnaround of 5 × 10, so there’s nothing new to learn10 × 6 is the turnaround of 6 × 10, so there’s nothing new to learn10 × 7 is the turnaround of 7 × 10, so there’s nothing new to learn10 × 8 is the turnaround of 8 × 10, so there’s nothing new to learn10 × 9 is the turnaround of 9 × 10, so there’s nothing new to learn10 × 10 = 100 · Rules10010 × 11 = 110 · Rules11010 × 12 = 120 · Rules12011 × 1 is the turnaround of 1 × 11, so there’s nothing new to learn11 × 2 is the turnaround of 2 × 11, so there’s nothing new to learn11 × 3 is the turnaround of 3 × 11, so there’s nothing new to learn11 × 4 is the turnaround of 4 × 11, so there’s nothing new to learn11 × 5 is the turnaround of 5 × 11, so there’s nothing new to learn11 × 6 is the turnaround of 6 × 11, so there’s nothing new to learn11 × 7 is the turnaround of 7 × 11, so there’s nothing new to learn11 × 8 is the turnaround of 8 × 11, so there’s nothing new to learn11 × 9 is the turnaround of 9 × 11, so there’s nothing new to learn11 × 10 is the turnaround of 10 × 11, so there’s nothing new to learn11 × 11 = 121 · Pattern tricks12111 × 12 = 132 · Pattern tricks13212 × 1 is the turnaround of 1 × 12, so there’s nothing new to learn12 × 2 is the turnaround of 2 × 12, so there’s nothing new to learn12 × 3 is the turnaround of 3 × 12, so there’s nothing new to learn12 × 4 is the turnaround of 4 × 12, so there’s nothing new to learn12 × 5 is the turnaround of 5 × 12, so there’s nothing new to learn12 × 6 is the turnaround of 6 × 12, so there’s nothing new to learn12 × 7 is the turnaround of 7 × 12, so there’s nothing new to learn12 × 8 is the turnaround of 8 × 12, so there’s nothing new to learn12 × 9 is the turnaround of 9 × 12, so there’s nothing new to learn12 × 10 is the turnaround of 10 × 12, so there’s nothing new to learn12 × 11 is the turnaround of 11 × 12, so there’s nothing new to learn12 × 12 = 144 · Build from known144
  1. 1. Rules23 facts×1 and ×10. Anything times 1 stays the same; times 10 puts a zero on the end.
  2. 2. Doubles and fives19 facts×2 and ×5. Double it; five of anything is half of ten of it.
  3. 3. Pattern tricks15 facts×9 and ×11. Nine is ten groups minus one; 11 × 7 is just the 7 said twice.
  4. 4. Build from known15 facts×3, ×4 and ×12. Double plus one more; double, then double again; ten plus two.
  5. 5. The final six6 facts6, 7 and 8 with each other. 6 × 6 through 8 × 8: five groups and a bit more, plus a rhyme or two.
  6. 144 on the chart, 78 once turnarounds are free, and 6 that are genuinely hard.
Every fact from 1 × 1 to 12 × 12, colored by the strategy that unlocks it and in the order the game teaches them. The lower half is left blank because turnarounds come free.

The game introduces facts in exactly this order, one table at a time, with each fact’s turnaround close behind. The ×1 and ×10 facts start out already inked in, so even the first session has easy wins to mix with the new material.

A diary that schedules itself

Under the doodles, every fact sits at one of six levels: blank, pencil sketch, inked, colored in, sparkly, and gold star. It’s a Leitner system. Pencil facts come back every session; the higher levels come back after one day, three days, a week, and three weeks.

Entry
About 20 questions
Review gaps
0, 1, 3, 7, and 21 days
Fast
2.5 to 5 seconds, tuned to her
In progress
At most 8 facts at once
Misses
Back 2 and 6 questions later
Check-ups
Every two weeks

A fact moves up only when she answers it correctly and fast on a day it’s due. A miss drops it back. Right but slow keeps it where it is, because slow usually means she counted her way there. “Fast” is calibrated to her: the game watches how long she takes on facts that need no thinking (×1 and ×10) and sets the bar a little above that, so slow typing isn’t mistaken for not knowing.

The pacing adapts too. When new facts come easily, they come quickly; after a miss, the next hard question waits until she has had a few easy ones. And if she answers the first four facts of a table fast on sight, the rest of that table is inked in right away and confirmed in reviews over the next few days. A kid who already knows her twos shouldn’t spend a week proving it.

I tested the engine on simulated students before she ever saw it. One who already knows every fact has all 144 colored in within a week and mastered within three. One who misses everything beyond ×1 and ×10 meets only a couple of new facts per session, and never has more than four in progress at a time.

The doodle page: a 12 × 12 grid of facts in gold, pink, teal, white, and dashed pencil, with the 6s, 7s, and 8s in the middle still blank
The doodle page is the schedule made visible. Three weeks in, the 6s, 7s, and 8s in the middle are the last facts still blank.

Making it hers

She’s deep into the Dork Diaries books (only on book two, so no spoilers), and the game borrows the look of a doodled-in diary: ruled paper, washi tape, bubbly lettering, and die-cut stickers. None of the books’ characters or art appear.

Each session is a diary entry. Fast answers get a comic-book burst like “SQUEEE!” or “Math star!”; slower ones get a quieter “Got it!” Finishing an entry writes a Dear Diary page in a dramatic, slightly silly first-person voice, built from what actually happened that day, and adds a sticker to the collection on the cover.

The small motivational choices mattered as much as the big ones. A streak survives one skipped day. The home screen counts facts colored in rather than facts mastered, because mastery takes several separate days and “0 mastered” is a crushing thing to see on day one.

A yellow comic-book starburst reading Math star! over the question card
Fast answers pop. Slower right answers get a smaller, calmer burst.
A Dear Diary page describing the session: facts that got sparkles, a fact that tried to trick her, and a 19-day streak
Every finished session writes a page of the diary and awards a sticker.

Built for an iPad

It’s a web app, installed from Safari with Add to Home Screen, so it opens full screen, works offline, and keeps its data like an app rather than a website. It draws its own keypad, because even inputmode="numeric" brings up the full iPad keyboard over half the screen. The rest was Safari housekeeping: no double-tap zoom, no long-press menus, no rubber-band scrolling, and layouts for both orientations. Guided Access, in the iPad’s accessibility settings, keeps it on the diary during practice time.

Keeping score

Progress is saved on the iPad first and then synced to a small Vercel Function backed by a Neon Postgres database. There are no accounts: a diary is opened with her name and a family PIN. The server never stores either one. It turns them into the diary’s ID with a keyed hash, turns away easy PINs like 1234, and rate-limits guesses. Saves are version-checked, and if two devices both changed the diary, the merge keeps whichever copy of each fact has more practice behind it.

Every answer is logged, which is what makes the grown-ups’ progress report possible: mastery over time, how far along each table is, a practice calendar, the trickiest facts, and two measures of retention. One counts how often mastered facts are still answered correctly when they come back for review a week or more later. The other is an explicit check-up: every two weeks, a diary entry starts with up to ten mastered facts she hasn’t practiced for at least a week.

The progress report: 56 of 144 facts mastered, 133 colored in, 100% remembered on re-tests, 19 diary days in a row, and a line chart of facts mastered over time
The progress report sits behind a press-and-hold grown-ups button, out of the way of small fingers.

Source and references