i18n-iso-countries vs countries-list vs country-list vs country-data vs country-locale-map vs locale-codes
Country Data Libraries Comparison
1 Year
i18n-iso-countriescountries-listcountry-listcountry-datacountry-locale-maplocale-codesSimilar Packages:
What's Country Data Libraries?

These npm packages provide various functionalities for working with country data, including country names, codes, and localization. They are useful for developers who need to integrate country-related information into their applications, such as dropdowns for selecting countries, displaying country flags, or handling internationalization. Each package has its own strengths and use cases, making it essential to choose the right one based on specific project requirements.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
i18n-iso-countries777,055829624 kB3919 hours agoMIT
countries-list259,8761,217272 kB167 months agoMIT
country-list246,03327116.6 kB5-MIT
country-data82,674517-358 years agoMIT
country-locale-map28,88345227 kB13 months agoMIT
locale-codes20,69753-295 years agoMIT
Feature Comparison: i18n-iso-countries vs countries-list vs country-list vs country-data vs country-locale-map vs locale-codes

Data Coverage

  • i18n-iso-countries:

    Includes country names in multiple languages, making it perfect for applications that need to cater to a global audience.

  • countries-list:

    Provides a comprehensive list of countries with ISO 3166-1 alpha-2 and alpha-3 codes, making it suitable for basic country selection needs.

  • country-list:

    Focuses on providing a simple list of country names and their ISO codes, ensuring ease of use for dropdowns and selection interfaces.

  • country-data:

    Offers extensive country data including population, area, and other statistics, making it ideal for applications that require detailed demographic information.

  • country-locale-map:

    Maps countries to their respective locales, providing a useful reference for localization and internationalization tasks.

  • locale-codes:

    Focuses on locale codes and their relationships with countries, useful for applications that require locale-specific formatting.

Localization Support

  • i18n-iso-countries:

    Strong localization support, offering country names in various languages, making it suitable for multilingual applications.

  • countries-list:

    Limited localization support; primarily focuses on English country names.

  • country-list:

    No localization support; designed for straightforward country code retrieval.

  • country-data:

    Minimal localization features; mainly provides data in English.

  • country-locale-map:

    Excellent localization support, mapping countries to multiple locales for internationalization purposes.

  • locale-codes:

    Provides locale codes that can be used for localization, but does not include country names.

Ease of Use

  • i18n-iso-countries:

    User-friendly with a clear API for accessing country names in different languages.

  • countries-list:

    Very easy to use with a simple API for retrieving country data, making it ideal for quick implementations.

  • country-list:

    Extremely straightforward; perfect for developers who need a quick reference for country codes.

  • country-data:

    Slightly more complex due to the additional data provided, but still user-friendly for developers familiar with JSON structures.

  • country-locale-map:

    Requires understanding of locale mapping but provides clear documentation for ease of use.

  • locale-codes:

    Simple API for retrieving locale codes, making it easy to integrate into applications.

Maintenance and Updates

  • i18n-iso-countries:

    Regularly updated to include new languages and changes in country names.

  • countries-list:

    Regularly maintained with updates to reflect changes in country codes and names.

  • country-list:

    Lightweight and easy to maintain, with infrequent updates needed.

  • country-data:

    Maintained with periodic updates to ensure accuracy of demographic data.

  • country-locale-map:

    Maintained to keep up with changes in locale standards and country mappings.

  • locale-codes:

    Maintained to ensure accuracy of locale information.

Performance

  • i18n-iso-countries:

    Performance is solid, though may require more resources for multilingual applications.

  • countries-list:

    Lightweight and performs well for basic country data retrieval tasks.

  • country-list:

    Highly performant due to its simplicity and minimal data structure.

  • country-data:

    Performance may vary based on the amount of data requested; generally efficient for most use cases.

  • country-locale-map:

    Performance is good, but may require additional processing for locale mapping tasks.

  • locale-codes:

    Efficient for retrieving locale codes, with minimal overhead.

