Back
Fudoki

About

Browse every Japanese prefecture, municipality and prefectural capital, and every country, capital and major city in the world — then test yourself with multiple-choice and written quizzes.

Data sources

Every name, reading and capital here comes from a published source. Each list links back to it.

Prefectural capitals, regional groupings and English prefecture names were entered by hand and checked against each prefecture's official website, which is linked from every prefecture page.

English spellings for Japanese municipalities are generated from the official kana with Hepburn romanization, without macrons — Tokyo, not Tōkyō. A handful of names where the source writes a contracted sound with full-size kana, or where a vowel sequence is not actually a long vowel (Matsuura, Katsuura), are corrected from a list kept in the repository.

Why it exists

Most geography quizzes tell you how many you got right, but not what you have left. Fudoki starts from the whole set — 47 prefectures, 1,747 municipalities, every country with a capital — shows it to you as a list first, and then reports your progress as how much of that set you have covered. A score out of ten is forgettable; 122 of 1,747 is a map of where to go next.

How it is built

Bun, Hono and hono/jsx on Cloudflare Workers, with the dataset in D1. Pages are server-rendered in full; JavaScript is added afterwards only to filter and sort what is already in the page, so the lists work without it. The quiz and the account screens are React islands. Styling is Tailwind, checks are Biome, TypeScript and Vitest.

Why it is built this way

The quiz never asks the database for a random row. Drawing one would scan the whole population on every question, and the free tier is measured in rows read per day. Instead the question pools are precomputed at build time with dense positions, so a question costs a fixed handful of primary-key lookups no matter how large the set is. For the same reason the quiz keeps no state in the URL: filters in a query string multiply into URLs that crawlers follow forever.