Widely availablePrefer Intl over hand-written formatting logic whenever output depends on locale, currency, or human-readable regional conventions.

Overview

Intl provides locale-aware formatting and language-sensitive utilities such as number, date, list, and display name formatters.

Browser support

Feature Desktop Mobile
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
24
12
29
10
25
10

The toLocaleString() method of Array instances returns a string representing the elements of the array. The elements are converted to strings using their toLocaleString methods and these strings are separated by a locale-specific string (such as a comma ",").

1
12
1
1
18
1
Array.toLocaleString.locales parameter

`locales` parameter

24
79
52
7
25
7
Array.toLocaleString.options parameter

`options` parameter

24
79
52
7
25
7

The toLocaleString() method of BigInt values returns a string with a language-sensitive representation of this BigInt. In implementations with Intl.NumberFormat API support, this method delegates to Intl.NumberFormat.

67
79
68
14
67
14
BigInt.toLocaleString.locales parameter

`locales` parameter

76
79
70
14
76
14
BigInt.toLocaleString.options parameter

`options` parameter

76
79
70
14
76
14

The toLocaleDateString() method of Date instances returns a string with a language-sensitive representation of the date portion of this date in the local timezone. In implementations with Intl.DateTimeFormat API support, this method delegates to Intl.DateTimeFormat.

1
12
1
1
18
1
Date.toLocaleDateString.iana time zone names

IANA time zone names in `timeZone` option

24
14
52
7
25
7
Date.toLocaleDateString.locales parameter

`locales` parameter

24
12
29
10
25
10
Date.toLocaleDateString.options parameter

`options` parameter

24
12
29
10
25
10

The toLocaleString() method of Date instances returns a string with a language-sensitive representation of this date in the local timezone. In implementations with Intl.DateTimeFormat API support, this method delegates to Intl.DateTimeFormat.

1
12
1
1
18
1
Date.toLocaleString.iana time zone names

IANA time zone names in `timeZone` option

24
14
52
7
25
7
Date.toLocaleString.locales parameter

`locales` parameter

24
12
29
10
25
10
Date.toLocaleString.options parameter

`options` parameter

24
12
29
10
25
10

The toLocaleTimeString() method of Date instances returns a string with a language-sensitive representation of the time portion of this date in the local timezone. In implementations with Intl.DateTimeFormat API support, this method delegates to Intl.DateTimeFormat.

1
12
1
1
18
1
Date.toLocaleTimeString.iana time zone names

IANA time zone names in `timeZone` option

24
14
52
7
25
7
Date.toLocaleTimeString.locales parameter

`locales` parameter

24
12
29
10
25
10
Date.toLocaleTimeString.options parameter

`options` parameter

24
12
29
10
25
10

The Intl.Collator object enables language-sensitive string comparison.

24
12
29
10
25
10

The Intl.Collator() constructor creates Intl.Collator objects.

24
12
29
10
25
10
Intl.Collator.Collator.options caseFirst parameter

`options.caseFirst` parameter

24
18
55
11
25
11
Intl.Collator.Collator.options collation parameter

`options.collation` parameter

86
86
85
14.1
86
14.5
Intl.Collator.Collator.options ignorePunctuation parameter

`options.ignorePunctuation` parameter

24
79
29
10
25
10
Intl.Collator.Collator.options localeMatcher parameter

`options.localeMatcher` parameter

24
79
29
10
25
10
Intl.Collator.Collator.options numeric parameter

`options.numeric` parameter

24
79
29
10
25
10
Intl.Collator.Collator.options sensitivity parameter

`options.sensitivity` parameter

24
79
29
10
25
10
Intl.Collator.Collator.options usage parameter

`options.usage` parameter

24
79
29
10
25
10

The compare() method of Intl.Collator instances compares two strings according to the sort order of this collator object.

24
12
29
10
25
10

The resolvedOptions() method of Intl.Collator instances returns a new object with properties reflecting the options computed during initialization of this Collator object.

24
12
29
10
25
10

The Intl.Collator.supportedLocalesOf() static method returns an array containing those of the provided locales that are supported in collation without having to fall back to the runtime's default locale.

24
12
29
10
25
10

The Intl.DateTimeFormat object enables language-sensitive date and time formatting.

24
12
29
10
25
10

The Intl.DateTimeFormat() constructor creates Intl.DateTimeFormat objects.