How to Choose: i18n-iso-countries vs countries-list vs country-list vs country-data vs country-locale-map vs locale-codes
  • i18n-iso-countries:

    Choose 'i18n-iso-countries' for internationalization purposes, as it provides country names in multiple languages. This package is essential for applications that need to display country names based on the user's language settings.

  • countries-list:

    Choose 'countries-list' if you need a simple and lightweight library that provides a comprehensive list of countries with their ISO codes. It is ideal for applications that require basic country information without additional overhead.

  • country-list:

    Opt for 'country-list' if you need a straightforward solution for retrieving country names and their corresponding ISO codes. It is particularly useful for forms and user interfaces where users need to select a country from a list.

  • country-data:

    Select 'country-data' if you are looking for a more extensive dataset that includes not only country names and codes but also additional information like population and area. This package is suitable for applications that require detailed country statistics.

  • country-locale-map:

    Use 'country-locale-map' if your application requires mapping countries to their respective locales. This package is beneficial for localization tasks where you need to adapt content based on the user's country and language preferences.

  • locale-codes:

    Select 'locale-codes' if you need a library that focuses on locale codes and their corresponding countries. This is useful for applications that require locale-based formatting and internationalization.

README for i18n-iso-countries

i18n-iso-countries

i18n for ISO 3166-1 country codes. We support Alpha-2, Alpha-3 and Numeric codes from 'Wikipedia: Officially assigned code elements'

Installing

Install it using npm: npm install i18n-iso-countries

var countries = require("i18n-iso-countries");

If you use i18n-iso-countries with Node.js, you are done. If you use the package in a browser environment, you have to register the languages you want to use to minimize the file size.

// Support french & english languages.
countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
countries.registerLocale(require("i18n-iso-countries/langs/fr.json"));

Code to Country

Get the name of a country by its ISO 3166-1 Alpha-2, Alpha-3 or Numeric code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log("US (Alpha-2) => " + countries.getName("US", "en")); // United States of America
console.log("US (Alpha-2) => " + countries.getName("US", "de")); // Vereinigte Staaten von Amerika
console.log("USA (Alpha-3) => " + countries.getName("USA", "en")); // United States of America
console.log("USA (Numeric) => " + countries.getName("840", "en")); // United States of America

Get aliases/short name using select

// Some countries have alias/short names defined. `select` is used to control which
// name will be returned.
console.log("GB (select: official) => " + countries.getName("GB", "en", {select: "official"})); // United Kingdom
console.log("GB (select: alias) => " + countries.getName("GB", "en", {select: "alias"})); // UK
console.log("GB (select: all) => " + countries.getName("GB", "en", {select: "all"})); // ["United Kingdom", "UK", "Great Britain"]
// Countries without an alias will always return the offical name
console.log("LT (select: official) => " + countries.getName("LT", "en", {select: "official"})); // Lithuania
console.log("LT (select: alias) => " + countries.getName("LT", "en", {select: "alias"})); // Lithuania
console.log("LT (select: all) => " + countries.getName("LT", "en", {select: "all"})); // ["Lithuania"]

Get all names by their ISO 3166-1 Alpha-2 code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(countries.getNames("en", {select: "official"})); // { 'AF': 'Afghanistan', 'AL': 'Albania', [...], 'ZM': 'Zambia', 'ZW': 'Zimbabwe' }

Supported languages (ISO 639-1)

