country-phone-codes
v1.0.1
Published
[DEPRECATED] A modern, TypeScript-first library providing ISO 3166-1 alpha-2 country codes to international calling codes mapping
Maintainers
Readme
⚠️ DEPRECATED
This package is no longer maintained.
Please use libphonenumber-js instead. See: https://www.npmjs.com/package/libphonenumber-js
Original README below:
country-phone-codes
A modern, TypeScript-first library providing a clean, typed mapping of ISO 3166-1 alpha-2 country codes to their international phone codes (e.g., US → +1, IN → +91).
Features
- 🌍 Complete dataset: Maps all ISO 3166-1 alpha-2 country codes to their international phone code
- 📖 Data transparency: All country-phone code mappings embedded directly in the library
- 🔄 Bidirectional lookups: Find phone codes by country or countries by phone code
- 🔍 Validation & normalization: Clean and validate phone code strings
- 📦 Zero runtime dependencies: Lightweight, embedded dataset
- 🔢 First-class TypeScript: Written in TypeScript with comprehensive type definitions
- 📟 Modern exports: Supports both ESM and CommonJS
- ⚡ Tree-shakable: Import only what you need
- 🧪 Well-tested: High test coverage
Installation
npm install country-phone-codes
# or
yarn add country-phone-codes
# or
pnpm add country-phone-codesUsage
import {
countryPhoneCodesMap,
getPhoneCode,
getCountriesByPhoneCode,
getAllPhoneCodes,
isValidPhoneCode,
normalizePhoneCode
} from 'country-phone-codes';
// Get a phone code for a country
const usCode = getPhoneCode('US'); // '+1'
const indiaCode = getPhoneCode('in'); // '+91' (case-insensitive)
// Find all countries that use a specific phone code
const plusOneCountries = getCountriesByPhoneCode('+1');
// ['US', 'CA', 'AG', 'AI', 'AS', 'BB', 'BM', 'BS', 'DM', 'DO', ...]
// Normalize phone code inputs
normalizePhoneCode('1'); // '+1'
normalizePhoneCode('+44'); // '+44'
normalizePhoneCode('(0049) 123'); // '+49123'
normalizePhoneCode('0091 12-34-56'); // '+91123456'
// Check if a phone code is valid
isValidPhoneCode('+1'); // true
isValidPhoneCode('44'); // true (auto-normalized)
isValidPhoneCode('+999'); // false
// Get all phone codes
const allCodes = getAllPhoneCodes();
// ['+1', '+7', '+20', '+27', '+30', '+31', '+32', '+33', '+34', ...]
// Access raw data directly
console.log(countryPhoneCodesMap);
// { US: '+1', CA: '+1', GB: '+44', ... }API Reference
Data
countryPhoneCodesMap
The primary data object mapping ISO 3166-1 alpha-2 country codes (keys) to their international phone codes (values).
// Type: Readonly<Record<string, string>>
const map = countryPhoneCodesMap;
console.log(map['US']); // '+1'
console.log(map['GB']); // '+44'Functions
getPhoneCode(countryCode: string): string | undefined
Gets the international phone code for a given country code.
- Parameters:
countryCode: ISO 3166-1 alpha-2 country code (case-insensitive)
- Returns: The international phone code with '+' prefix, or
undefinedif not found
getPhoneCode('US'); // '+1'
getPhoneCode('in'); // '+91'
getPhoneCode('XYZ'); // undefinedgetCountriesByPhoneCode(phoneCode: string): string[]
Gets all countries that use a specific phone code.
- Parameters:
phoneCode: The international phone code to look up (automatically normalized)
- Returns: Array of ISO 3166-1 alpha-2 country codes that use this phone code, or empty array if none
getCountriesByPhoneCode('+1'); // ['US', 'CA', 'AG', ...]
getCountriesByPhoneCode('44'); // ['GB', 'IM']
getCountriesByPhoneCode('+999'); // []getAllPhoneCodes(): string[]
Gets an array of all unique international phone codes.
- Returns: Array of all unique phone codes in the dataset
getAllPhoneCodes(); // ['+1', '+7', '+20', '+27', ...]isValidPhoneCode(phoneCode: string): boolean
Checks if the provided string is a valid international phone code.
- Parameters:
phoneCode: The phone code to validate (automatically normalized)
- Returns:
trueif valid,falseotherwise
isValidPhoneCode('+1'); // true
isValidPhoneCode('44'); // true
isValidPhoneCode('+999'); // falsenormalizePhoneCode(code: string): string | undefined
Normalizes a phone code to ensure it has the proper format.
- Parameters:
code: The phone code string to normalize
- Returns: The normalized phone code or
undefinedif it can't be reasonably normalized
normalizePhoneCode('1'); // '+1'
normalizePhoneCode('+44'); // '+44'
normalizePhoneCode('(0049) 123'); // '+49123'
normalizePhoneCode('0091 12-34-56'); // '+91123456'Types
The library exports the following TypeScript types:
type CountryCodeA2 = string; // ISO 3166-1 alpha-2 country code
type InternationalPhoneCode = string; // Phone code with '+' prefix
interface CountryPhoneCodeMapData {
[countryCode: CountryCodeA2]: InternationalPhoneCode;
}Use Cases
- 📝 Form validation for international phone numbers
- 🌐 User registration flows with country selection
- 📱 Telecom and communications applications
- 🔍 Data enrichment for contact databases
- 🧩 Integration with other internationalization libraries
JSON Data
If you need direct access to the JSON data, you can import it:
import countryPhoneCodesMap from 'country-phone-codes/json';License
MIT