24
12
29
10
25
10

A new Intl.DateTimeFormat object.

91
91
54
14.1
91
14.5
Intl.DateTimeFormat.DateTimeFormat.locales parameter

`locales` parameter

24
12
29
10
25
10
Intl.DateTimeFormat.DateTimeFormat.options parameter

`options` parameter

24
12
29
10
25
10
Intl.DateTimeFormat.DateTimeFormat.options parameter.options calendar parameter

`options.calendar` parameter

80
80
76
14.1
80
14.5
Intl.DateTimeFormat.DateTimeFormat.options parameter.options dateStyle parameter

`options.dateStyle` parameter

76
79
79
14.1
76
14.5
Intl.DateTimeFormat.DateTimeFormat.options parameter.options dayPeriod parameter

`options.dayPeriod` parameter

92
92
90
14.1
92
14.5
Intl.DateTimeFormat.DateTimeFormat.options parameter.options fractionalSecondDigits parameter

`options.fractionalSecondDigits` parameter

84
84
84
14.1
84
14.5
Intl.DateTimeFormat.DateTimeFormat.options parameter.options hourCycle parameter

`options.hourCycle` parameter

73
18
58
13
73
13
Intl.DateTimeFormat.DateTimeFormat.options parameter.options numberingSystem parameter

`options.numberingSystem` parameter

80
80
76
14.1
80
14.5
Intl.DateTimeFormat.DateTimeFormat.options parameter.options timeStyle parameter

`options.timeStyle` parameter

76
79
79
14.1
76
14.5
Intl.DateTimeFormat.DateTimeFormat.options parameter.options timeZoneName parameter

`options.timeZoneName` parameter

24
12
29
10
25
10
Intl.DateTimeFormat.DateTimeFormat.options parameter.options timeZoneName parameter.extended values

`shortGeneric`/`longGeneric`/`shortOffset`/`longOffset` as `options.timeZoneName` option

95
95
91
15.4
95
15.4
Intl.DateTimeFormat.DateTimeFormat.options parameter.options timeZone parameter

`options.timeZone` parameter

24
12
29
10
25
10
Intl.DateTimeFormat.DateTimeFormat.options parameter.options timeZone parameter.iana time zones

IANA time zone names in `options.timeZone` option

24
14
52
10
25
10

The format() method of Intl.DateTimeFormat instances formats a date according to the locale and formatting options of this Intl.DateTimeFormat object.

24
12
29
10
25
10

The formatRange() method of Intl.DateTimeFormat instances formats a date range in the most concise way based on the locales and options provided when instantiating this Intl.DateTimeFormat object.

76
79
91
14.1
76
14.5

The formatRangeToParts() method of Intl.DateTimeFormat instances returns an array of objects representing each part of the formatted string that would be returned by Intl/DatetimeFormat/formatRange. It is useful for building custom strings from the locale-specific tokens.

76
79
91
14.1
76
14.5

The formatToParts() method of Intl.DateTimeFormat instances returns an array of objects representing each part of the formatted string that would be returned by Intl/DatetimeFormat/format. It is useful for building custom strings from the locale-specific tokens.

57
18
51
11
57
11

The resolvedOptions() method of Intl.DateTimeFormat instances returns a new object with properties reflecting the options computed during initialization of this DateTimeFormat object.

24
12
29
10
25
10
Intl.DateTimeFormat.resolvedOptions.computed timezone

computed `timeZone`

35
14
53
10
35
10

The Intl.DateTimeFormat.supportedLocalesOf() static method returns an array containing those of the provided locales that are supported in date and time formatting without having to fall back to the runtime's default locale.

24
12
29
10
25
10

The Intl.NumberFormat object enables language-sensitive number formatting.

24
12
29
10
25
10

The Intl.NumberFormat() constructor creates Intl.NumberFormat objects.

24
12
29
10
25
10

A new Intl.NumberFormat object.

91
91
54
14.1
91
14.5
Intl.NumberFormat.NumberFormat.locales parameter

`locales` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter

`options` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options compactDisplay parameter

`options.compactDisplay` parameter

77
79
78
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options currencyDisplay parameter

`options.currencyDisplay` parameter

77
79
42
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options currencySign parameter

`options.currencySign` parameter

77
79
78
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options currency parameter

`options.currency` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options localeMatcher parameter

