Aa

Case Converter

Quickly convert your text to UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case and more. Runs entirely in your browser.

Updated July 11, 2026

100% Private & Secure

This tool runs in your browser.
Your data is never uploaded or stored.

Input Text
All Conversions
UPPERCASE

lowercase

Title Case

Sentence case

camelCase

PascalCase

snake_case

CONSTANT_CASE

kebab-case

dot.case

How to use

  1. 1

    Paste or type your text into the input area.

  2. 2

    Click a conversion button to transform the text.

  3. 3

    Copy the converted result to your clipboard.

When to use it

Naming constants, variables, and files consistently

Codebases mix conventions: SCREAMING_SNAKE_CASE for constants, camelCase for variables, kebab-case for URLs and filenames. Paste a list of names and convert them all in one pass instead of retyping each.

"user profile id" -> "userProfileId" / "USER_PROFILE_ID" / "user-profile-id"

Fixing ALL CAPS text pasted from spreadsheets

Data exported from legacy systems or forms often arrives in uppercase. Sentence case or Title Case turns it back into readable prose for emails, reports, and documentation.

Generating slugs and URL-safe identifiers

Headings and product names need to become URL-friendly slugs: lowercase, words separated by hyphens, punctuation stripped. Kebab case plus an accent-stripping pass produces clean slugs.

Normalizing JSON keys or database column names

When merging data from APIs with different conventions — one returns firstName, another first_name, another First_Name — a batch case conversion lines them up before you write the mapping code.

How it works

The common cases and how each is built

Every case style is a transformation on a sequence of words. The hard part is splitting the input into words — once you have tokens, rejoining is mechanical.

Word boundaries are detected at transitions between lowercase and uppercase (camelCase), at _, -, spaces, and at the start of each token after punctuation. JavaScript's String.prototype.split() with a regex like /[\s_\-]+|(?=[A-Z])/ handles most cases. From the token array, the styles fall out: join with underscores (snake), hyphens (kebab), or nothing (camel, with the first token lowercased).

  • UPPERCASE / lowercase — whole string, no word logic needed
  • Title Case / Sentence case — capitalize first letter of each word or each sentence
  • camelCase — first word lowercase, rest capitalized, no separator
  • PascalCase — every word capitalized, no separator (a.k.a. UpperCamelCase)
  • snake_case / CONSTANT_CASE / kebab-case — separator-joined

Why naive toUpperCase breaks on German and Turkish

ASCII case conversion is trivial — flip bit 5 and you are done. Real Unicode is not. The German sharp s ß (U+00DF) uppercases to the two-character sequence SS, not a single character (the uppercase ẞ, U+1E9E, was added to Unicode 5.1 in 2008 but the traditional mapping is still SS). Round-tripping "STRASSE" back to lowercase cannot recover the original — was it "Straße" or "Strasse"?

Turkish is even sharper: it has four distinct characters — i (U+0069), I (U+0049), ı dotless i, U+0131, and İ dotted I, U+0130. Naive "i".toUpperCase() returns "I", but in Turkish it should return "İ". These locale-specific mappings live in Unicode's SpecialCasing.txt, and JavaScript exposes them through str.toLocaleUpperCase("tr").

"ß".toUpperCase()                       // "SS" (2 chars)
"i".toLocaleUpperCase("tr")             // "İ" (U+0130)
"İ".toLocaleLowerCase("tr")             // "i" (U+0069) — NOT "ı"

Title Case and the small-words rule

Journalistic and APA title case capitalize every significant word but leave articles, conjunctions, and short prepositions lowercase (and, the, of, in). A naive "capitalize first letter of every word" produces "The Lord Of The Rings", which reads wrong.

A proper Title Case implementation keeps a stop list of small words and skips them — except when they are the first or last word of the title. Different style guides (Chicago, APA, AP) disagree on which words count as "short" and on the exact length cutoff, so the right output depends on which guide you target.

Common mistakes & edge cases

Problem

German "ß" uppercases to "SS" and round-trips wrong

Fix

Unicode maps ß to the two-letter sequence SS. There is no way to recover the original from "STRASSE" alone — accept the loss, or use the uppercase ẞ (U+1E9E) if your audience expects it.

Problem

Turkish text shows "I" where "İ" belongs (or vice versa)

Fix

Use toLocaleUpperCase("tr") and toLocaleLowerCase("tr") instead of the plain methods. Plain toUpperCase ignores locale and produces the wrong character for Turkish i/İ/ı.

Problem

"XMLParser" becomes "Xmlparser" in Title Case

Fix

A simple first-letter capitalization destroys consecutive capitals. Detect acronym runs (two or more capitals in a row) and preserve them, or rebuild tokens before re-casing.

Problem

camelCase detection fails on "getHTTPResponse"

Fix

The boundary between an acronym and the next word is ambiguous. A regex split on uppercase-to-lowercase transitions (e.g. /(?=[A-Z][a-z])/) gives cleaner word boundaries for mixed-case identifiers.

Frequently Asked Questions

What case formats are supported?
UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, and dot.case.
Does it handle multi-word inputs correctly?
Yes. The tool detects word boundaries and applies the selected case style to each word.
Is my text stored anywhere?
No. Everything runs locally in your browser.

References & further reading

Related Tools

View all tools