How badge data is sourced, calculated and validated.
A technical reference for how 193.dk calculates each badge category — data sources, definitions and design decisions. Updated August 2026.
193.dk uses the 193 member states of the United Nations as the baseline definition of countries. This is the most widely recognised, stable and neutral definition available. Each country appears exactly once in our taxonomy, assigned to a single continent following a modified UN M49 standard:
Territories (76 destinations) are tracked separately and never counted as countries.
We use 148,940,000 km² as Earth’s total land area (CIA World Factbook reference, including Antarctica). Our dataset covers approximately 146 million km² — 98.1% of the denominator — because the dataset includes Antarctica as a trackable territory.
Country areas are sourced from the World Bank land area indicator (AG.LND.TOTL.K2). Two adjustments are applied:
Territory areas are added when a territory is marked as visited, but only if the area is not already included in the parent country’s World Bank figure. For example, Greenland is excluded from Denmark’s World Bank figure (40,000 km² covers only metropolitan Denmark), so its 2,166,086 km² is added separately. Scotland, Wales, Northern Ireland, Puerto Rico, Guam and other territories that are included in their parent country figures are excluded from the territory area sum to avoid double-counting.
All area figures in the territory table are land area, not total area (land + water).
We use a pragmatic broad classification aligned with the Köppen-Geiger A–E climate groups, stored as human-readable strings (e.g. Tropical/Arid, Continental/Polar). Badge checks use string matching:
Tropical (96 countries)Arid or Desert (46 countries)A country can qualify for multiple climate badges (e.g. Australia qualifies for both Tropical Traveller and Desert Wanderer). This is intentional and reflects reality.
Climate strings are maintained in data/overrides/climates.json — a curated authoritative file that takes precedence over any generated data. It is based on CIA World Factbook climate descriptions mapped to our classification. 13 small island states and Caribbean nations that had no climate assigned were filled in August 2026.
The ideal approach would be the Beck et al. Köppen-Geiger 1 km² raster aggregated per country, giving exact percentage coverage per climate zone. This remains a future improvement.
193.dk tracks 36 standard UTC offsets from UTC−11 to UTC+14. Two offsets are excluded:
Each country and territory is mapped to one or more UTC offsets. Visiting the USA as a country gives UTC−5 to UTC−8 (mainland only). Alaska adds UTC−9 and UTC−10; Hawaii adds UTC−10 — both must be marked separately as territories to count toward timezone badges.
We track primary official or administrative languages per country — not all constitutionally recognised languages. The distinction matters for countries with large numbers of official languages:
The badge text says “unique languages tracked across the 193 countries” — deliberately worded to reflect what we actually track, not what is constitutionally official. The current dataset covers 108 unique language strings.
Language data is maintained in data/overrides/languages.json — an authoritative curated file based on CIA World Factbook official language listings, adjusted per the policy decisions above.
Counts are sourced manually from the UNESCO World Heritage Centre State Parties page after the annual World Heritage Committee session (typically held in July). The UNESCO website blocks automated API access.
Transnational sites (shared between two or more countries, e.g. the Wadden Sea shared by Germany, Denmark and the Netherlands) are counted in each participating country. This means the sum of all country counts exceeds the UNESCO world total of 1,273. This is intentional: a traveller who visits Germany and the Wadden Sea has genuinely experienced that site.
The UNESCO Legend badge triggers at 1,000 sites — a fixed threshold that is not affected by the transnational counting policy.
August 2026, incorporating the 48th session in Busan, South Korea (July 2026). World total: 1,273 properties across 173 States Parties. Next update: August 2027.
GDP percentage badges (50/75/90% of World GDP) use the sum of all 193 countries in the 193.dk dataset as the denominator — not a published world total. This guarantees that a traveller who visits all 193 countries will always reach 100%, regardless of year-to-year data revisions.
Country GDP figures are sourced from the World Bank (NY.GDP.MKTP.CD) using the most recent non-empty value per country (mrnev=1). For countries with no World Bank data (North Korea, Syria, Afghanistan, Eritrea, South Sudan, Yemen), GDP is left as null and not included in the denominator.
The list follows World Bank nominal GDP (not IMF estimates or PPP-adjusted figures). Current list (World Bank 2024): United States, China, Germany, Japan, India, United Kingdom, France, Italy, Canada, Brazil. Updated annually.
Population data is sourced from the World Bank (SP.POP.TOTL). The world population denominator is fetched from the World Bank’s global aggregate and projected forward by 0.7% per year to account for the typical 1–2 year reporting lag.
Coastline lengths are sourced from the CIA World Factbook. Norway uses the 58,133 km figure, which includes fjords and is the standard internationally recognised figure for Norway’s coastline.
The 500,000 km Coastline badge is attainable: the sum of all 193 countries’ coastlines in our dataset is approximately 753,000 km.
A country with coastline = 0 is landlocked. The dataset contains exactly 43 landlocked UN member states — the correct canonical count.
Relative badges (Top 10%, Top 5%, Top 1%, Africa Specialist, Asia Specialist, Territory Champion, Coastline Champion) compare a profile against other 193.dk users. Key design decisions:
The Hidden Gem badge (visited a country visited by fewer than 5% of all users) uses all users as the denominator, not just verified users — because the intent is to identify truly rare destinations.
Country statistics are updated by a nightly batch process:
| Time | Script | Action |
|---|---|---|
| 00:00 | SQLite backup | 193.db → 193.db.bak |
| 02:00 | fetch-stats.js | Fetches World Bank API data, merges authoritative override files, validates, writes country-stats.json |
| 02:15 | generate-badge-lists.js | Regenerates badge country lists from badges.js definitions |
| 02:30 | compute-badges.js | Recalculates all user badges, diffs against database, sends notification emails |
The data pipeline includes a validation gate: if the generated data fails integrity checks (wrong country count, null climate, unexpected landlocked count, etc.), the job aborts without overwriting the production file. Curated data in data/overrides/ always takes precedence over API responses.