W3docs

String Functions

String to Lowercase Converter

Convert any string to lowercase. Unicode-aware, so locale-sensitive characters fold correctly.

About converting text to lowercase

This tool converts any text you paste to lowercase: every uppercase letter becomes its lowercase equivalent, while digits, punctuation, spaces, and line breaks pass through unchanged. It runs entirely in your browser — there is no server round-trip, so nothing you type is uploaded, logged, or stored. Click Submit to run the conversion against whatever is in the source box; the result does not update automatically as you type.

Under the hood the transform is one call: JavaScript's String.prototype.toLowerCase(). It is not a plain A-Z swap — it applies Unicode's default case-conversion mapping, so accented and non-Latin letters fold correctly too (É becomes é, Ω becomes ω). This mapping is locale-independent by design: a handful of languages have case rules that differ from the Unicode default (Turkish's dotted and dotless i is the classic example — see the FAQ below), and toLowerCase() intentionally ignores those in favor of one consistent result everywhere.

Lowercasing is a normalization step as much as a formatting one. Case-insensitive comparisons (matching a username or tag regardless of how it was typed), building predictable URL slugs, deduplicating entries, and preparing text for search indexing typically lowercase the input first. It is also a required pre-step for some hashing schemes — Gravatar, for instance, specifies trimming and lowercasing an email address before MD5-hashing it. This differs from CSS's text-transform: lowercase, which only changes how text is displayed and leaves the underlying string untouched.

Examples

What Submit doestext
Input:
MAKE THIS TEXT quiet.

Output:
make this text quiet.

This is the tool's own placeholder text. Submit runs s.toLowerCase() against the Source box and writes the result into the read-only Result box — nothing updates live as you type.

The JavaScript one-linerjs
"CAFÉ RÉSUMÉ".toLowerCase();
// café résumé

The exact call the tool makes internally. No library or locale argument is needed for toLowerCase() to fold accented Latin, Greek, Cyrillic, and more.

PHP: strtolower() vs mb_strtolower()php
$s = "CAFÉ RÉSUMÉ";

strtolower($s);    // cafÉ rÉsumÉ  (only touches ASCII A-Z)
mb_strtolower($s); // café résumé (UTF-8 aware, matches JS)

PHP's plain strtolower() is byte-based and only touches ASCII A-Z by default. mb_strtolower() (or this tool, via JavaScript) is what you want for UTF-8 text.

Frequently asked questions

Does this tool send my text to a server?

No. The conversion runs entirely in your browser using JavaScript's String.prototype.toLowerCase() — your input is never uploaded, logged, or stored. Reload the page and it's gone.

Does toLowerCase() handle the Turkish İ correctly?

Not by default. Converting İstanbul with plain toLowerCase() maps the Turkish dotted capital İ (U+0130) to i plus a separate combining dot above — two code points instead of one — so the result is i̇stanbul (9 characters) instead of the plain istanbul (8) most people expect. Correct Turkish behavior needs toLocaleLowerCase('tr'), which this tool does not use.

What's the difference between toLowerCase() and toLocaleLowerCase()?

toLowerCase(), which this tool uses, always applies the same Unicode-standard mapping regardless of language. toLocaleLowerCase(locale) can apply language-specific rules instead — for Turkish specifically, it maps İ to a plain i and I to a dotless ı, neither of which the locale-independent version produces.

Is JavaScript's toLowerCase() the same as PHP's strtolower()?

No. JavaScript's toLowerCase() is Unicode-aware by default. PHP's strtolower() only converts ASCII A-Z and leaves accented uppercase letters like É untouched; PHP needs mb_strtolower() for correct UTF-8 behavior.

How is this different from CSS's text-transform: lowercase?

CSS's text-transform: lowercase only changes how text is displayed — the underlying string, and whatever gets copied or submitted from a form, is unchanged. This tool rewrites the actual text, which is what you need before storing, comparing, or hashing a value.