About City Memory

A municipality is named. You click its shape on the map. Miss it and it comes back later in the round, until you stop missing it.

Why it exists

Belgium has 565 municipalities. Most people who live here can place a few dozen and guess at the rest. There is no trick to learning them — you have to meet each one repeatedly, get it wrong, and meet it again — which is exactly the kind of thing software is good at arranging.

So the game is spaced repetition with a map instead of flashcards. Two correct clicks in a row retire a municipality for the round; a miss puts it back a few prompts later. Your progress is kept in your own browser, per NIS code, and you can export it as JSON.

Where the data comes from

Boundaries and names are an extract of OpenStreetMap, taken on 2026-09-20, filtered to Belgian admin_level=8 areas that carry a NIS code. Names in Dutch, French and German come from OSM's own name tags, from Wikidata where OSM is silent, and from a small hand-kept override file where both are wrong.

The display rule is the one the country uses: the local official name first — Dutch in Flanders, French in Wallonia, German in the German-speaking Community — with the other language second, and both equally in Brussels.

None of this is authoritative. It is OpenStreetMap, which means it is what mappers have recorded, and it can lag a merger or carry a mistake. Where it matters, check with the Belgian statistical office.

The API

The same data is published as a free public API — names, NIS codes, centroids, surface areas, which municipalities border which, and boundaries as GeoJSON. No key, no quota. If you build something with it, it cost nothing and that is the point.

Who runs it

City Memory is run by one person in Belgium, as a side project. The legal notice carries the formal contact details.

The source is on GitHub under the MIT licence. Corrections to the map data are better sent to OpenStreetMap than to me — fix it there and it reaches everyone, including this site at the next rebuild.