JavaScript String toLocaleLowerCase() Method

Beginner
5 min read
Updated: Nov 2026
3 examples
Method

Definition

String.prototype.toLocaleLowerCase(locales?) returns a new lowercased string using locale-specific case rules. For most Latin text it matches toLowerCase(); languages like Turkish can differ.

Pass the required arguments shown below. Check return values and browser support before you rely on the result.

Syntax

Call string.toLocaleLowerCase. Start with this line.

JavaScript
str.toLocaleLowerCase(locales?)
CallWhat it does
str.toLocaleLowerCase(locales?)Primary signature.
string.toLocaleLowerCase(...)Call with the arguments your case needs.

Built into JavaScript. Call toLocaleLowerCase(...) on a string (or String instance) — no import required.

Library declarations
JavaScript
str.toLocaleLowerCase(locales?)

Parameters

ParameterDescription
localesOptional. BCP 47 tag or array; default = host locale

Return Value

Return ValueDescription
*New lowercased string

JavaScript Examples

Example 1 — Basic Locale Lowercase

Lowercase a string with the host default locale (or a simple Latin locale).

JavaScript
const text = "HELLO";

console.log(text.toLocaleLowerCase());
// "hello"

console.log(text);  // "HELLO" (unchanged)
Try It Yourself

How It Works

  1. Start with text. text is uppercase "HELLO".
  2. Call the method. No locale arg → host default case mapping.
  3. Get a new string. Result is "hello".
  4. Original stays put. Strings are immutable.

Example 2 — Turkish vs English Locale

Pass a BCP 47 tag when language-specific case rules matter.

JavaScript
const city = "İstanbul";

console.log(city.toLocaleLowerCase("tr"));
// "istanbul"

console.log(city.toLocaleLowerCase("en-US"));
// "i̇stanbul"  (i + combining dot)
Try It Yourself

How It Works

  1. Start with İ. That is Latin capital I with a dot above (U+0130).
  2. Turkish mapping. "tr" lowercases it to plain i.
  3. English mapping. "en-US" often keeps a combining dot → i̇.
  4. Pass the UI language. Case folding for display should match the user’s locale.

Example 3 — toLocaleLowerCase vs toLowerCase

They often match; choose locale-aware when language rules can differ.

JavaScript
const city = "İstanbul";

console.log(city.toLocaleLowerCase("tr"));
console.log(city.toLowerCase());

console.log("HELLO".toLocaleLowerCase() === "HELLO".toLowerCase());
// true for simple Latin text
Try It Yourself

How It Works

  1. Locale-aware path. toLocaleLowerCase("tr") applies Turkish rules.
  2. Default Unicode path. toLowerCase() does not take a locale.
  3. ASCII is boring (in a good way). Simple Latin often matches on both APIs.
  4. Rule of thumb. User-facing text → locale method; simple ASCII → either is fine.

Browser & Runtime Support

String.prototype.toLocaleLowerCase() is widely available. The optional locales argument is supported in modern browsers and Node.js.

✓ Baseline · Widely available

String.toLocaleLowerCase()

Supported in modern browsers and Node.js. Prefer an explicit locales tag when your app must behave the same across hosts.

98% Modern browser support
Google Chrome Supported · Desktop & Mobile
Full support
Mozilla Firefox Supported · Desktop & Mobile
Full support
Apple Safari Supported · macOS & iOS
Full support
Microsoft Edge Supported · Chromium
Full support
Internet Explorer No native support · Use a polyfill
Polyfill
Opera Supported · Modern versions
Full support
Samsung Internet Supported · Android
Full support
Bun Supported · JavaScript runtime
Supported
Deno Supported · JavaScript runtime
Supported
Node.js Supported · Server runtime
Supported
Android WebView Supported · Modern WebView
Full support
toLocaleLowerCase() Excellent

Bottom line: Safe for modern web apps. For ASCII-only pipelines, toLowerCase() is fine; for multilingual UI, pass the active locale explicitly.

Frequently Asked Questions

String.prototype.toLocaleLowerCase(locales?) returns a new string with characters lowercased using locale-specific case mappings. Without locales, the host default locale is used.
For most Latin text they match. toLocaleLowerCase respects language rules (for example Turkish dotted/dotless i). Prefer toLocaleLowerCase when the UI language can change case mapping.
A BCP 47 language tag such as "tr" or "en-US", or an array of tags. Unlike Intl.Collator, toLocaleLowerCase does not do locale matching — it uses the first locale in the list (or the default if the list is empty).
In Turkish, uppercase İ (U+0130) lowercases to plain i, while English often produces i plus a combining dot. Passing "tr" gives the Turkish mapping.
No. Strings are immutable. The method returns a new lowercased string.
Use toLowerCase for simple ASCII or when you intentionally want the Unicode default mapping and do not care about locale. Use toLocaleLowerCase for user-facing text in a known language.

Next: toLocaleUpperCase()

Learn the matching locale-aware uppercase conversion.

toLocaleUpperCase() tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

10 people found this page helpful