Array.prototype.toLocaleString(locales?, options?) turns each element into a locale-aware string (when that type supports it), then joins the pieces into one string. It does not mutate the array. Plain toString() skips localization.
Remember
array.toLocaleString(locales?, options?)
each element → element.toLocaleString(locales, options)
then join with a list separator (often ",")
numbers / dates → locale formatting
plain strings → not translated
does not mutate the array ✓
pass an explicit locale for predictable output
Syntax
Call array.toLocaleString. Start with this line.
JavaScript
array.toLocaleString(locales?, options?)
Call
What it does
array.toLocaleString(locales?, options?)
Primary signature.
array.toLocaleString(...)
Call with the arguments your case needs.
Built into JavaScript. Call toLocaleString(...) on an array instance — no import required.
Library declarations
JavaScript
array.toLocaleString(locales?, options?)
Parameters
Parameter
Description
Array
Required. Source values to format (read-only)
locales
Optional. BCP 47 tag like "en-US" or "de-DE"
options
Optional. Forwarded to each element (e.g. currency)
When to choose. UI for humans → locale; simple debug dump → toString / join.
Compatibility
Browser & Runtime Support
Array.prototype.toLocaleString() has been available since ES3. Passing locales and options relies on the engine’s Intl support (strong in all modern browsers).
✓ Baseline · ES3 + Intl
Array.prototype.toLocaleString()
Supported in every major browser and Node.js. Rich currency/date options work wherever Intl.NumberFormat / Intl.DateTimeFormat are available.
99%Near-universal support
Google ChromeSupported · Desktop & Mobile
Full support
Mozilla FirefoxSupported · Desktop & Mobile
Full support
Apple SafariSupported · macOS & iOS
Full support
Microsoft EdgeSupported · Chromium
Full support
Internet ExplorerNo native support · Use a polyfill
Polyfill
OperaSupported · Modern versions
Full support
Samsung InternetSupported · Android
Full support
BunSupported · JavaScript runtime
Supported
DenoSupported · JavaScript runtime
Supported
Node.jsSupported · Server runtime
Supported
Android WebViewSupported · Modern WebView
Full support
Array.toLocaleString()Excellent
Bottom line: Safe for modern apps. Always pass an explicit locale in shared code so formatting does not silently change with the user’s system settings.
Frequently Asked Questions
toLocaleString() converts each array element to a string using locale-aware formatting (when the element supports it), then joins them with a list separator (often a comma). It returns one string and does not mutate the array.
No. toLocaleString() only reads elements and returns a new string. The original array is unchanged.
Both join elements into one string. toLocaleString() passes locale and options to each element's toLocaleString method, so numbers and dates format for a region. toString() uses default string conversion without localization.
locales is a BCP 47 language tag (e.g. 'en-US', 'de-DE') or an array of tags. options is an object forwarded to each element's toLocaleString—for example { style: 'currency', currency: 'USD' } for numbers.
No. Plain strings like 'Hello' are not translated. Localization applies to how numbers, dates, and similar values are formatted—not automatic translation of words.
Array.toLocaleString() has been available since ES3 and works in all browsers. Locale and option support depends on the engine's Intl implementation (excellent in modern browsers).