// TypeScript-style JSDoc types for clarity
/**
* @typedef {Object} CountryEntry
* @property {string} code
* @property {string} name
*/
// Create a DisplayNames instance for English country names
const countryNames = new Intl.DisplayNames(['en'], { type: 'region' });
/**
* Returns all ISO alpha‑2 countries with English names
* @returns {CountryEntry[]}
*/
function getAllCountries() {
const countries = [];
// Generate all AA–ZZ combinations (676 total)
for (let a = 65; a <= 90; a++) {
for (let b = 65; b <= 90; b++) {
const code = String.fromCharCode(a) + String.fromCharCode(b);
const name = countryNames.of(code);
// If the name is valid and not equal to the code, it's a real country
if (name && name !== code) {
countries.push({ code, name });
}
}
}
// Sort by country name
return countries.sort((a, b) => a.name.localeCompare(b.name));
}
// Usage
const countries = getAllCountries();
countries.forEach(c => console.log(`${c.code}: ${c.name}`));
/*
run:
AF: Afghanistan
AX: Åland Islands
AL: Albania
DZ: Algeria
AS: American Samoa
AD: Andorra
AO: Angola
AI: Anguilla
AQ: Antarctica
AG: Antigua & Barbuda
AR: Argentina
AM: Armenia
AW: Aruba
AC: Ascension Island
AU: Australia
AT: Austria
AZ: Azerbaijan
BS: Bahamas
BH: Bahrain
BD: Bangladesh
BB: Barbados
BY: Belarus
BE: Belgium
BZ: Belize
BJ: Benin
DY: Benin
BM: Bermuda
BT: Bhutan
BO: Bolivia
BA: Bosnia & Herzegovina
BW: Botswana
BV: Bouvet Island
BR: Brazil
IO: British Indian Ocean Territory
VG: British Virgin Islands
BN: Brunei
BG: Bulgaria
BF: Burkina Faso
HV: Burkina Faso
BI: Burundi
KH: Cambodia
CM: Cameroon
CA: Canada
IC: Canary Islands
CV: Cape Verde
BQ: Caribbean Netherlands
KY: Cayman Islands
CF: Central African Republic
EA: Ceuta & Melilla
TD: Chad
CL: Chile
CN: China
CX: Christmas Island
CP: Clipperton Island
CC: Cocos (Keeling) Islands
CO: Colombia
KM: Comoros
CG: Congo - Brazzaville
CD: Congo - Kinshasa
ZR: Congo - Kinshasa
CK: Cook Islands
CR: Costa Rica
CI: Côte d’Ivoire
HR: Croatia
CU: Cuba
AN: Curaçao
CW: Curaçao
CY: Cyprus
CZ: Czechia
DK: Denmark
DG: Diego Garcia
DJ: Djibouti
DM: Dominica
DO: Dominican Republic
EC: Ecuador
EG: Egypt
SV: El Salvador
GQ: Equatorial Guinea
ER: Eritrea
EE: Estonia
SZ: Eswatini
ET: Ethiopia
EU: European Union
EZ: Eurozone
FK: Falkland Islands
FO: Faroe Islands
FJ: Fiji
FI: Finland
FR: France
FX: France
GF: French Guiana
PF: French Polynesia
TF: French Southern Territories
GA: Gabon
GM: Gambia
GE: Georgia
DD: Germany
DE: Germany
GH: Ghana
GI: Gibraltar
GR: Greece
GL: Greenland
GD: Grenada
GP: Guadeloupe
GU: Guam
GT: Guatemala
GG: Guernsey
GN: Guinea
GW: Guinea-Bissau
GY: Guyana
HT: Haiti
HM: Heard & McDonald Islands
HN: Honduras
HK: Hong Kong SAR China
HU: Hungary
IS: Iceland
IN: India
ID: Indonesia
IR: Iran
IQ: Iraq
IE: Ireland
IM: Isle of Man
IL: Israel
IT: Italy
JM: Jamaica
JP: Japan
JE: Jersey
JO: Jordan
KZ: Kazakhstan
KE: Kenya
KI: Kiribati
XK: Kosovo
KW: Kuwait
KG: Kyrgyzstan
LA: Laos
LV: Latvia
LB: Lebanon
LS: Lesotho
LR: Liberia
LY: Libya
LI: Liechtenstein
LT: Lithuania
LU: Luxembourg
MO: Macao SAR China
MG: Madagascar
MW: Malawi
MY: Malaysia
MV: Maldives
ML: Mali
MT: Malta
MH: Marshall Islands
MQ: Martinique
MR: Mauritania
MU: Mauritius
YT: Mayotte
MX: Mexico
FM: Micronesia
MD: Moldova
MC: Monaco
MN: Mongolia
ME: Montenegro
MS: Montserrat
MA: Morocco
MZ: Mozambique
BU: Myanmar (Burma)
MM: Myanmar (Burma)
NA: Namibia
NR: Nauru
NP: Nepal
NL: Netherlands
NC: New Caledonia
NZ: New Zealand
NI: Nicaragua
NE: Niger
NG: Nigeria
NU: Niue
NF: Norfolk Island
KP: North Korea
MK: North Macedonia
MP: Northern Mariana Islands
NO: Norway
OM: Oman
QO: Outlying Oceania
PK: Pakistan
PW: Palau
PS: Palestinian Territories
PA: Panama
PG: Papua New Guinea
PY: Paraguay
PE: Peru
PH: Philippines
PN: Pitcairn Islands
PL: Poland
PT: Portugal
XA: Pseudo-Accents
XB: Pseudo-Bidi
PR: Puerto Rico
QA: Qatar
RE: Réunion
RO: Romania
RU: Russia
SU: Russia
RW: Rwanda
WS: Samoa
SM: San Marino
ST: São Tomé & Príncipe
CQ: Sark
SA: Saudi Arabia
SN: Senegal
CS: Serbia
RS: Serbia
YU: Serbia
SC: Seychelles
SL: Sierra Leone
SG: Singapore
SX: Sint Maarten
SK: Slovakia
SI: Slovenia
SB: Solomon Islands
SO: Somalia
ZA: South Africa
GS: South Georgia & South Sandwich Islands
KR: South Korea
SS: South Sudan
ES: Spain
LK: Sri Lanka
BL: St. Barthélemy
SH: St. Helena
KN: St. Kitts & Nevis
LC: St. Lucia
MF: St. Martin
PM: St. Pierre & Miquelon
VC: St. Vincent & Grenadines
SD: Sudan
SR: Suriname
SJ: Svalbard & Jan Mayen
SE: Sweden
CH: Switzerland
SY: Syria
TW: Taiwan
TJ: Tajikistan
TZ: Tanzania
TH: Thailand
TL: Timor-Leste
TP: Timor-Leste
TG: Togo
TK: Tokelau
TO: Tonga
TT: Trinidad & Tobago
TA: Tristan da Cunha
TN: Tunisia
TR: Türkiye
TM: Turkmenistan
TC: Turks & Caicos Islands
TV: Tuvalu
UM: U.S. Outlying Islands
VI: U.S. Virgin Islands
UG: Uganda
UA: Ukraine
AE: United Arab Emirates
GB: United Kingdom
UK: United Kingdom
UN: United Nations
US: United States
ZZ: Unknown Region
UY: Uruguay
UZ: Uzbekistan
NH: Vanuatu
VU: Vanuatu
VA: Vatican City
VE: Venezuela
VD: Vietnam
VN: Vietnam
WF: Wallis & Futuna
EH: Western Sahara
YD: Yemen
YE: Yemen
ZM: Zambia
RH: Zimbabwe
ZW: Zimbabwe
*/