Intl.supportedValuesOf()

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

Duplicates are omitted and the array is sorted in ascending lexicographical order (or more precisely, using Array.prototype.sort() with an undefined compare function).

The method can be used to feature-test whether values are supported in a particular implementation and download a polyfill only if necessary. It can also be used to build UIs that allow users to select their preferred localized values, for example when the UI is created from WebGL or server-side.

This method is locale-unaware: it is possible that certain identifiers are only supported or preferred in certain locales. If you want to determine the preferred values for a specific locale, you should use the Intl.Locale object, such as Intl.Locale.prototype.getCalendars().

Try it

console.log(Intl.supportedValuesOf("calendar"));
console.log(Intl.supportedValuesOf("collation"));
console.log(Intl.supportedValuesOf("currency"));
console.log(Intl.supportedValuesOf("numberingSystem"));
console.log(Intl.supportedValuesOf("timeZone"));
console.log(Intl.supportedValuesOf("unit"));
// Expected output: Array ['key'] (for each key)

try {
  Intl.supportedValuesOf("someInvalidKey");
} catch (err) {
  console.log(err.toString());
  // Expected output: RangeError: invalid key: "someInvalidKey"
}

Syntax

js
Intl.supportedValuesOf(key)

Parameters

key

A key string indicating the category of values to be returned. This is one of:

Return value

A sorted array of unique string values indicating the values supported by the implementation for the given key. The values that could be returned are listed below.

Supported calendar types

Below are all values that are commonly supported by browsers for the calendar key. These values can be used for the calendar option or the ca Unicode extension key when creating objects such as Intl.DateTimeFormat, as well as for creating Temporal date objects. This list is explicitly sanctioned by the ECMA-402 specification, so all implementations should be consistent.

ValueDescription
buddhistThai Buddhist calendar, proleptic. Month numbers, month codes, and days are the same as in the ISO 8601 calendar, but the epoch year is different. There is one era.
chineseTraditional Chinese calendar, proleptic. Lunisolar calendar used in China based on data published by the Purple Mountain Observatory between 1900 and 2100 (which compiles with GB/T 33661-2017 between 1912 and 2100), falling back to an implementation-defined approximation outside that range. The arithmetic year is identical to gregory, and there are no eras.
copticCoptic calendar, proleptic. Similar solar algorithm to ethioaa and ethiopic, with one era and a different epoch year.
dangiTraditional Korean calendar, proleptic. Lunisolar calendar using months published by the Korea Astronomy and Space Science Institute (KASI) between 1900 and 2050, falling back to an implementation-defined approximation outside that range. The arithmetic year is identical to gregory, and there are no eras.
ethioaaEthiopic calendar, Amete Alem, proleptic. Similar solar algorithm to coptic and ethiopic, with one era and a different epoch year.
ethiopicEthiopic calendar, Amete Mihret, proleptic. Similar solar algorithm to coptic and ethioaa, with two eras and a different epoch year.
gregoryGregorian calendar, proleptic. Solar calendar almost identical to the ISO 8601 calendar, except that it does not define week numbering and it contains two eras, one before the epoch year.
hebrewHebrew calendar, proleptic. Civil calendar with Tishrei as the first month of the year. Lunisolar calendar with one leap month inserted after month 5. There is one era.
indianIndian national (or Śaka) calendar, proleptic. Solar calendar with one era.
islamic-civilHijri calendar, proleptic, tabular/rule-based with leap year rule II (leap years 2,5,7,10,13,16,18,21,24,26,29 in the 30-year cycle (1-based numbering)) and civil epoch (Friday July 16, 622 Julian / 0622-07-19 ISO)
islamic-tblaHijri calendar, proleptic, tabular/rule-based with leap year rule II (leap years 2,5,7,10,13,16,18,21,24,26,29 in the 30-year cycle (1-based numbering)) and astronomical epoch (Thursday July 15, 622 Julian / 0622-07-18 ISO)
islamic-umalquraHijri calendar, proleptic, Umm al-Qura. Lunar calendar using KACST-calculated months from the start of 1300 AH (1882-11-12 ISO) to the end of 1600 AH (2174-11-25 ISO), falling back to islamic-civil outside that range.
iso8601ISO calendar (variant of the Gregorian calendar with week rules and formatting parameters made region-independent)
japaneseJapanese Imperial calendar (this calendar adds an era for each new emperor, so the output year and era for a future date may not match the input year and era when your code runs on a future engine version. Note: See the remarks below this table about dates prior to 1868-10-23 ISO.)
persianPersian (or Solar Hijri) calendar, proleptic. There is one era.
rocRepublic of China (or Minguo) calendar, proleptic. Month numbers, month codes, and days are the same as in the ISO 8601 calendar, but the epoch year is different. There are two eras, one before the epoch year and one after.