`options.localeMatcher` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options maximumFractionDigits parameter

`options.maximumFractionDigits` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options maximumSignificantDigits parameter

`options.maximumSignificantDigits` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options minimumFractionDigits parameter

`options.minimumFractionDigits` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options minimumIntegerDigits parameter

`options.minimumIntegerDigits` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options minimumSignificantDigits parameter

`options.minimumSignificantDigits` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options notation parameter

`options.notation` parameter

77
79
78
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options numberingSystem parameter

`options.numberingSystem` parameter

24
12
76
14.1
25
14.5
Intl.NumberFormat.NumberFormat.options parameter.options roundingIncrement parameter

`options.roundingIncrement` parameter

106
106
116
15.4
106
15.4
Intl.NumberFormat.NumberFormat.options parameter.options roundingMode parameter

`options.roundingMode` parameter

106
106
116
15.4
106
15.4
Intl.NumberFormat.NumberFormat.options parameter.options roundingPriority parameter

`options.roundingPriority` parameter

106
106
116
15.4
106
15.4
Intl.NumberFormat.NumberFormat.options parameter.options signDisplay parameter

`options.signDisplay` parameter

77
79
78
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options signDisplay parameter.negative

`negative` value

106
106
116
15.4
106
15.4
Intl.NumberFormat.NumberFormat.options parameter.options style parameter

`options.style` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options trailingZeroDisplay parameter

`options.trailingZeroDisplay` parameter

106
106
116
15.4
106
15.4
Intl.NumberFormat.NumberFormat.options parameter.options unitDisplay parameter

`options.unitDisplay` parameter

77
79
78
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options unit parameter

`options.unit` parameter

77
79
78
14.1
77
14.5
Intl.NumberFormat.NumberFormat.options parameter.options useGrouping parameter

`options.useGrouping` parameter

24
12
29
10
25
10
Intl.NumberFormat.NumberFormat.options parameter.options useGrouping parameter.string values

`options.useGrouping` parameter accepts: `'always'`, `'auto'`, `'min2'` (in addition to: `true` and `false`)

106
106
116
16.4
106
16.4

The format() method of Intl.NumberFormat instances formats a number according to the locale and formatting options of this Intl.NumberFormat object.

24
12
29
10
25
10
Intl.NumberFormat.format.number parameter-string decimal

`number` param string value is decimal (not `Number`)

106
106
116
15.4
106
15.4

The formatRange() method of Intl.NumberFormat instances formats a range of numbers according to the locale and formatting options of this Intl.NumberFormat object.

106
106
116
15.4
106
15.4

The formatRangeToParts() method of Intl.NumberFormat instances returns an Array of objects containing the locale-specific tokens from which it is possible to build custom strings while preserving the locale-specific parts. This makes it possible to provide locale-aware custom formatting ranges of number strings.

106
106
116
15.4
106
15.4

The formatToParts() method of Intl.NumberFormat instances returns an array of objects representing each part of the formatted string that would be returned by Intl/NumberFormat/format. It is useful for building custom strings from the locale-specific tokens.

64
12
58
13
64
13

The resolvedOptions() method of Intl.NumberFormat instances returns a new object with properties reflecting the options computed during initialization of this NumberFormat object.

24
12
29
10
25
10

The Intl.NumberFormat.supportedLocalesOf() static method returns an array containing those of the provided locales that are supported in number formatting without having to fall back to the runtime's default locale.

24
12
29
10
25
10

The Intl.getCanonicalLocales() static method returns an array containing the canonical locale names. Duplicates will be omitted and elements will be validated as structurally valid language tags.

54
16
48
10.1
54
10.3

The Intl.supportedValuesOf() static method returns an array containing the supported calendar, collation, currency, numbering systems, or unit values supported by the implementation.

99
99
93
15.4
99
15.4

The toLocaleString() method of Number values returns a string with a language-sensitive representation of this number. In implementations with Intl.NumberFormat API support, this method delegates to Intl.NumberFormat.

1
12
1
1
18
1
Number.toLocaleString.locales parameter

`locales` parameter

24
12
29
10
26
10
Number.toLocaleString.options parameter

`options` parameter

24
12
29
10
26
10

The toLocaleString() method of Object instances returns a string representing this object. This method is meant to be overridden by derived objects for locale-specific purposes.

1
12
1
1
18
1

