Intl
Intl provides locale-aware formatting and language-sensitive utilities such as number, date, list, and display name formatters.
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 |
- This browser only partially implements this feature
- This feature was removed in a later browser version (91)
- The fallback symbol property has description `IntlFallback`.
- This browser only partially implements this feature
- This feature was removed in a later browser version (91)
- The fallback symbol property has description `IntlFallback`.
- This browser only partially implements this feature
- This feature was removed in a later browser version (91)
- The fallback symbol property has description `IntlFallback`.
- 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.
- 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.
- This browser only partially implements this feature
- This feature was removed in a later browser version (91)
- The fallback symbol property has description `IntlFallback`.
- This browser only partially implements this feature
- This feature was removed in a later browser version (91)
- The fallback symbol property has description `IntlFallback`.
- This browser only partially implements this feature
- This feature was removed in a later browser version (91)
- The fallback symbol property has description `IntlFallback`.
- This browser only partially implements this feature
- This feature was removed in a later browser version (14.1)
- Doesn't support `currencyDisplay: 'narrowSymbol'`.
- This browser only partially implements this feature
- This feature was removed in a later browser version (14.5)
- Doesn't support `currencyDisplay: 'narrowSymbol'`.
- 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"`.
- Before Edge 18, numbers are rounded to 15 decimal digits. For example, `(1000000000000005).toLocaleString('en-US')` returns `"1,000,000,000,000,010"`.
Syntax
// 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.
Date formatting by locale
Render one Date with multiple locale rules to see how calendar output differs.
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.
Related links
Powered by web-features