As of October 2025, in the japanese calendar, dates prior to 1868-10-23 ISO (the start date of the year 1 Meiji) don't work as expected in browsers in two ways. First, CLDR had the wrong start date for the Meiji era, which causes calendar implementations to extend the Meiji era further to the past than it actually did. Second, the upcoming Intl era and monthCode Proposal specifies that dates prior to 1873-01-01 ISO should use Gregorian eras, but browsers have traditionally used approximations of prior Japanese eras instead. The japanese calendar was taken into use on January 1, 6 Meiji / 1873-01-01 ISO, so these problems only affect proleptic dates.

The types below are specified in CLDR but do not have implementations distinct from the above calendars in browsers.

ValueDescriptionNotes
ethiopic-amete-alemEthiopic calendar, Amete Alem, proleptic.This is an alias for ethioaa and therefore is not returned by supportedValuesOf(). Use ethioaa instead.
islamicHijri calendar, unspecified algorithm.As of April 2025, this is an astronomical simulation whose parameters are undocumented and that is not known to match a specific Hijri calendar variant from non-software contexts. It is specified to be canonicalized to a different calendar, usually one of islamic-umalqura, islamic-tbla, or islamic-civil, and raise a warning.
islamicc Civil (algorithmic) Arabic calendar.This is an alias for islamic-civil and therefore is not returned by supportedValuesOf(). Use islamic-civil instead.

The Temporal.PlainDate.prototype.era and Temporal.PlainDate.prototype.monthCode docs provide more information about different calendars.

References:

Supported collation types

Below are all values that are commonly supported by browsers for the collation key. These values can be used for the collation option or the co Unicode extension key when creating objects such as Intl.Collator.

ValueDescription
compatA previous version of the ordering, for compatibility (for Arabic)
dictDictionary style ordering (for Sinhala). Also recognized as dictionary.
emojiRecommended ordering for emoji characters. The requested language has no effect, so combining this with a language that requires language-specific rules breaks sorting for text in that language!
eorEuropean ordering rules (ENV 13710). This order is designed not to be language-specific. While the API requires attaching this to a language, the requested language has no effect on the order.
phonebkPhonebook style ordering (for German). Also recognized as phonebook.
phoneticPhonetic ordering (sorting based on pronunciation; for Lingala)
pinyinPinyin ordering for Latin and for Han characters (for Chinese)
searchjlSpecial collation type for Korean initial consonant search. Warning: This collation is not for sorting, even though you can only use it with Intl.Collator of usage: "sort".
strokePinyin ordering for Latin, stroke order for Han characters (for Chinese)
tradTraditional style ordering (such as in Spanish). Also recognized as traditional.
unihanUnihan radical-stroke ordering for Han characters (for Chinese, Japanese, and Korean), Pinyin ordering for Latin for Chinese and Japanese standard kana ordering for Japanese
zhuyinPinyin ordering for Latin, zhuyin order for Bopomofo and Han characters (for Chinese)

The types below are specified in CLDR data, but are deprecated, are discouraged from explicit usage, and/or may not be indicated by browsers as supported for various reasons. Avoid using them:

