Practice apps for anything you want to learn
The mill that makes you good at anything.
A quizmill pack is a real practice app that finds your weak spots and keeps them coming back until they stick — for exams, school, work, kids, or plain curiosity. Free, offline, no sign-up.
Coming soon — type any topic and quizmill writes the whole pack for you.
The main event
It hunts your weak spots.
Most quiz apps give you a score and a shrug. quizmill keeps a map of every question you have answered and spends your time on the red squares.
Day one: half the pack unmet, and a dozen questions already red.
One wrong answer is enough. The question joins your mistake queue, and the count sits on the home screen until you clear it.
The review flow re-asks exactly the questions you have not rescued — oldest miss first, so a stale mistake cannot hide under today’s slips.
Sessions favour questions you have never seen. Once the set runs dry, the repeat round takes your mistakes and whatever you have not seen for longest.
One correct answer clears it — and so does getting any question on the same topic right, because what you were missing was the concept, not that sentence.
Try it
Can you get 5/5 first try?
The bundled Solar System pack, live — not a screenshot. Miss one and it goes into the mistake queue; here it comes straight back so you can watch the rescue in one sitting.
Who it's for
Whatever you're learning.
Same engine, wildly different packs.
Exams
GCSEs, A-levels, professional certs, driving theory. Set a pass mark and it estimates whether you are ready yet — honestly, with a confidence band.
School
Ten minutes on the bus, or before bed. Short sessions, no login, nothing collected.
Kids
Two-option questions, pictures instead of paragraphs, stickers to earn and an arcade to unlock.
Work
Onboarding, certs, product knowledge. Keep the pack in a private repo — it never leaves your control.
Languages
Verb tables, vocabulary, the grammar that never sticks. Drilling is exactly what languages want.
Just curious
No syllabus and no exam — just the things you would like to actually know.
Not just words
Questions can be pictures.
A pack can put an image on the question — read the stave, name the planet, spot the bone — or make the images the answers and ask you to pick one. That unlocks music, maps, anatomy, and the non-verbal reasoning that school entrance exams love.
Try both kinds here — this is the new Music Theory Practice pack, where 81 of the 102 questions are image-based.
No lock-in, ever
Your questions are yours.
We just built the mill.
Offline first, not offline “supported”
Every pack installs to your home screen and keeps a copy of itself on the device, so it opens on a plane, on the tube, or in a classroom with no signal. Your progress, streak and weak-spot map stay on the device — and sync, if you want it, goes to a database you own.
Packs are files you own
pack.json, questions.json, scenarios.json — three plain files you can read, copy and back up anywhere. Keep them private, share them with a class, carry them on a USB stick. Anything you generate here you can download and run yourself, forever, with no part of us involved.
We make the engine and the registry
That is the whole business: a good practice engine, and a registry to find packs worth practising. Not your data, not your attention, not a subscription to your own revision notes. Delete your account — there isn't one — and your packs still run.
Sync without an account
Your progress, in a database you own.
Practise on the phone at breakfast and the laptop at night, or let a parent see how the revision is going — with the history saved to your own free Cloudflare account, not ours. Under the hood it's a small database that belongs to you, on a free plan with room to spare.
A key, not an account
No email, no password, no sign-up flow. The app generates a key locally; type it on another device and the two are linked — like a wifi password for your practice history. The server never stores the key itself, only a scrambled fingerprint of it.
Free, and it stays up
- 100k syncs a day
- 100k answers saved a day
- 5 GB of space
- £0 — and it never expires
Orders of magnitude more than practice generates — and nothing expires while you are not looking, so the pack you pick up after the summer holidays still has its history.
And the app is yours to host
A pack app is just a folder of files, so it can live on your own free Cloudflare website — your address, your account. It works the same on GitHub Pages, Netlify, or a USB stick.
One sync database quietly serves every pack you own.
Set up quizmill sync on my own Cloudflare account and deploy this pack to Pages.
That is the whole instruction. The step-by-step guide ships with the project, so a coding agent — or a technical friend — can do it in about two minutes. You never touch a dashboard, and none of it belongs to us.
The registry
Find a pack. Or publish yours.
Any GitHub repo with a valid pack is installable by anyone, private repos included. Write a good pack once and everyone gets to practise it.
« find one, run one, publish one »
npx quizmill list
npx quizmill run quizmill/pack-world-capitals
npx quizmill validate my-topic && git pushSwap packs like cartridges
Every pack becomes its own app.
Name, icon, colour and categories all come from the pack itself — and you never reinstall to change subject. The app has a pack shelf: browse the directory from inside it, insert a pack with one tap, eject it, swap back. Progress is kept per pack, so switching costs nothing.
Three ways in
However you like to work.
Run a published pack
Pick one from the directory and start practising in a minute.
- Every pack is a full app — weak spots, stickers, charts
- Works on your phone, offline, free
- One command if you like terminals, none if you don't
Write your own
A pack is a folder of files. Write it, or hand it to your coding agent.
npx quizmill new my-topicand edit the JSON- The validator is the contract — agents loop until it's clean
- Nothing leaves your computer unless you publish it
Type a topic
Say what you want to learn and quizmill writes the whole pack — categories, questions, explanations — then opens it as your app.
- Every question checked before it ships
- A guided step-by-step builder for when details matter
- Your topic, your level, your app — in about a minute
{
"schemaVersion": 2,
"id": "gcse-physics",
"title": "GCSE Physics",
"homeSubtitle": "Forces, waves, electricity.",
"themeColor": "#8b3dff",
"categories": [
{ "key": "forces", "label": "Forces", "weight": 0.4 },
{ "key": "waves", "label": "Waves", "weight": 0.3 },
{ "key": "elec", "label": "Circuits", "weight": 0.3 }
]
}[
{
"id": "gcse-physics-forces-001",
"categoryKey": "forces",
"difficulty": 2,
"prompt": "A skydiver reaches terminal velocity. What is true?",
"options": [
{ "key": "A", "text": "Weight is greater than drag" },
{ "key": "B", "text": "Weight and drag are equal" },
{ "key": "C", "text": "Drag is greater than weight" },
{ "key": "D", "text": "There is no drag" }
],
"correctKey": "B",
"explanation": "Terminal velocity = zero resultant force.",
"reviewStatus": "reviewed"
}
][
{
"id": "bulb-brightness",
"title": "The dimming bulb",
"stem": "Two identical bulbs in series. A third is added.
What happens to the brightness of the first two, and why?"
}
]What are you bad at?
Pick a pack and start. It hunts what you get wrong until you don't — free, offline, and yours to keep.