Skip to content
ZeroServer.tools

Locale Number Formatter

Format numbers for any locale using the Intl.NumberFormat API.

Formatted Output
1,234,567.89

Top 10 Locales Comparison Dashboard

Compare formatting syntax, currency symbols, and digit groups side-by-side.

🇺🇸
United States (English)en-US
Decimal1,234,567.89
Currency (USD)$1,234,567.89
Percent1,234,567.89%
Unit (kilometer)1,234,567.89 km
🇩🇪
Germany (German)de-DE
Decimal1.234.567,89
Currency (EUR)1.234.567,89 €
Percent1.234.567,89 %
Unit (celsius)1.234.567,89 °C
🇯🇵
Japan (Japanese)ja-JP
Decimal1,234,567.89
Currency (JPY)¥1,234,568
Percent1,234,567.89%
Unit (liter)1,234,567.89 L
🇮🇳
India (Hindi)hi-IN
Decimal12,34,567.89
Currency (INR)₹12,34,567.89
Percent12,34,567.89%
Unit (kilometer)12,34,567.89 कि॰मी॰
🇬🇧
United Kingdom (English)en-GB
Decimal1,234,567.89
Currency (GBP)£1,234,567.89
Percent1,234,567.89%
Unit (kilometer)1,234,567.89 km
🇫🇷
France (French)fr-FR
Decimal1 234 567,89
Currency (EUR)1 234 567,89 €
Percent1 234 567,89 %
Unit (kilometer)1 234 567,89 km
🇨🇳
China (Chinese)zh-CN
Decimal1,234,567.89
Currency (CNY)¥1,234,567.89
Percent1,234,567.89%
Unit (kilogram)1,234,567.89 kg
🇧🇷
Brazil (Portuguese)pt-BR
Decimal1.234.567,89
Currency (BRL)R$ 1.234.567,89
Percent1.234.567,89%
Unit (meter)1.234.567,89 m
🇸🇦
Saudi Arabia (Arabic)ar-SA
Decimal١٬٢٣٤٬٥٦٧٫٨٩
Currency (SAR)‏١٬٢٣٤٬٥٦٧٫٨٩ ر.س.‏
Percent١٬٢٣٤٬٥٦٧٫٨٩٪؜
Unit (kilometer)١٬٢٣٤٬٥٦٧٫٨٩ كم
🇰🇷
South Korea (Korean)ko-KR
Decimal1,234,567.89
Currency (KRW)₩1,234,568
Percent1,234,567.89%
Unit (liter)1,234,567.89L

Intl.NumberFormat — internationalising numbers

Intl.NumberFormat is a built-in browser and Node.js API for locale-aware number formatting. It handles decimal separators (1,234.56 in en-US vs 1.234,56 in de-DE), currency symbols ($1,234.56 vs €1.234,56), percentage notation, and unit labelling.

Use the Top 10 Locales Comparison Dashboard to review live number formats across global regions simultaneously. Check how digit groupings, currency styles, percent ratios, and physical unit notations render natively in major languages. All formatting is executed securely locally in your browser.

Built and maintained by Meet Shah · Last updated

What this tool is used for

  • Seeing how a number formats across several locales.
  • Getting a currency format right for a specific market.
  • Checking how a locale handles grouping and decimal marks.
  • Formatting a unit value with the locale's own convention.
  • Comparing compact notation across locales.

Frequently Asked Questions

What does this actually use?
`Intl.NumberFormat`, built into the browser. The output is your browser's own CLDR data, so it matches what your users see rather than a table someone maintained by hand.
Why does German swap the separators?
Because `1.234,56` is the correct German rendering — a dot groups thousands and a comma marks the decimal. It is the exact reverse of English, which is why parsing a formatted number by stripping commas corrupts data in half the world.
Why does an Indian format group differently?
The Indian numbering system groups the first three digits, then in pairs — `12,34,567.89` for a number English writes as `1,234,567.89`. No fixed group size can express it, which is why locale data rather than arithmetic is required.
Why does JPY show no decimal places?
Because the yen has no minor unit, and currency formatting takes the digit count from the currency rather than the locale. The same applies to KRW and VND — hard-coding two decimal places produces wrong amounts for all of them.
What does percent style expect as input?
A fraction. `0.25` formats as 25%, not 0.25% — the style multiplies by 100. Passing an already-multiplied number is a common bug that produces a plausible but hundredfold-wrong figure.
Is formatting reversible?
Not reliably. Grouping separators, non-ASCII digits and right-to-left marks all appear in output, so the way back is to keep the numeric value and format only for display. Never store a formatted string and parse it later.

Common errors and gotchas

  • Assuming a comma is a thousand separator, when many locales use it as the decimal mark.
  • Formatting for display and then parsing the formatted string, which loses precision or fails.
  • Hard-coding a currency symbol rather than letting the locale place it.
  • Assuming a locale implies a currency, which it does not.
  • Formatting an identifier such as a reference number as if it were a quantity.

Related Developer Utilities tools

Private & free — this tool runs entirely in your browser.

IndieKitShip your Next.js startup in days.affiliate