๐Ÿ‡ฎ๐Ÿ‡ณ

India Number Format

CLDR Locale:
ISO: IN / INDRegion: AsiaDigits: western

Try It โ€” Live Preview

Number
12,34,567.89
Currency (INR)
โ‚น12,34,567.89
Percentage
12,34,568%
Compact
12L

Format Rules

Decimal Separator
.period
Thousands Separator
,comma
Grouping Pattern
2-3
Negative Format
-12,34,567.89
Currency Symbol
โ‚น (INR)
Currency Position
Before number โ†’ โ‚น12,34,567.89
Percent Position
After number โ†’ 13%
Zero
0.00
Compact
12L

India formatting implementation notes

For India, format numbers with the explicit locale en-IN; the reference value 1234567.89 renders as 12,34,567.89.

India's reference format uses "." as the decimal mark and comma (",") for grouping. The integer uses Indian 3-then-2 grouping, so digits group as lakh/crore values rather than repeating groups of three. Pass "en-IN" directly to Intl.NumberFormat instead of replacing punctuation in a preformatted string.

INR is shown with โ‚น immediately before the amount; the same reference value renders as โ‚น12,34,567.89. The percent sign appears immediately after the amount. Use the ISO currency code for storage and interchange because a visible symbol can be shared by unrelated currencies.

Western 0โ€“9 digits are the page's reference digit system, and the negative pattern is -n. This country is multilingual in software contexts: also test hi-IN, because language selection can change spacing, punctuation, and currency display without changing the region. Validate output with formatToParts() when spacing, signs, or bidirectional literals affect the interface.

  • Locale: en-IN
  • Decimal and grouping: 12,34,567.89
  • Currency: INR โ†’ โ‚น12,34,567.89
  • Digits: Western 0โ€“9 digits

Reviewed 19 July 2026. Sources: Unicode locale number formats ยท Intl.NumberFormat reference

What's different here

  • The integer uses Indian 3-then-2 grouping (en-US uses repeating groups of three).
  • Uses the same number pattern (decimal mark, grouping, symbol and percent placement) as Pakistan and Bangladesh.
  • Nearby differences: Singapore (en-SG) uses repeating groups of three instead of Indian 3-then-2 grouping; Japan (ja-JP) uses repeating groups of three instead of Indian 3-then-2 grouping; China (zh-CN) uses repeating groups of three instead of Indian 3-then-2 grouping; Hong Kong (zh-HK) uses repeating groups of three instead of Indian 3-then-2 grouping.
  • Currency: INR has ISO minor unit 2.
  • With 3-then-2 grouping the reference value renders as 12,34,567.89, so don't reuse a fixed "every three digits" mask.
  • Postal address order: name โ†’ building โ†’ street number + street โ†’ district โ†’ city + postcode โ†’ region โ†’ country. See address formats.

Reference value 1234567.89 in each locale

LocaleOutput
en-IN12,34,567.89
hi-IN12,34,567.89

Rendered with the platform's CLDR data at build time.

Code Examples

// Basic number
new Intl.NumberFormat('en-IN').format(1234567.89)
// โ†’ "12,34,567.89"

// Currency
new Intl.NumberFormat('en-IN', {
  style: 'currency',
  currency: 'INR'
}).format(1234567.89)
// โ†’ "โ‚น12,34,567.89"

// Percentage
new Intl.NumberFormat('en-IN', {
  style: 'percent',
  minimumFractionDigits: 1
}).format(0.125)

// Compact notation
new Intl.NumberFormat('en-IN', {
  notation: 'compact'
}).format(1234567)

Negative Number Formats

Standard-12,34,567.89
new Intl.NumberFormat('en-IN').format(-1234567.89)
Accounting style(โ‚น1,234,567.89)
new Intl.NumberFormat('en-IN', { style: 'currency', currency: 'INR', currencySign: 'accounting' }).format(-1234567.89)

Edge Cases & Notes

CRITICAL: Indian grouping system โ€” rightmost group = 3 digits, then groups of 2. 1,000,000 = 10,00,000 (ten lakh). 10,000,000 = 1,00,00,000 (one crore). Intl.NumberFormat('en-IN') handles this natively.