The localeCompare() method of String values returns a number indicating whether this string comes before, or after, or is the same as the given string in sort order. In implementations with Intl.Collator API support, this method delegates to Intl.Collator.

1
12
1
3
18
1
String.localeCompare.locales parameter

`locales` parameter

24
12
29
10
26
10
String.localeCompare.options parameter

`options` parameter

24
12
29
10
26
10

The toLocaleLowerCase() method of String values returns this string converted to lower case, according to any locale-specific case mappings.

1
12
1
1.3
18
1

A string with a BCP 47 language tag, or an array of such strings. Indicates the locale to be used to convert to lower case according to any locale-specific case mappings. For the general form and interpretation of the locales argument, see the parameter description on the Intl main page.

58
12
55
10
58
10

The toLocaleUpperCase() method of String values returns this string converted to upper case, according to any locale-specific case mappings.

1
12
1
1.3
18
1

A string with a BCP 47 language tag, or an array of such strings. Indicates the locale to be used to convert to upper case according to any locale-specific case mappings. For the general form and interpretation of the locales argument, see the parameter description on the Intl main page.

58
12
55
10
58
10

The toLocaleString() method of TypedArray instances returns a string representing the elements of the typed array. The elements are converted to strings using their toLocaleString methods and these strings are separated by a locale-specific string (such as a comma ","). This method has the same algorithm as Array.prototype.toLocaleString().

7
12
51
5.1
18
5
1+Supported (version) Not supported Has note Sub-feature descriptions sourced from MDN Web Docs (CC BY-SA 2.5)
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (91)
Implementation note
  • The fallback symbol property has description `IntlFallback`.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (91)
Implementation note
  • The fallback symbol property has description `IntlFallback`.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (91)
Implementation note
  • The fallback symbol property has description `IntlFallback`.
Notes 1 item(s)
Implementation note
  • Before version 71, `formatToParts()` returned an object with an incorrectly cased type key of `dayperiod`. Version 71 and later use the specification defined `dayPeriod`. See bug 41402623.
Notes 1 item(s)
Implementation note
  • Before version 71, `formatToParts()` returned an object with an incorrectly cased type key of `dayperiod`. Version 71 and later use the specification defined `dayPeriod`. See bug 41402623.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (91)
Implementation note
  • The fallback symbol property has description `IntlFallback`.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (91)
Implementation note
  • The fallback symbol property has description `IntlFallback`.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (91)
Implementation note
  • The fallback symbol property has description `IntlFallback`.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (14.1)
Implementation note
  • Doesn't support `currencyDisplay: 'narrowSymbol'`.
Notes 3 item(s)
Limitation
  • This browser only partially implements this feature
Removed
  • This feature was removed in a later browser version (14.5)
Implementation note
  • Doesn't support `currencyDisplay: 'narrowSymbol'`.
Notes 1 item(s)
Implementation note
  • Before Edge 18, numbers are rounded to 15 decimal digits. For example, `new Intl.NumberFormat('en-US').format(1000000000000005)` returns `"1,000,000,000,000,010"`.
Notes 1 item(s)
Implementation note
  • Before Edge 18, numbers are rounded to 15 decimal digits. For example, `(1000000000000005).toLocaleString('en-US')` returns `"1,000,000,000,000,010"`.

Syntax

JAVASCRIPT
// Number formatting
new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' })
  .format(1234567); // '¥1,234,567'

// Date Format
new Intl.DateTimeFormat('ja-JP', { dateStyle: 'long' })
  .format(new Date()); // 'April 6, 2026'

Live demo

Currency and number formatting

Format the same value for different locales and compare how separators and currency symbols change.

JavaScript
Output
Press the Run button

Date formatting by locale

Render one Date with multiple locale rules to see how calendar output differs.

JavaScript
Output
Press the Run button

Use cases

  • Locale-aware formatting

    Format prices, dates, percentages, and lists in a way that matches users' regional expectations.

  • Building multilingual products

    Combine Intl formatters with translated UI copy so data looks native alongside each locale.

Cautions

  • Formatting output can vary by locale and browser version, so avoid tests that assert one exact string unless the locale is fixed.
  • Pick a locale intentionally rather than depending on the browser default for critical business output.

Accessibility

  • Locale-correct numbers and dates are easier to understand for everyone, but abbreviations and compact formats still need enough surrounding context.

Powered by web-features