Wanderwort
An atlas of how words travelled between languages. Type a word and watch where it has been: Wanderwort turns the etymologies Wiktionary editors write for thirteen European languages into ordered routes, draws them across a map, and keeps every doubt visible. Ukrainian цукор “sugar” starts in Sanskrit śárkarā and reaches Ukrainian through Middle Persian, Arabic, Italian, German and Polish
- Problem — Wiktionary knows where most European words came from, but it tells it as prose spread over separate entries: “from Middle Dutch, from Old French, from Medieval Latin, from Arabic…”. Nobody sees the journey
- Insight — A word’s history is a route. Drawn on a map, with its doubts left in, it becomes something people want to look at and share
- Solution — An atlas of 247,476 word journeys into 13 European languages, rebuilt step by step from Wiktionary, each step graded for certainty and backed by a quoted source
- Outcome — Live at wanderwort.net since October 2026. Mobile Lighthouse 98 on the home, journey and Explore pages; accessibility, SEO and best practices 100. Usage not measured yet
Etymologies exist; journeys do not
Wiktionary is one of the largest open etymological sources, and it is written as sentences with small templates (“borrowed from Italian caffè”). A route that crosses languages is spread over several entries: Dutch sjaal ends at English shawl, and only the English entry carries the route further back. Reading one etymology tells you one step; nobody follows the whole chain, and nothing shows where the sources disagree.
The audience is curious readers and language learners, not linguists. They need the route at a glance and the evidence one click away, and they need to know when a step is a guess.
The home page: the atlas fills the screen and the interface almost disappears
Designed and directed by me, built with an AI pair
I chose the subject, the name, the thirteen languages and the rule that shapes everything: no step is invented, and doubt stays visible. I set the visual direction in Figma — seven hero variants, each grounded in a real reference, from which I picked “Atlas scene” — and reviewed the screens round after round.
I work with Claude Code as a pair: I set the brief and the constraints, it drafts, and nothing lands until I accept it. That covers the Python pipeline, the React app, the nginx and Coolify deployment, the Figma work through the plugin bridge and the review passes.
No step is invented and no AI decides an etymology. When the source is unsure, the route says so
A pipeline that keeps its doubts
The pipeline reads the kaikki.org extraction of Wiktionary, puts each word’s steps in order, and joins routes across languages. Every step keeps its witness — the entry that states it — with a link and the quoted sentence. Each route is graded: stated step by step, order inferred from prose, hedged (“probably”), contested (sources disagree, drawn as a fork) or open-ended (the oldest step is uncertain). Language positions come from Glottolog; reconstructed proto-languages have no single place and are drawn as hatched homeland areas.
The result is baked into static JSON — 331,147 words in all, including 83,671 that never travelled and “stayed home” — so the site needs no backend and the data lives on the server, outside the image.
Certainty is drawn, not coloured: the same five line styles on the map, the cards and the badges
Paper, ink and one blue line
The palette is warm paper, near-black ink and a single signal blue reserved for the route, the map’s selection and focus. Three typefaces with fixed roles: EB Garamond for headwords and every historical word form (always italic), GT America for the interface, Victor Mono for codes and counts.
The serif started as Cormorant. The October audit showed that its tall, offset accents look detached on exactly the words this site is about — café, śárkarā — so it was replaced by EB Garamond, which seats its diacritics and reads better at small sizes.
A journey opens like a dictionary entry: the headword, its meaning, one plain sentence, then the map
The map, the log, and everything around them
The map draws the route leg by leg as lifted arcs: a dot travels each leg, the stop it reaches pulses once, and the corner of the map shows the word’s real form at that stop — Arabic qahwa, Ottoman Turkish kahve, Italian caffè. The step log beside it is the accessible twin of the map: every stop numbered, with its form, date range and source. On phones, crowded stops keep only their number, matching the log.
Ukrainian цукор, all twelve steps: forms in their own scripts with transliteration, periods, and the kind of each step
Explore lists the 8,000 most-used words that travelled, grouped into corridors such as Latin everywhere, Arabic into Europe and Turkic & Ottoman. The cards read like index entries, with each route as a line of dots and language names; the map view is a flow map where each arc between two languages is as thick as the number of journeys that take it. Words you already know pairs a language you speak with one you are learning and lists the shared words and the false friends.
Explore: cards as index entries, routes as dots and names
The flow map: an arc per pair of languages, as thick as its traffic
Words you already know, for an English speaker learning Dutch
A typo leads somewhere: closeness and frequency rank the guess
Home, 390 px
Journey, 390 px
Reviewed and audited, not yet tested with users
All checks so far are expert reviews run as AI audit passes plus my own review rounds; none is a usability test. On 11 October 2026 six audits ran in parallel: security, UX and responsive, art direction, spacing and type system, performance, and code quality.
They found that the map re-rendered 1.3 MB of country outlines on every hover, which held the mobile Lighthouse score at 55 on the home page and 47 on a journey page. After clipping, memoising and moving the fonts in-house, all three main pages score 98 on mobile, with layout shift on Explore down from 0.96 to 0. axe-core reports no WCAG 2.2 AA violations on ten pages; the manual pass added a pause control for the moving hero, focus on page change and reflow at 320 px. The security audit found nothing critical; it led to one shared set of security headers, a privacy page, and session recordings that load only after consent. Raw language codes were replaced by names everywhere a visitor reads them.
Live, with the numbers it can stand behind
Wanderwort is live at wanderwort.net, with its own title and link preview for 8,002 journeys, a sitemap split by language and IndexNow submission. Visits are counted without cookies on my own Umami instance; Microsoft Clarity records sessions only for visitors who allow it.
What I cannot claim yet is that people use it or share it. The counts start now, and until there are numbers the case says “not measured”.

Live — wanderwort.net
What is still open
A moderated usability test of the first visit and the journey page. Hand curation of the home-page heroes: the review queue exists, nothing is approved yet. Known data limits: a word borrowed twice (Russian шоколад) can come out as one chain, a homograph can get the less famous route (English robot), and the false-friend pairing is a heuristic. The repository stays private because it holds the licensed GT America web fonts.