ValueDescriptionNotes
big5han Pinyin ordering for Latin, big5 charset ordering for CJK characters (used in Chinese)Deprecated.
direct Binary code point order (used in Hindi)Deprecated.
ducetThe default Unicode collation element table orderThe ducet collation type is not available to the Web.
gb2312 Pinyin ordering for Latin, gb2312han charset ordering for CJK characters (for Chinese). Also recognized as gb2312han.Deprecated.
reformed Reformed ordering (such as Swedish)Deprecated. This is the old name for the default ordering for Swedish whose collation naming used to differ from other languages. Since this was the default, request sv instead of requesting sv-u-co-reformed.
searchSpecial collation type for string searchDo not use as a collation type, since in Intl.Collator, this collation is activated via the usage: "search" option. There is currently no API for substring search, so this is currently only good for filtering a list of strings by trying a full-string match of the key against each list item.
standardDefault ordering for each language, except Chinese (and, previously, Swedish)Do not use explicitly. In general, it's unnecessary to specify this explicitly and specifying this for Swedish is problematic due to the different meaning for Swedish in the past.

References:

Supported currency identifiers

Currency identifiers are three-letter uppercase codes defined in ISO 4217. These values can be used for the currency option when creating objects such as Intl.NumberFormat, as well as for Intl.DisplayNames.prototype.of(). There are over 300 identifiers in common use so we won't list them. For an exhaustive list of possible identifiers, see the Wikipedia article.

References:

Supported numbering system types

Below are all values that are commonly supported by browsers for the numberingSystem key. These values can be used for the numberingSystem option or the nu Unicode extension key when creating objects such as Intl.NumberFormat. For the rows with "digit characters", the runtime translates the digits one-by-one without extra actions. The others marked as "algorithmic" need additional algorithms to translate the digits. The higher the Unicode code point is, the newer the numbering system is and the more likely it is unsupported by all browsers.

