String.prototype.toLowerCase() returns a new lowercased string using Unicode default case mappings. Ideal for simple case-insensitive checks. The original string is never changed.
Pass the required arguments shown below. Check return values and browser support before you rely on the result.
Syntax
Call string.toLowerCase. Start with this line.
JavaScript
str.toLowerCase()
Call
What it does
str.toLowerCase()
Primary signature.
string.toLowerCase(...)
Call with the arguments your case needs.
Built into JavaScript. Call toLowerCase(...) on a string (or String instance) — no import required.
Library declarations
JavaScript
str.toLowerCase()
Parameters
This member has no parameters beyond those shown in the signature.
Return Value
Return Value
Description
*
New lowercased string
JavaScript Examples
Example 1 — Basic Lowercase
Convert mixed-case text with Unicode default mappings.
Different casing.a and b look different as written.
Normalize both. Call toLowerCase() on each side.
Compare equals. Both become "javascript" → true.
Common pattern. Useful for tags, commands, and simple matching.
Example 3 — toLowerCase vs toLocaleLowerCase
Default mapping ignores locale; Turkish rules can differ for İ.
JavaScript
const city = "İstanbul";
console.log(city.toLowerCase());
console.log(city.toLocaleLowerCase("tr"));
console.log("HELLO".toLowerCase() === "HELLO".toLocaleLowerCase());
// true for simple Latin text
Default path.toLowerCase() uses Unicode defaults (no locale).
Locale path.toLocaleLowerCase("tr") applies Turkish rules for İ.
ASCII is boring. Simple Latin often matches on both APIs.
Rule of thumb. User-facing multilingual text → locale method; simple ASCII → toLowerCase is fine.
Compatibility
Browser & Runtime Support
String.prototype.toLowerCase() has been available since the earliest JavaScript engines. Safe everywhere.
✓ Baseline · Widely available
String.toLowerCase()
Supported in all modern browsers and Node.js. No polyfill needed for everyday use.
100%Modern browser 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
toLowerCase()Excellent
Bottom line: Safe for every environment. Prefer toLocaleLowerCase() when language-specific case rules matter.
Frequently Asked Questions
String.prototype.toLowerCase() returns a new string with characters converted to lowercase using Unicode default case mappings. It takes no arguments.
No. Strings are immutable. toLowerCase() returns a new lowercased string; the original stays unchanged.
toLowerCase always uses Unicode default mappings. toLocaleLowerCase can follow language-specific rules (for example Turkish İ). Prefer toLocaleLowerCase for user-facing text in a known language.
Normalize both sides: a.toLowerCase() === b.toLowerCase(). For Turkish and similar locales, use toLocaleLowerCase with the same locale on both sides.
No. If you need locale-aware lowercasing, use toLocaleLowerCase(locales).
Use toUpperCase when you need uppercase text. The APIs are mirrors of each other for default Unicode mappings.