i18n-iso-countries vs countries-and-timezones vs country-list vs countries-list vs iso-3166-1 vs country-data
Country and Timezone Libraries Comparison
1 Year
i18n-iso-countriescountries-and-timezonescountry-listcountries-listiso-3166-1country-dataSimilar Packages:
What's Country and Timezone Libraries?

These libraries provide developers with tools to manage country data and timezones in applications. They facilitate the retrieval of country names, codes, and timezone information, which is essential for localization, internationalization, and various geographical functionalities in web applications. Each library has its unique features, data formats, and use cases, making it important 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-countries813,199848624 kB474 months agoMIT
countries-and-timezones326,496252316 kB162 months agoMIT
country-list321,26927316.6 kB6-MIT
countries-list264,9911,242272 kB1710 months agoMIT
iso-3166-1137,8345838.1 kB4-MIT
country-data62,453516-359 years agoMIT
Feature Comparison: i18n-iso-countries vs countries-and-timezones vs country-list vs countries-list vs iso-3166-1 vs country-data

Data Coverage

  • i18n-iso-countries:

    Delivers country names in multiple languages, enhancing localization capabilities for international applications.

  • countries-and-timezones:

    Offers comprehensive data on countries and their respective timezones, including daylight saving time adjustments and historical timezone data.

  • country-list:

    Focuses solely on country names and ISO codes, ensuring a lightweight and efficient data retrieval process.

  • countries-list:

    Provides a basic list of countries and their ISO codes without additional metadata or timezone information.

  • iso-3166-1:

    Strictly adheres to ISO 3166-1 standards, providing reliable country codes and names.

  • country-data:

    Includes detailed country information such as population, area, and currency, making it suitable for applications needing in-depth demographic data.

Localization Support

  • i18n-iso-countries:

    Strong localization support, providing country names in various languages, making it ideal for international applications.

  • countries-and-timezones:

    Limited localization support, primarily focused on timezone data rather than localized country names.

  • country-list:

    No localization; it offers country names in English only.

  • countries-list:

    No localization support; it provides country names in English only.

  • iso-3166-1:

    No localization; it strictly provides country codes and names in English.

  • country-data:

    No localization features; it focuses on demographic data without language variations.

Ease of Use

  • i18n-iso-countries:

    User-friendly with clear documentation, making it easy to retrieve localized country names for internationalization.

  • countries-and-timezones:

    Easy to use with a clear API for accessing timezone and country data, but may require additional handling for timezone calculations.

  • country-list:

    Very easy to use; provides a minimalistic approach to accessing country names and codes without unnecessary complexity.

  • countries-list:

    Extremely simple to integrate, with a straightforward JSON structure that is easy to parse and use in applications.

  • iso-3166-1:

    Simple to use for retrieving ISO codes, but lacks additional features or metadata.

  • country-data:

    User-friendly API that allows easy access to a wide range of country-related data, though it may be more complex than simpler libraries.

Data Format

  • i18n-iso-countries:

    Structured JSON format that includes country names in multiple languages, facilitating easy localization.

  • countries-and-timezones:

    Data is structured in a comprehensive format that includes timezone offsets and rules, making it suitable for complex applications.

  • country-list:

    Delivers a minimal JSON format with just country names and codes, ensuring lightweight usage.

  • countries-list:

    Provides a simple JSON format with country names and ISO codes, ensuring quick integration.

  • iso-3166-1:

    Provides a straightforward JSON format with ISO codes and names, adhering to international standards.

  • country-data:

    Offers a detailed JSON structure that includes various attributes for each country, suitable for applications needing extensive data.

Maintenance and Updates

  • i18n-iso-countries:

    Regularly updated to include new country names and changes in localization needs, ensuring relevance.

  • countries-and-timezones:

    Regularly maintained with updates for timezone changes and new countries as needed, ensuring data accuracy.

  • country-list:

    Minimal maintenance required; updates may not be frequent due to the static nature of the data provided.

  • countries-list:

    Lightweight and easy to maintain, but may not receive frequent updates as it focuses on basic data.

  • iso-3166-1:

    Maintained in accordance with ISO standards, ensuring that the data remains accurate and up-to-date.

  • country-data:

    Actively maintained with regular updates to include new demographic data and changes in country status.

How to Choose: i18n-iso-countries vs countries-and-timezones vs country-list vs countries-list vs iso-3166-1 vs country-data
  • i18n-iso-countries:

    Choose this package if you need to handle internationalization and localization effectively. It provides country names in multiple languages, which is essential for applications targeting diverse user bases.

  • countries-and-timezones:

    Choose this package if you need comprehensive timezone data along with country information. It includes detailed timezone offsets and daylight saving time rules, making it ideal for applications that require accurate time calculations across different regions.

  • country-list:

    Use this package if you want a minimalistic approach to retrieve country names and codes. It is straightforward and efficient for applications that do not require additional metadata about the countries.

  • countries-list:

    Opt for this package if you need a simple and lightweight solution for country names and ISO codes. It provides a straightforward JSON format, making it easy to integrate into projects without additional dependencies or complexity.

  • iso-3166-1:

    Select this package if you specifically need ISO 3166-1 country codes and their corresponding names. It is useful for applications that require strict adherence to international standards for country identification.

  • country-data:

    Select this package if you require extensive country data, including population, area, and currency information. It is suitable for applications that need detailed demographic and economic data about countries.

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