ValueDescriptionDigit characters
adlmAdlam digits𞥐𞥑𞥒𞥓𞥔𞥕𞥖𞥗𞥘𞥙 (U+1E950 to U+1E959)
ahomAhom digits𑜰𑜱𑜲𑜳𑜴𑜵𑜶𑜷𑜸𑜹 (U+11730 to U+11739)
arabArabic-Indic digits٠١٢٣٤٥٦٧٨٩ (U+0660 to U+0669)
arabextExtended Arabic-Indic digits۰۰۱۲۳۴۵۶۷۸۹ (U+06F0 to U+06F9)
armnArmenian upper case numeralsalgorithmic
armnlowArmenian lower case numeralsalgorithmic
baliBalinese digits᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙ (U+1B50 to U+1B59)
bengBengali digits০১২৩৪৫৬৭৮৯ (U+09E6 to U+09EF)
bhksBhaiksuki digits𑱐𑱑𑱒𑱓𑱔𑱕𑱖𑱗𑱘𑱙 (U+11C50 to U+11C59)
brahBrahmi digits𑁦𑁧𑁨𑁩𑁪𑁫𑁬𑁭𑁮𑁯 (U+11066 to U+1106F)
cakmChakma digits𑄶𑄷𑄸𑄹𑄺𑄻𑄼𑄽𑄾𑄿 (U+11136 to U+1113F)
chamCham digits꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙ (U+AA50 to U+AA59)
cyrlCyrillic numeralsalgorithmic
devaDevanagari digits०१२३४५६७८९ (U+0966 to U+096F)
diakDives Akuru digits𑥐𑥑𑥒𑥓𑥔𑥕𑥖𑥗𑥘𑥙 (U+11950 to U+11959)
ethiEthiopic numeralsalgorithmic
fullwideFull width digits0123456789 (U+FF10 to U+FF19)
garaGaray digits𐵀𐵁𐵂𐵃𐵄𐵅𐵆𐵇𐵈𐵉 (U+10D40 to U+10D49)
georGeorgian numeralsalgorithmic
gongGunjala Gondi digits𑶠𑶡𑶢𑶣𑶤𑶥𑶦𑶧𑶨𑶩 (U+11DA0 to U+11DA9)
gonmMasaram Gondi digits𑵐𑵑𑵒𑵓𑵔𑵕𑵖𑵗𑵘𑵙 (U+11D50 to U+11D59)
grekGreek upper case numeralsalgorithmic
greklowGreek lower case numeralsalgorithmic
gujrGujarati digits૦૧૨૩૪૫૬૭૮૯ (U+0AE6 to U+0AEF)
gukhGurung Khema digits𖄰𖄱𖄲𖄳𖄴𖄵𖄶𖄷𖄸𖄹 (U+16130 to U+16139)
guruGurmukhi digits੦੧੨੩੪੫੬੭੮੯ (U+0A66 to U+0A6F)
hanidaysHan-character day-of-month numbering for lunar/other traditional calendars
hanidecPositional decimal system using Chinese number ideographs as digits〇一二三四五六七八九 (U+3007, U+4E00, U+4E8C, U+4E09, U+56DB, U+4E94, U+516D, U+4E03, U+516B, U+4E5D)
hansSimplified Chinese numeralsalgorithmic
hansfinSimplified Chinese financial numeralsalgorithmic
hantTraditional Chinese numeralsalgorithmic
hantfinTraditional Chinese financial numeralsalgorithmic
hebrHebrew numeralsalgorithmic
hmngPahawh Hmong digits𖭐𖭑𖭒𖭓𖭔𖭕𖭖𖭗𖭘𖭙 (U+16B50 to U+16B59)
hmnpNyiakeng Puachue Hmong digits𞅀𞅁𞅂𞅃𞅄𞅅𞅆𞅇𞅈𞅉 (U+1E140 to U+1E149)
javaJavanese digits꧐꧑꧒꧓꧔꧕꧖꧗꧘꧙ (U+A9D0 to U+A9D9)
jpanJapanese numeralsalgorithmic
jpanfinJapanese financial numeralsalgorithmic
jpanyearJapanese first-year Gannen numbering for Japanese calendaralgorithmic
kaliKayah Li digits꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉ (U+A900 to U+A909)
kawiKawi digits𑽐𑽑𑽒𑽓𑽔𑽕𑽖𑽗𑽘𑽙 (U+11F50 to U+11F59)
khmrKhmer digits០១២៣៤៥៦៧៨៩ (U+17E0 to U+17E9)
kndaKannada digits೦೧೨೩೪೫೬೭೮೯ (U+0CE6 to U+0CEF)
kraiKirat Rai digits𖵰𖵱𖵲𖵳𖵴𖵵𖵶𖵷𖵸𖵹 (U+16D70 to U+16D79)
lanaTai Tham Hora (secular) digits᪀᪁᪂᪃᪄᪅᪆᪇᪈᪉ (U+1A80 to U+1A89)
lanathamTai Tham (ecclesiastical) digits᪐᪑᪒᪓᪔᪕᪖᪗᪘᪙ (U+1A90 to U+1A99)
laooLao digits໐໑໒໓໔໕໖໗໘໙ (U+0ED0 to U+0ED9)
latnLatin digits0123456789 (U+0030 to U+0039)
lepcLepcha digits᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉ (U+1C40 to U+1C49)
limbLimbu digits᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏ (U+1946 to U+194F)
mathboldMathematical bold digits𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗 (U+1D7CE to U+1D7D7)
mathdblMathematical double-struck digits𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡 (U+1D7D8 to U+1D7E1)
mathmonoMathematical monospace digits𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿 (U+1D7F6 to U+1D7FF)
mathsanbMathematical sans-serif bold digits𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵 (U+1D7EC to U+1D7F5)
mathsansMathematical sans-serif digits𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫 (U+1D7E2 to U+1D7EB)
mlymMalayalam digits൦൧൨൩൪൫൬൭൮൯ (U+0D66 to U+0D6F)
modiModi digits𑙐𑙑𑙒𑙓𑙔𑙕𑙖𑙗𑙘𑙙 (U+11650 to U+11659)
mongMongolian digits᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙ (U+1810 to U+1819)
mrooMro digits𖩠𖩡𖩢𖩣𖩤𖩥𖩦𖩧𖩨𖩩 (U+16A60 to U+16A69)
mteiMeetei Mayek digits꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹ (U+ABF0 to U+ABF9)
mymrMyanmar digits၀၁၂၃၄၅၆၇၈၉ (U+1040 to U+1049)
mymrepkaMyanmar Eastern Pwo Karen digits𑛚𑛛𑛜𑛝𑛞𑛟𑛠𑛡𑛢𑛣 (U+116DA to U+116E3)
mymrpaoMyanmar Pao digits𑛐𑛑𑛒𑛓𑛔𑛕𑛖𑛗𑛘𑛙 (U+116D0 to U+116D9)
mymrshanMyanmar Shan digits႐႑႒႓႔႕႖႗႘႙ (U+1090 to U+1099)
mymrtlngMyanmar Tai Laing digits꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹ (U+A9F0 to U+A9F9)
nagmNag Mundari digits𞓰𞓱𞓲𞓳𞓴𞓵𞓶𞓷𞓸𞓹 (U+1E4F0 to U+1E4F9)
newaNewa digits𑑐𑑑𑑒𑑓𑑔𑑕𑑖𑑗𑑘𑑙 (U+11450 to U+11459)
nkooN'Ko digits߀߁߂߃߄߅߆߇߈߉ (U+07C0 to U+07C9)
olckOl Chiki digits᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙ (U+1C50 to U+1C59)
onaoOl Onal digits𞗱𞗲𞗳𞗴𞗵𞗶𞗷𞗸𞗹𞗺 (U+1E5F1 to U+1E5FA)
oryaOriya digits୦୧୨୩୪୫୬୭୮୯ (U+0B66 to U+0B6F)
osmaOsmanya digits𐒠𐒡𐒢𐒣𐒤𐒥𐒦𐒧𐒨𐒩 (U+104A0 to U+104A9)
outlinedLegacy computing outlined digits𜳰𜳱𜳲𜳳𜳴𜳵𜳶𜳷𜳸𜳹 (U+1CCF0 to U+1CCF9)
rohgHanifi Rohingya digits𐴰𐴱𐴲𐴳𐴴𐴵𐴶𐴷𐴸𐴹 (U+10D30 to U+10D39)
romanRoman upper case numeralsalgorithmic
romanlowRoman lowercase numeralsalgorithmic
saurSaurashtra digits꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙ (U+A8D0 to U+A8D9)
segmentLegacy computing segmented digits🯰🯱🯲🯳🯴🯵🯶🯷🯸🯹 (U+1FBF0 to U+1FBF9)
shrdSharada digits𑇐𑇑𑇒𑇓𑇔𑇕𑇖𑇗𑇘𑇙 (U+111D0 to U+111D9)
sindKhudawadi digits𑋰𑋱𑋲𑋳𑋴𑋵𑋶𑋷𑋸𑋹 (U+112F0 to U+112F9)
sinhSinhala Lith digits෦෧෨෩෪෫෬෭෮෯ (U+0DE6 to U+0DEF)
soraSora_Sompeng digits𑃰𑃱𑃲𑃳𑃴𑃵𑃶𑃷𑃸𑃹 (U+110F0 to U+110F9)
sundSundanese digits᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹ (U+1BB0 to U+1BB9)
sunuSunuwar digits𑯰𑯱𑯲𑯳𑯴𑯵𑯶𑯷𑯸𑯹 (U+11BF0 to U+11BF9)
takrTakri digits𑛀𑛁𑛂𑛃𑛄𑛅𑛆𑛇𑛈𑛉 (U+116C0 to U+116C9)
taluNew Tai Lue digits᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙ (U+19D0 to U+19D9)
tamlTamil numeralsalgorithmic
tamldecModern Tamil decimal digits௦௧௨௩௪௫௬௭௮௯ (U+0BE6 to U+0BEF)
teluTelugu digits౦౧౨౩౪౫౬౭౮౯ (U+0C66 to U+0C6F)
thaiThai digits๐๑๒๓๔๕๖๗๘๙ (U+0E50 to U+0E59)
tibtTibetan digits༠༡༢༣༤༥༦༧༨༩ (U+0F20 to U+0F29)
tirhTirhuta digits𑓐𑓑𑓒𑓓𑓔𑓕𑓖𑓗𑓘𑓙 (U+114D0 to U+114D9)
tnsaTangsa digits𖫀𖫁𖫂𖫃𖫄𖫅𖫆𖫇𖫈𖫉 (U+16AC0 to U+16AC9)
vaiiVai digits꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩ (U+A620 to U+A629)
waraWarang Citi digits𑣠𑣡𑣢𑣣𑣤𑣥𑣦𑣧𑣨𑣩 (U+118E0 to U+118E9)
wchoWancho digits𞋰𞋱𞋲𞋳𞋴𞋵𞋶𞋷𞋸𞋹 (U+1E2F0 to U+1E2F9)

