DATA / PUBLISHING

Population Statistics

Own project | Jul 2026 to present

Engagement typeOwn project
SectorOpen data / reference publishing

I bought a 25 year old domain that used to publish the World Gazetteer, and rebuilt the reference work it had stopped hosting in 2013. Wikipedia never stopped citing it. 8,804 links from Wikipedia articles still point at the domain, every one of them nofollow.

The situation

The World Gazetteer ran from 2001 to 2013 and was cited heavily across Wikipedia in five languages. Then it went dark and the citations became dead links, which is the normal end of the story.

Recovering the data was harder than buying the domain. The original site blocked archive crawlers, so the Internet Archive holds its error pages rather than its content. What survived was a single Wayback capture of a downloadable zip file from December 2005. As far as I can establish, that is the only public copy of the dataset, and everything the archive section of the site now serves is built from it.

So the project had two jobs. Honour thousands of citations that had been broken for over a decade, and build something current on the same domain without letting the two get confused with each other.

What I did

Sent the old citations somewhere true

Wikipedia cites the domain through wg.php?geo=NN URLs, where the number identifies a place in a scheme that no longer exists anywhere. 319 redirect rules now map those IDs onto archive pages. Around 70 of them were resolved by opening the citing Wikipedia article and working out from its subject which place the ID meant.

One rule governs all of it. A cited URL serves the 2005 figure it was cited for, dated and labelled as 2005, and never a current number. A citation that silently starts returning today’s population is worse than a dead link, because the reader has no way to tell that the ground moved under the reference.

Learned the same lesson seven times

Every serious data defect on this project came from joining two datasets on a place name instead of a code.

Merton, a Devon hamlet of 113 people, matched the London Borough of Merton and its 218,539, and the page reported a 1,934 fold increase. 58 pages published false growth because GeoNames and the 2005 Gazetteer draw settlement boundaries differently, so Oldham read as up 126% and Swansea as up 76%. County pages summed overlapping settlements and produced a national population of 73.4 million against a true 69.3 million. No American place had a 2005 comparison at all, because the modern file says “United States” and the 2005 file says “United States of America”, and the join returned nothing without ever erroring.

Fixing that last one raised 2005 coverage from 5,882 places to 12,826. I also reintroduced one of these bugs an hour after fixing it, through a second name lookup I had forgotten about.

Wrote the honesty rules into the build

A plausibility gate refuses any growth figure outside 0.4 to 2.5 times over twenty years. Outside the gate the page shows both numbers and says the boundaries differ, which is the true answer. New York City is deliberately left without a 2005 comparison, because the 2005 file says “New York” and the gate will not guess which one that is.

The same principle decided the amenity data. The Valuation Office rates many betting shops as ordinary shops, 3,838 of them against 6,251 on the Gambling Commission’s licensing register, so the register is what gets published and the rating list is kept as a cross check. Pharmacies are counted by neither, because most of them rate as shops and any figure would be a quiet undercount. Publishing nothing beats publishing a number that is wrong in a direction nobody can see.

Found the site competing with its own ghost

Three months in, Search Console showed almost no crawling of a 33,400 page site. The crawl stats explained it. Of 14,100 crawl requests between 17 July and 10 September, 13,771 went to ww38.population-statistics.com, a subdomain left over from the years the domain sat parked. 329 reached the real host.

Wildcard DNS and a catch all virtual host meant every subdomain served the entire site at a 200 status. Google remembered that hostname from the parked era, hit it at 2,300 requests a day during the launch, found 33,400 pages all pointing their canonical tag at a host it was barely visiting, and lost interest. 99% of those mirror responses were successful, which is exactly what kept the mirror looking legitimate. The whole month of Search Console data sat on the wrong hostname.

Any host that is not the bare domain now returns a 301 to the same path on it, as the first rule in the config. Two checks in the deploy smoke test assert it, so the regression cannot ship quietly.

Results

The inherited citations work. 484 live Wikipedia articles still cite the domain, mostly Spanish with smaller numbers in Portuguese, French, English and German, and around 471 of the Spanish ones now land on a specific archive page rather than a generic hub. In a 28 day Google Analytics window to 5 August 2026, Spanish Wikipedia was the second largest traffic source to the site.

That is worth stating precisely, because the links are nofollow and nofollow is widely treated as meaning a link does nothing. It passes no ranking signal. It still sends people. Those are different questions and they have different answers here.

The domain now holds 577 referring domains. Organic search results are pending rather than proven: the hostname problem was only found in September, and the honest position is that the site has not yet had a fair crawl to be judged on. I would rather say that than dress up a number.

Key takeaway

The join that fails silently is the one keyed on a name that was true in one dataset’s era and not in the other’s. Every defect on this project was that same bug wearing a different costume, and every one of them was found by somebody reading a figure and thinking it looked wrong. That is the least reliable quality control there is, and on a dataset this size it is what catches things.

The second lesson cost three months of crawl budget. Before diagnosing anything about content or links, check which hostname Google thinks it is talking to.