The Localization Guide for Developers
Number formats, local address templates, and phone number formatting for every country. The one reference you need to ship truly localized software.
- 195+
- Countries Covered
- 250+
- Address Templates
- 230+
- Phone Formats
- CLDR
- Data Standards
Format Concepts
Six dimensions that define how a country formats numbers.
Decimal Separator
The symbol between whole and fractional parts
Thousands Separator
Groups of 3 digits separator
Grouping Pattern
How digits are grouped
Currency Position
Symbol before/after number, with or without space
Negative Format
How negative numbers are displayed
Percent Format
Position and spacing of percent symbol
Popular Country Formats
The most-referenced number formats for developers.
United States
1,234,567.89
Germany
1.234.567,89
France
1 234 567,89
United Kingdom
1,234,567.89
Japan
1,234,567.89
India
12,34,567.89
Brazil
1.234.567,89
Switzerland
1’234’567.89
Russia
1 234 567,89
Saudi Arabia
١٬٢٣٤٬٥٦٧٫٨٩
China
1,234,567.89
Netherlands
1.234.567,89
How It Works
Three steps from confusion to correct formatting.
Find your country
Search by country name or ISO code in the directory.
Check the format rules
Decimal separator, thousands separator, grouping pattern, and currency position.
Use in your code
Copy the Intl.NumberFormat locale string for your app.
// Format a number for Germany
new Intl.NumberFormat('de-DE').format(1234567.89)
// → "1.234.567,89"
// Format currency for France
new Intl.NumberFormat('fr-FR', {
style: 'currency',
currency: 'EUR'
}).format(1234567.89)
// → "1 234 567,89 €"Why localization.guide
Live Number Preview
Type any number and see it formatted globally in real-time using your browser's native Intl.NumberFormat.
Developer Ready
Intl.NumberFormat locale codes, libphonenumber-js snippets, address template strings, and copy-paste examples.
Complete Coverage
Numbers, addresses, and phone formats for 195+ countries — based on Unicode CLDR, Geoapify, and libphonenumber-js.
Three Topics in One
The only guide that covers number formatting, local address templates, and phone number localization together.
Frequently Asked Questions
Why do countries format numbers differently?
Number formatting conventions evolved independently across cultures. European countries historically used the comma as a decimal separator and period for thousands, while the US and UK adopted the opposite. These conventions are standardized through Unicode CLDR (Common Locale Data Repository).
What is a decimal separator?
The decimal separator is the symbol that separates the integer part from the fractional part of a number. The US and UK use a period (1,234.56), while most of Europe uses a comma (1.234,56). Switzerland uses an apostrophe for thousands and a period for decimals.
What is the Indian number grouping system?
India uses a unique grouping system where the rightmost group has 3 digits, but subsequent groups have only 2 digits. So one million is written as 10,00,000 (ten lakh) rather than 1,000,000. The locale code for this is "en-IN".
What is CLDR?
Unicode CLDR (Common Locale Data Repository) is the standard database of locale-specific formatting rules maintained by the Unicode Consortium. It is the data source behind Intl.NumberFormat in JavaScript, ICU in Java/C++, and most modern i18n libraries.
How do I use these formats in JavaScript?
Use the built-in Intl.NumberFormat API: new Intl.NumberFormat('de-DE').format(1234567.89). Each country page provides the exact locale string and code examples for JavaScript, Python, and Java.
What are Arabic-Indic numerals?
Several Arabic-speaking countries optionally use Eastern Arabic numerals (٠١٢٣٤٥٦٧٨٩) instead of Western Arabic numerals (0123456789). Saudi Arabia and other Gulf states may use either system depending on context. Both are supported by Intl.NumberFormat.
How is this data sourced?
Format data is based on Unicode CLDR, cross-referenced with ISO 31-0 (mathematical signs and symbols) and verified against regional standards bodies.