There are three special values: native, traditio, and finance, whose meanings are locale-dependent, and will be resolved to the right system depending on the locale. Therefore, the resolvedOptions() methods will never return these values, but Intl.Locale.prototype.numberingSystem will (if provided as input).

References:

Supported time zone identifiers

Supported time zone identifiers can be used for the timeZone option when creating objects such as Intl.DateTimeFormat, as well as for creating Temporal date objects. There are over 400 identifiers in common use so we won't list them. For an exhaustive list of possible identifiers, see the Wikipedia article or the IANA time zone database.

As you browse the list, note that the standardization of Temporal requires browsers to always return the primary identifier in the IANA database, which may change over time. See time zones and offsets for more information. For example, the returned array should contain "Asia/Kolkata" instead of "Asia/Calcutta" because the latter is an alias of the former and they both correspond to India; however, it should contain both "Africa/Abidjan" and "Atlantic/Reykjavik" because they are in different countries, despite the latter also being an alias of the former.

References:

Supported unit identifiers

Below are all values that are commonly supported by browsers for the unit key. These values can be used for the unit option when creating objects such as Intl.NumberFormat. This list is a subset of the CLDR explicitly sanctioned by the ECMA-402 specification, so all implementations should be consistent.

When specifying units, you can also combine two units with the "-per-" separator. For example, meter-per-second or liter-per-megabyte.

