Historical Country Code Changes — Renamed, Split, and Merged Countries

Track historical changes to ISO 3166-1 country codes including renamed countries, dissolved states, newly independent nations, and the 50-year reuse policy.

Historical

Detailed Explanation

Why Country Codes Change

ISO 3166-1 codes are updated when countries rename, merge, split, or gain independence. The ISO 3166 Maintenance Agency reviews requests and publishes updates in the ISO 3166-1 Newsletter.

Notable Historical Changes

Year Event Old Code New Code Notes
1990 German reunification DD (East) DE DD retired
1991 Soviet Union dissolves SU RU, UA, KZ, etc. 15 new codes
1993 Czechoslovakia splits CS CZ, SK CS later reused
1993 Yugoslavia breaks up YU SI, HR, BA, MK, RS, ME, XK Gradual
2003 Serbia and Montenegro CS (reused) RS, ME (2006) CS used for 3 years
2006 Montenegro independence ME Split from Serbia
2008 Kosovo declares independence XK User-assigned code
2011 South Sudan independence SS Split from Sudan
2018 Swaziland → Eswatini SZ SZ Code unchanged
2019 North Macedonia MK MK Code unchanged

The 50-Year Reuse Rule

When a country code is retired, ISO reserves it for at least 50 years to prevent confusion with historical data. For example:

  • SU (Soviet Union, retired 1992) — Cannot be reused until ~2042
  • DD (East Germany, retired 1990) — Cannot be reused until ~2040
  • YU (Yugoslavia, retired 2003) — Cannot be reused until ~2053

Impact on Software Systems

Code changes affect many systems:

  1. Databases — Records with old codes need migration or aliasing
  2. Drop-down menus — Country names must be updated
  3. Analytics — Historical data may reference codes that no longer exist
  4. DNS — ccTLDs can persist even after code changes (.su still works)
  5. Phone systems — Calling codes may change or split

Handling Historical Codes

// Map historical codes to current codes
const HISTORICAL_CODES = {
  'SU': 'RU',    // Soviet Union → Russia (primary successor)
  'DD': 'DE',    // East Germany → Germany
  'CS': 'RS',    // Serbia and Montenegro → Serbia (last assignment)
  'YU': 'RS',    // Yugoslavia → Serbia (primary successor)
  'AN': 'CW',    // Netherlands Antilles → Curacao (primary successor)
  'TP': 'TL',    // East Timor → Timor-Leste
};

function normalizeCountryCode(code) {
  return HISTORICAL_CODES[code] || code;
}

Active Disputes

Some codes remain politically sensitive:

  • TW (Taiwan) — ISO lists as "Taiwan, Province of China"
  • XK (Kosovo) — User-assigned code, not officially in ISO 3166-1
  • PS (Palestine) — Listed as "Palestine, State of"
  • EH (Western Sahara) — Disputed territory

Use Case

A data analytics company processes 20 years of international trade data. Their ETL pipeline maps historical country codes (SU, YU, CS) to their modern equivalents so that reports aggregate correctly. The mapping table is version-controlled and updated whenever ISO publishes a newsletter.

Try It — Country Code Reference

Open full tool