Ship global products with correct local formatting
The complete developer reference for number formats, currency codes, address templates, and phone formatting — for every country on Earth. Browser-only tools, zero data collection.
Start by task
Format numbers by locale
Convert numbers to locale-specific formats with correct separators and grouping.
Build international address forms
Get field order, labels, and validation rules for address forms by country.
Validate and display phone numbers
Parse, validate, and format phone numbers using libphonenumber-js patterns.
Compare country conventions
Side-by-side comparison of number, currency, and address formats.
Reference Guides
Number Formats
Decimal separators, thousands separators, grouping patterns, and Intl.NumberFormat locale codes for 90+ countries.
Germany
1.234.567,89
Currency Codes
ISO 4217 currency codes, symbols, decimal precision, and Intl.NumberFormat currency style examples.
Euro
1,234.00
Address Formats
Local address templates and a conversion tool for 250+ countries, powered by Geoapify address data.
Japan
100-0001 Tokyo Chiyoda...
Phone Numbers
Calling codes, E.164 formatting, national vs international display, and libphonenumber-js integration guide.
US
+1 (555) 123-4567
Start by role
Developers
Implement correct locale-aware formatting in code
Recommended:
Avoid: Hardcoding decimal separators or phone formats
Product & Design
Design forms and displays that work globally
Recommended:
Avoid: Assuming all countries use the same address structure
QA & Ops
Test edge cases and validate international inputs
Recommended:
Avoid: Only testing with US/UK data
Localization Teams
Ensure consistent formatting across all markets
Recommended:
Avoid: Mixing display and storage formats
Localization pitfalls to avoid
Assuming period as decimal separator
Most of Europe, South America, and parts of Asia use comma as the decimal separator. Germany formats 1,234.56 as 1.234,56.
See number formatsBreaking on non-breaking spaces
France, Austria, and many locales use narrow no-break space (U+202F) or no-break space (U+00A0) as thousands separator. These will break naive parsing.
View France formatTreating phone display and storage as the same
Always store phone numbers in E.164 format (+12025551234) but display in local format. Never store display formatting.
Phone formatting guideUS-centric address schemas globally
Japan writes address largest-to-smallest (postal code, prefecture, city, street). UK has no ZIP code field. Many countries have no state/province.
Address templatesAssuming postcodes are always required
Ireland historically had no postcodes. Many countries have optional or regional-only postal codes. Never hard-require this field globally.
Country address rulesIgnoring Indian-style number grouping
India uses 2-3 grouping pattern: 12,34,567.89 (lakhs and crores). Standard 3-digit grouping is incorrect for en-IN locale.
View India formatDeveloper Recipes
Copy-paste code for common tasks
// Format number for German locale
const num = 1234567.89;
const formatted = new Intl.NumberFormat('de-DE').format(num);
// → "1.234.567,89"
// With currency
new Intl.NumberFormat('de-DE', {
style: 'currency',
currency: 'EUR'
}).format(num);
// → "1.234.567,89 €"QA Test Cases
Ready-to-use test data
Copy test cases for validating your localization implementation
Input
1234567.89
Expected
de-DE → 1.234.567,89
German: dot thousands, comma decimal
Input
1234567.89
Expected
en-US → 1,234,567.89
US: comma thousands, dot decimal
Input
1234567.89
Expected
fr-FR → 1 234 567,89
French: narrow no-break space thousands (U+202F), comma decimal
Input
1234567.89
Expected
en-IN → 12,34,567.89
India: lakh grouping (2,2,3)
Input
0.5
Expected
All locales → 0.5 or 0,5
Leading zero behavior
Input
-1234.56
Expected
Varies by locale
Negative number placement
Address Form Builder
Generate country-specific address forms with correct field order, labels, and validation
Postal Code Format
12345 or 12345-67895 digits, optionally followed by hyphen and 4 digits (ZIP+4)
^\d{5}(-\d{4})?$Notes for United States
- •State is required for shipping
- •ZIP+4 improves delivery accuracy
United States Address Form
e.g. 10001
5 required fields, 1 optional
Built on standards. Runs in your browser.
Every tool on localization.guide processes data entirely client-side. Your input never leaves your browser, never touches our servers, and is never logged or analyzed.
Privacy principles
No server processing
All formatting, validation, and transformation happens in your browser using JavaScript APIs.
No data collection
We do not log, store, or transmit any values you enter into our tools. Zero telemetry on input content.
No hidden APIs
Our tools use Intl.NumberFormat, Intl.DateTimeFormat, and other native browser APIs. No backend calls.
Open methodology
All formatting rules come from publicly documented standards. No proprietary data processing.
Data sources & standards
Unicode CLDR
The standard for locale-specific formatting. Number formats, currency symbols, and grouping rules.
Geoapify
Address templates and postal formatting rules for 250+ countries and territories.
libphonenumber-js
Phone number parsing and formatting based on Google's libphonenumber.
ISO 4217
International currency codes, symbols, and decimal precision standards.
Known limitations
- Format rules may change as standards are updated
- Some locales have regional variations not fully captured
- Browser Intl API support varies by version
Related Resources
Developer reference docs and tools
Libraries, APIs, and specifications to help you implement localization in your applications
Unicode CLDR
Data SourceThe source for locale data including number formats, date formats, and currency information.
libphonenumber-js
LibraryBrowser-compatible phone number parsing, validation, and formatting library based on Google's libphonenumber.
MDN Intl.NumberFormat
DocumentationComplete documentation for JavaScript's built-in number formatting API.
ISO 4217 Currency Codes
StandardOfficial list of currency codes, decimal places, and minor units.
Geoapify Address Data
Data SourceAddress format templates and postal code validation rules for 250+ countries.
E.164 Phone Standard
StandardITU-T recommendation for international telephone numbering.
Everything you need to ship localized software
Number formatting, address templates, phone localization, and ISO 4217 currency codes — in one place, with copy-ready code for JavaScript, Python, Java, and Swift.
- Unicode CLDR locale codes for Intl.NumberFormat
- 250+ country address templates from Geoapify
- libphonenumber-js integration guide and live formatter
- ISO 4217 currency codes with Stripe payment notes
// Numbers
new Intl.NumberFormat('de-DE').format(1234567.89)
// → "1.234.567,89"
// Currency
new Intl.NumberFormat('fr-FR', {
style: 'currency', currency: 'EUR'
}).format(9999.99)
// → "9 999,99 €"
// Phone (libphonenumber-js)
parsePhoneNumber('+12025551234').
formatInternational()
// → "+1 202 555 1234"