References:

Exceptions

RangeError

Thrown if an unsupported key was passed as a parameter.

Examples

undefined

Feature testing

You can check that the method is supported by comparing to undefined:

js
if (typeof Intl.supportedValuesOf !== "undefined") {
  // method is supported
}

Get all values for key

To get the supported values for calendar you call the method with the key "calendar". You can then iterate through the returned array as shown below:

js
Intl.supportedValuesOf("calendar").forEach((calendar) => {
  // "buddhist", "chinese", "coptic", "dangi", etc.
});

The other values are all obtained in the same way:

js
Intl.supportedValuesOf("collation").forEach((collation) => {
  // "compat", "dict", "emoji", etc.
});

Intl.supportedValuesOf("currency").forEach((currency) => {
  // "ADP", "AED", "AFA", "AFN", "ALK", "ALL", "AMD", etc.
});

Intl.supportedValuesOf("numberingSystem").forEach((numberingSystem) => {
  // "adlm", "ahom", "arab", "arabext", "bali", etc.
});

Intl.supportedValuesOf("timeZone").forEach((timeZone) => {
  // "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", etc.
});

Intl.supportedValuesOf("unit").forEach((unit) => {
  // "acre", "bit", "byte", "celsius", "centimeter", etc.
});

Invalid key throws RangeError

js
try {
  Intl.supportedValuesOf("someInvalidKey");
} catch (err) {
  // RangeError: invalid key: "someInvalidKey"
}

Specifications

See also