In case you want to add new language, please refer ISO 639-1 table.

  • af: Afrikaans
  • am: Amharic
  • ar: Arabic
  • az: Azerbaijani
  • be: Belorussian
  • bg: Bulgarian
  • bn: Bengali
  • br: Breton
  • bs: Bosnian
  • ca: Catalan
  • cs: Czech
  • cy: Cymraeg
  • da: Danish
  • de: German
  • dv: Dhivehi
  • en: English
  • es: Spanish
  • et: Estonian
  • eu: Basque
  • fa: Persian
  • fi: Finnish
  • fr: French
  • ga: Irish
  • gl: Galician
  • el: Greek
  • ha: Hausa
  • he: Hebrew
  • hi: Hindi
  • hr: Croatian
  • hu: Hungarian
  • hy: Armenian
  • is: Icelandic
  • it: Italian
  • id: Indonesian
  • ja: Japanese
  • ka: Georgian
  • kk: Kazakh
  • km: Khmer
  • ko: Korean
  • ku: Kurdish
  • ky: Kyrgyz
  • lt: Lithuanian
  • lv: Latvian
  • mk: Macedonian
  • ml: Malayalam
  • mn: Mongolian
  • mr: Marathi
  • ms: Malay
  • mt: Maltese
  • nb: Norwegian Bokmål
  • nl: Dutch
  • nn: Norwegian Nynorsk
  • no: Norwegian
  • pl: Polish
  • ps: Pashto
  • pt: Portuguese
  • ro: Romanian
  • ru: Russian
  • sd: Sindhi
  • sk: Slovak
  • sl: Slovene
  • so: Somali
  • sq: Albanian
  • sr: Serbian
  • sv: Swedish
  • sw: Swahili
  • ta: Tamil
  • tg: Tajik
  • th: Thai
  • tk: Turkmen
  • tr: Turkish
  • tt: Tatar
  • ug: Uyghur
  • uk: Ukrainian
  • ur: Urdu
  • uz: Uzbek
  • zh: Chinese
  • vi: Vietnamese

List of ISO 639-1 codes

Get all supported languages (ISO 639-1)

var countries = require("i18n-iso-countries");
console.log("List of supported languages => " + countries.getSupportedLanguages());
// List of supported languages => ["cy", "dv", "sw", "eu", "af", "am", ...]

Country to Code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log("United States of America => " + countries.getAlpha2Code("United States of America", "en"));
// United States of America => US

console.log("United States of America => " + countries.getAlpha3Code("United States of America", "en"));
// United States of America => USA

Codes

Convert Alpha-3 to Alpha-2 code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log("USA (Alpha-3) => " + countries.alpha3ToAlpha2("USA") + " (Alpha-2)");
// USA (Alpha-3) => US (Alpha-2)

Convert Numeric to Alpha-2 code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log("840 (Numeric) => " + countries.numericToAlpha2("840") + " (Alpha-2)");
// 840 (Numeric) => US (Alpha-2)

Convert Alpha-2 to Alpha-3 code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log("DE (Alpha-2) => " + countries.alpha2ToAlpha3("DE") + " (Alpha-3)");
// DE (Alpha-2) => DEU (Alpha-3)

Convert Numeric to Alpha-3 code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log("840 (Numeric) => " + countries.numericToAlpha3("840") + " (Alpha-3)");
// 840 (Numeric) => USA (Alpha-3)

Convert Alpha-3 to Numeric code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(countries.alpha3ToNumeric("SWE"));
// 752

Convert Alpha-2 to Numeric code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(countries.alpha2ToNumeric("SE"));
// 752

Get all Alpha-2 codes

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(countries.getAlpha2Codes());
// { 'AF': 'AFG', 'AX': 'ALA', [...], 'ZM': 'ZMB', 'ZW': 'ZWE' }

Get all Alpha-3 codes

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(countries.getAlpha3Codes());
// { 'AFG': 'AF', 'ALA': 'AX', [...], 'ZMB': 'ZM', 'ZWE': 'ZW' }

Get all Numeric codes

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(countries.getNumericCodes());
// { '004': 'AF', '008': 'AL', [...], '887': 'YE', '894': 'ZM' }

Validate country code

var countries = require("i18n-iso-countries");
// in a browser environment: countries.registerLocale(require("i18n-iso-countries/langs/en.json"));
console.log(
  countries.isValid("US"),
  countries.isValid("USA"),
  countries.isValid("XX")
);
// true, true, false

Contribution

To add a language:

  • add a json file under langs/
  • add the language to the list in supportedLocales.json at the top
  • add language to section Supported languages in README.md
  • add language to keywords in package.json
  • run npm run lint and npm test
  • open a PR on GitHub

You can check codes here: https://www.iso.org/obp/ui/#home