About the Lowercase Converter
A lowercase converter turns every capital letter in your text into a small letter, so Hello WORLD becomes hello world. Paste anything from a paragraph typed with Caps Lock on to a column of email addresses, and the lowercase version shows up under the box while you type.
Developers lowercase emails, usernames and tags before they compare or store them, so Ana.Silva@Example.COM and ana.silva@example.com end up as one account. Writers use it to rescue text typed with Caps Lock on, and anyone naming URLs or files uses it to keep Report.PDF and report.pdf from living side by side. Accented and non-Latin letters work too, and eight more buttons give formats such as Sentence case, snake_case and kebab-case.
- Paste or type into Text to Convert to Lowercase. Line breaks, digits and punctuation pass through unchanged, so a list stays a list.
- The lowercase button is active from the start, and the result fills the Lowercase Text box as you type.
- Pick another button when you need a different shape: Sentence case to repair Caps Lock text, kebab-case for a URL slug, snake_case for a database column. The heading over the result switches to match, for example Result (kebab-case).
- Grab the output with the Copy button on the result box. Your input stays in place, so you can click through the formats on the same text.
InputhELLO aNA, tHE mEETING iS mOVED TO 3 pm. sEE yOU IN lISBON!Outputlowercase: hello ana, the meeting is moved to 3 pm. see you in lisbon!
Sentence case: Hello ana, the meeting is moved to 3 pm. See you in lisbon!Sentence case capitalizes the first letter after ., ! or ? and nothing else. Names like Ana and Lisbon need their capitals back by hand.
InputAna.Silva@Example.COM
KENJI.TANAKA@example.jp
Priya.Sharma@Example.INOutputana.silva@example.com
kenji.tanaka@example.jp
priya.sharma@example.inEach line is converted on its own, so you can copy a whole spreadsheet column in and paste the result back.
Input10 Best Cafés in São PauloOutputkebab-case: 10-best-cafés-in-são-paulo
snake_case: 10_best_cafés_in_são_pauloAccents are kept. Browsers display são as is, but the URL is sent percent-encoded as s%C3%A3o, which the URL Encoder shows. Remove the accents first if you want a plain ASCII slug.
Letters that don't lowercase the way you'd expect
toLowerCase() and its relatives use the default Unicode rules, which are the same in every country. Most of the time that's what you want. A few letters behave differently:
- Greek has two small sigmas. A capital Σ at the end of a word becomes the final form ς, and σ everywhere else:
ΟΔΟΣbecomesοδος. - Turkish and Azerbaijani have a dotted and a dotless i.
"ISTANBUL".toLowerCase()givesistanbul, but Turkish readers expectıstanbul, whichtoLocaleLowerCase("tr")returns. "İstanbul".toLowerCase()gives anifollowed by a combining dot (U+0307), so the 8-character word comes back with 9. A length check after lowercasing can fail because of it.- The reverse bug hits code that lowercases identifiers with the user's locale. On a Turkish system,
"TITLE".toLocaleLowerCase("tr")istıtle, and a keyword check fails. Java'stoLowerCase()with no argument uses the system locale, which is whytoLowerCase(Locale.ROOT)is the safe choice for keys and commands. - The capital ẞ lowercases to ß, and Cyrillic and Armenian convert like Latin letters (
ПРИВЕТbecomesпривет). Scripts with no capitals, like Arabic, Chinese and Hindi, come out unchanged.
Lowercase for logins, emails and URLs
Lowercasing both sides is the usual way to compare text without caring about case. Email domains are not case-sensitive. RFC 5321 allows the part before the @ to be, but almost no mail provider treats it that way, so most sign-up forms store a lowercase copy and compare against that.
For comparisons, Python's casefold() goes further than lower(): "Straße".lower() doesn't match "STRASSE".lower(), but the casefolded values are equal. In SQL, WHERE LOWER(email) = LOWER(?) can't use a plain index on email. PostgreSQL can index the expression (CREATE INDEX ON users (LOWER(email));) or use the citext type, and MySQL's default collations already ignore case.
Paths are where mixed case causes real bugs. Domain names ignore case, but the path after them usually doesn't, so /Blog/Post and /blog/post can be two pages, or one page and a 404. File systems differ as well. macOS and Windows ignore case by default and Linux doesn't, so an import of ./header that finds Header.tsx on a laptop breaks in a Linux CI build. Keeping URLs and file names lowercase from the start avoids both problems.
Programming cases built on small letters
The other buttons split your text into words at spaces, punctuation and changes from small to capital letters, and keep acronyms together, so XMLHttpRequest becomes xml_http_request. These are the formats based on small letters:
- snake_case: Python and Ruby variables and functions, and database tables and columns (
total_price_usd). - kebab-case: URL slugs, CSS classes and properties (
background-color), file names and command-line flags (--dry-run). - camelCase: variables and functions in JavaScript, TypeScript and Java, and keys in many JSON APIs (
totalPriceUsd). - Sentence case: ordinary prose. Everything is lowercased first, then the first letter of each sentence gets a capital.
- The capital-based formats, CONSTANT_CASE and PascalCase, are explained on the Uppercase Converter page.
Lowercase text in code
Every language has a lowercase function. Prefer the Unicode-aware one, because a few older functions only touch the letters A to Z.
"Hello WORLD".toLowerCase(); // 'hello world'
"ISTANBUL".toLocaleLowerCase("tr"); // 'ıstanbul' (Turkish rules)"Hello WORLD".lower() # 'hello world'
"Straße".casefold() # 'strasse', for comparisonsmb_strtolower("ÉCOLE"); // "école"
strtolower("ÉCOLE"); // "École": only A to Z change"ÉCOLE".downcase # "école""Hello WORLD".toLowerCase(Locale.ROOT)"Hello WORLD".ToLowerInvariant()strings.ToLower("Hello WORLD")SELECT LOWER(email) FROM users;
-- SQLite's built-in LOWER() only changes A to Zecho "Hello WORLD" | tr '[:upper:]' '[:lower:]'
name="Hello WORLD"
echo "${name,,}" # Bash 4 or newerHow do I change uppercase to lowercase in Word or Google Docs?
In Microsoft Word, select the text and press Shift+F3 until it shows lowercase, or use Home > Change Case (the Aa button) > lowercase. In Google Docs, select it and go to Format > Text > Capitalization > lowercase.
How do I make a whole column lowercase in Excel or Google Sheets?
Put =LOWER(A1) in an empty column, fill it down, then copy the new column and paste it back as values. Or paste the column here, convert it and paste it back, since every line stays on its own line.
Are email addresses case-sensitive?
The domain part never is. The standard (RFC 5321) allows the part before the @ to be case-sensitive, but Gmail, Outlook and nearly every other provider ignore case there, so storing addresses in lowercase is safe in practice.
Does it work with accents and other alphabets?
Yes. It follows the Unicode case rules, so É becomes é, Cyrillic ПРИВЕТ becomes привет, and a Greek Σ at the end of a word becomes ς. Writing systems with no capital letters pass through as they are.
Can I get the original capitals back?
No. Lowercase text doesn't record which letters were capitals, so US and us look the same afterwards. Keep a copy of the original, or use Sentence case or the Title Case Converter to restore the usual ones.
What's the difference between lowercase and sentence case?
lowercase makes every letter small. Sentence case does the same and then capitalizes the first letter of each sentence, which is the quickest fix for a paragraph typed with Caps Lock on.