3tej home

What is Lowercase Converter?

A Lowercase Converter converts data from one format to another using a deterministic mapping. It parses the input, transforms it according to the relevant standard, and returns a ready-to-use result. Paste any text and instantly convert it to lowercase. The.

Lowercase Converter

Paste any text and convert it to lowercase in one click. Works offline.

Browser-onlyInstantFree foreverWorks offlineNo signup
← Utilities

TLDR

Paste text, press Convert, get lowercase output. Numbers, punctuation, and whitespace stay as they were.

0 words · 0 chars
Runs entirely in your browser. No upload, no signup, no logging. Output is for personal or commercial use; we don't claim any rights.

About the lowercase converter

A lowercase converter folds every uppercase letter in the input down to its lowercase counterpart while leaving digits, punctuation, whitespace, and most symbols untouched. The transformation is deterministic and one-way: the tool cannot recover the original casing once you discard it. Lowercase is the default normalisation case for URL slugs, hashtags, email addresses, CSS class names, package identifiers in npm and PyPI, environment-variable names on macOS and Linux, and most database lookup keys, so this conversion sits at the start of almost every text-cleaning pipeline.

This implementation runs entirely in your browser using the standard String.prototype.toLowerCase() method defined in ECMA-262. That method walks the input string code point by code point, looks each character up in the Unicode case-folding table (UnicodeData.txt), and emits the simple lowercase mapping for that code point. Code points without an uppercase form, such as digits, punctuation, kanji, hiragana, emoji, and most symbols, pass through unchanged.

How it works under the hood

output[i] = simpleLowerMap(codePoint(input[i]))
// Unicode case folding, not locale-aware
// surrogate pairs treated as single code points
  • Code-point iteration. JavaScript iterates UTF-16 code units, but toLowerCase correctly pairs surrogates so astral characters (emoji, mathematical alphanumerics, ancient scripts) are handled as one unit.
  • Simple case folding. The lookup uses Unicode's Simple Lowercase Mapping (field 13 of UnicodeData.txt), which produces a single-character result for every code point with a defined lowercase.
  • No locale tag. Plain toLowerCase ignores BCP 47 language tags. Turkish-specific I mappings, Lithuanian dot-above rules, and the German capital ẞ all require toLocaleLowerCase('xx').
  • Idempotent. Running the converter twice on the same input produces the same output. Lowercase letters stay lowercase.

Worked example

Suppose you paste the following two-line input scraped from a marketing email:

URGENT: Your iPhone 16 Pro Order #A-7841 Has Shipped
Track at https://Tracking.FedEx.COM/abc
  1. Letter folding. Every A-Z becomes a-z, every accented capital folds to its lowercase. Digits 16, 7841 and the # symbol pass through.
  2. Punctuation preserved. The colon, space, slash, and hyphen all survive byte for byte.
  3. URL flattened. The mixed-case host Tracking.FedEx.COM lowercases too, which is fine for DNS (hostnames are case-insensitive) but the path /abc was already lowercase.
Result: urgent: your iphone 16 pro order #a-7841 has shipped
track at https://tracking.fedex.com/abc

Notice the brand name iPhone is now iphone, the SKU prefix A is now a, and any acronyms like FedEx have flattened. That is expected behaviour, not a bug. If you need to preserve specific tokens, copy them aside before converting and paste them back.

What lowercases and what does not

Input character classLowercase resultNotes
Basic Latin A-Za-zASCII fast path, identical to tolower(3)
Latin-1 accented (À, Ç, Ñ)à, ç, ñUnicode aware
Greek (Α, Σ, Ω)α, σ, ωFinal sigma ς not detected; uses medial σ
Cyrillic (Д, Ж, Я)д, ж, яRussian, Ukrainian, Bulgarian all covered
German ß and ẞß and ßCapital ẞ only folds with locale 'de'
Turkish I and İi and i̇Dotless ı requires locale 'tr'
Digits 0-90-9No case
Punctuation, symbols, emojiunchangedNo case
CJK ideographs, kana, hangulunchangedNo case

Pitfalls to watch for

  • Brand and product names lose recognition. iPhone, eBay, GitHub, npm, JavaScript, jQuery, LaTeX all carry meaning in their casing. After lowercasing, restore the originals with find-and-replace or a manual scan, especially for headlines and bibliographies.
  • Acronyms collapse silently. NASA, FBI, HTTP, JSON, and SQL all become unrecognisable runs of letters. Screen readers and downstream natural-language pipelines may stop spelling them out, hurting accessibility.
  • Case-sensitive URL paths break. On Linux web hosts and on GitHub Pages, /About.html and /about.html are different files. Lowercasing a list of inbound links can produce 404s. Lowercase only the scheme and host, not the path.
  • Source code identifiers break. JavaScript, Python, Java, Go, and C all treat userName and username as different identifiers. Never run code through this tool unless you understand the consequences.
  • Locale-sensitive scripts come out wrong. Turkish capital I should fold to dotless ı, not dotted i. Lithuanian and Azerbaijani have similar carve-outs. If you need those rules, use toLocaleLowerCase('tr') in a console rather than this generic converter.
  • Pasting passwords is unsafe. Even an offline tool should never see credentials. Browsers cache textareas, autosave forms, and sync clipboards across devices; the surface area for accidental leakage is too wide.

Related case-conversion tools

Frequently asked questions

Will it lowercase proper nouns like John or iPhone?

Yes. The converter applies Unicode toLowerCase() to every letter without inspecting word context, so John becomes john and iPhone becomes iphone. If you need to keep specific brand or person names cased, run the output through a find-and-replace pass afterward, or copy those tokens out before converting and paste them back.

Does the converter handle accented Latin, Greek, or Cyrillic letters?

Yes. The browser implementation of String.prototype.toLowerCase() is Unicode-aware. E with acute becomes e with acute, O with umlaut becomes o with umlaut, Sigma becomes sigma, and Cyrillic D becomes Cyrillic d. The German sharp s (ß) stays as ß because there is no single lowercase form, and the Turkish dotted I edge case is not handled because plain toLowerCase ignores locale tags.

Why is the German ß unchanged and what about Turkish dotted I?

Plain toLowerCase() is locale-insensitive. ß is already lowercase, so it stays. The capital form ẞ added in 2017 only lowercases to ß with toLocaleLowerCase('de'). For Turkish, capital I should map to dotless ı and capital İ should map to dotted i, which only happens with toLocaleLowerCase('tr'). If you need either, paste the text into your editor and apply the locale-aware function there.

Will it lowercase URLs and break case-sensitive paths?

Yes, every letter in a pasted URL is lowercased, including the path and query string. Linux web servers (Apache, nginx) treat /About and /about as different files by default, so blindly lowercasing can break links to PDFs, images, and legacy pages. Lowercase the domain and protocol only, or run search-replace to restore mixed-case path segments after conversion.

Is the conversion done in my browser or on a server?

Entirely in your browser. The textarea content never leaves the page. We call String.prototype.toLowerCase() in JavaScript on your local machine, which means it works offline once the page is cached, processes text instantly even at hundreds of thousands of characters, and never logs or stores what you paste.