Case Converter
Type or paste your text and instantly see it in every case style — UPPER, lower, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case and more. Click any result to copy. Runs entirely in your browser.
Case styles explained
| Style | Example | Common use |
|---|---|---|
| UPPER CASE | HELLO WORLD | Headings, acronyms, emphasis |
| lower case | hello world | Body text, email addresses |
| Title Case | Hello World | Article titles, book titles, headings |
| Sentence case | Hello world | Normal prose, UI labels |
| camelCase | helloWorld | JavaScript variables, JSON keys |
| PascalCase | HelloWorld | Classes, components (React, C#) |
| snake_case | hello_world | Python, SQL column names, Ruby |
| kebab-case | hello-world | CSS classes, HTML attributes, URL slugs |
| SCREAMING_SNAKE | HELLO_WORLD | Constants (Python, C, shell) |
| dot.case | hello.world | Config files, package names (Java) |
A field guide to text cases
"Case" really describes two different choices at once: which letters are capitalised, and
how the boundaries between words are marked. Human prose marks word boundaries with spaces
and relies on grammar to decide capitalisation. Programming identifiers cannot contain
spaces, so they invent a substitute — a hump (camelCase), an underscore
(snake_case), a hyphen (kebab-case) or a dot
(dot.case) — and bake the casing rule into the style itself. Almost every
named case is just a particular answer to those two questions.
The everyday styles are the ones you already meet in writing. UPPERCASE sets every letter as a capital and is reserved for acronyms, short headings and emphasis; long runs of it read slowly because the uniform letter shapes remove the word-shape cues readers rely on. lowercase is the opposite extreme. Sentence case capitalises only the first letter of the first word (plus proper nouns) and is the natural register for body text, UI labels and most modern headlines. Title Case capitalises the first letter of every significant word and is used for the titles of books, articles and songs — and, as the next section shows, it is far less settled than it looks.
The programming styles split along their separators. camelCase joins words
with no separator and lowercases the first word: helloWorld,
getUserName. PascalCase (formally UpperCamelCase) is the
same but capitalises the very first letter too: HelloWorld,
HttpRequest. snake_case joins lowercase words with underscores;
when every letter is also capitalised it becomes SCREAMING_SNAKE_CASE (also
called CONSTANT_CASE or UPPER_SNAKE_CASE). kebab-case swaps
the underscore for a hyphen and is known by an unusual number of aliases —
dash-case, spinal-case, lisp-case and caterpillar-case
all describe the same thing. Train-Case is its capitalised cousin
(Hello-World), and dot.case simply separates with full stops.
Finally there are the novelty styles: aLtErNaTiNg CaSe (a.k.a. "studly
caps" or "mocking/SpongeBob case") flips between lower and upper on every character, and
iNVERSE case swaps whatever case each letter currently has.
| Case | Also known as | Example | Where you meet it |
|---|---|---|---|
| camelCase | lower camel case, dromedary case | userName | JS/Java variables, JSON keys |
| PascalCase | UpperCamelCase | UserName | Classes, types, React components |
| snake_case | pothole case | user_name | Python, Ruby, Rust, SQL columns |
| SCREAMING_SNAKE | CONSTANT_CASE, UPPER_SNAKE | MAX_SIZE | Constants, environment variables |
| kebab-case | dash, spinal, lisp, caterpillar case | user-name | CSS classes, URL slugs, HTML attrs |
| Train-Case | HTTP-Header-Case | User-Name | HTTP headers, some titles |
| dot.case | — | user.name | Config keys, namespaces |
Where each case style is used
Programming languages do not agree on a single convention, and choosing the "right" case is
mostly a matter of matching the community your code lives in — linters and code reviewers
enforce it for you. Python's official style guide, PEP 8, prescribes
snake_case for functions and variables, PascalCase for class
names and SCREAMING_SNAKE_CASE for module-level constants. Ruby and Rust follow
the same snake-for-values, Pascal-for-types split. The C-family and JavaScript worlds lean
on camel case: Java and JavaScript use camelCase for variables and methods and
PascalCase for classes; C# capitalises method names as well. Go has its own
twist — it uses camel and Pascal case but gives capitalisation a meaning, because
an identifier that starts with a capital letter is exported (public) from its package while
a lowercase one stays private.
Outside identifiers, the conventions are remarkably consistent. Constants
and environment variables are almost universally
SCREAMING_SNAKE_CASE (DATABASE_URL, MAX_RETRIES).
CSS class names, HTML attributes and URL
slugs use kebab-case because hyphens are safe everywhere in those
contexts and read as word breaks. SQL tables and columns conventionally use
snake_case. And for human-facing text — headlines, navigation labels, button
text — the choice is between Sentence case (now favoured by most product and editorial style
guides for its readability) and Title Case (still standard for the titles of published
works).
Title case is harder than it looks
"Title Case" sounds like one rule, but there is no single authority — and the major style
guides genuinely disagree. They agree on the easy parts: every guide capitalises
the first word, the major words (nouns, pronouns, verbs, adjectives, adverbs), and lowercases
the articles a, an and the when they fall in the
middle. They diverge over the small connecting words — prepositions and conjunctions — and
that is exactly where a naïve converter gets titles wrong.
The cleanest split is over prepositions. AP (Associated
Press) and APA use a length rule: lowercase prepositions and conjunctions of
three letters or fewer, but capitalise any word of four letters or more — so AP
writes Gone With the Wind, capitalising the four-letter With.
Chicago (CMOS) and MLA take the opposite line and lowercase
all prepositions regardless of length, giving Gone with the Wind with a
lowercase with. The guides also differ on the last word: AP,
Chicago and MLA always capitalise the final word of a title, so a trailing preposition is
promoted (What to Look For). APA has no last-word rule, so under its length rule the
same title ends What to Look for. Coordinating conjunctions (and,
but, or, nor, for, so,
yet) are lowercased by most guides, though Chicago treats so and
yet as capitalised when they act as adverbs. The practical takeaway: a generic
"Title Case" button — like the one in this tool — applies one reasonable convention, but if
you are writing to a specific style guide you should always proof the small words by hand.
camelCase, snake_case and friends: a short history
The names are much younger than the practices. Joining words with internal capitals — what typographers and the Oxford English Dictionary call medial capitals — is centuries old, appearing in chemical nomenclature and in scribal abbreviation long before computers. It became a standard identifier style in several programming languages in the 1970s, but the catchy name arrived later: the earliest recorded term for the style, "InterCaps", appeared on Usenet in April 1990, and "CamelCase" itself was coined by Newton Love in 1995, who said the "humpiness of the style" first led him to call it HumpyCase. The dot-com boom then spread medial capitals into ordinary brand names — iMac, PowerPoint, YouTube.
The underscore convention is just as old and its name just as new. Underscored identifiers go
back to the late 1960s and were cemented by C — they fill The C Programming Language
(1978) — but the term snake_case was only popularised around 2004 in the Ruby
community, in a Usenet post by Gavin Kistner. kebab-case earns its informal name
from the way hyphens "skewer" the words like meat on a kebab stick; the hyphen-as-separator
habit itself comes from Lisp, whose identifiers have always allowed hyphens, which is why the
style is also called lisp-case. A close relative is Hungarian
notation, devised by Charles Simonyi at Microsoft (he had earlier worked at Xerox
PARC), which prefixes a variable name with a short lowercase tag for its type or role
(strName, iCount). It is called "Hungarian" both as a nod to
Simonyi's origin and because, like Hungarian names, it puts the "type" before the "given
name".
The Unicode trap: why uppercasing isn't simple
For plain English, changing case is trivial: shift between two parallel 26-letter alphabets. For the rest of the world it is genuinely hard, because case mapping is language-dependent and not always one-to-one. A few well-documented traps catch naïve converters:
- German ß changes length. The sharp s has historically had no single
capital, so the default Unicode uppercase of
ßis the two-letter sequenceSS— meaningstraßeuppercases toSTRASSEand the text gets longer. A capital eszettẞ(U+1E9E) was added to Unicode in 2008 and admitted to official German orthography in 2017, but because it is still optional, the standard mapping remainsSS. - The Turkish dotted/dotless i. Turkish has two distinct i's:
dotted
i/İand dotlessı/I. Uppercasing a Turkishimust give the dotted capitalİ, and lowercasingImust give the dotlessı— the exact opposite of English. Using an English-locale uppercase on Turkish text corrupts it, a famous source of real bugs. - Greek final sigma. Lowercase sigma is written
ςat the end of a word butσelsewhere, so correctly lowercasing the Greek for a word requires knowing where the word ends — context a single-character lookup cannot supply. - Ligatures and digraphs. The ligature
fluppercases to two letters,FL. Digraph letters have three forms, not two:lj(lower),LJ(upper) and a distinct title-case formLjused when only the first letter of a word is capitalised.
The practical lesson is that case conversion does not always round-trip — uppercasing
ß to SS and lowercasing back gives ss, not the original
— and that a converter aimed at English (like this one) uses the platform's default,
locale-neutral mapping. That is correct for English, Western European text and most accented
Latin script, but if you are casing Turkish, Azerbaijani or carefully typeset Greek you need a
locale-aware tool.
Slugs, identifiers and SEO
When you turn a human title into a URL slug, the conventional target is
lowercase kebab-case, and the choice of separator is not cosmetic. Google's
long-standing guidance is to use hyphens, not underscores, to separate words
in a URL: a search engine reads red-running-shoes as three words but treats
red_running_shoes as the single token redrunningshoes, weakening the
match. Lowercasing matters too, because URL paths are case-sensitive on many servers, so
mixing cases risks duplicate URLs or broken links. A good slug therefore lowercases, replaces
spaces and punctuation with single hyphens, strips accents to plain ASCII, and drops the small
filler words.
For code identifiers, the equivalent advice is simply to match the
convention of the language and codebase you are in, because consistency is what makes names
scannable and keeps linters quiet. The case styles are interchangeable in meaning — the same
words, just punctuated differently — which is exactly why a converter is useful: paste a
column name in snake_case and lift it straight out as the camelCase
property your front-end expects, or turn a page title into the kebab-case slug it
needs.
Common case-conversion mistakes
- Mangling acronyms and proper nouns. Blind title-casing lowercases the tail
of every word, turning
NASAintoNasa,iPhoneintoIphoneandMcDonaldintoMcdonald. Intentional capitalisation always needs a human check. - Applying the wrong rule book. A title set with AP's length rule looks wrong in a Chicago-styled document and vice versa; pick the guide your publication uses before you batch-convert.
- Using programmer case in prose (or the reverse).
snake_casebelongs in code, not in a sentence; Title Case belongs in a heading, not in a variable name. - Underscores in URLs. They look tidy but undercut SEO — reach for hyphens.
- Naïve uppercasing of non-English text, which silently corrupts Turkish, German and Greek (see the Unicode trap above).
- Losing data on the round trip. Lowercasing text to "normalise" it and then re-capitalising rarely restores the original — once the distinction is gone, it is gone, so keep an untouched copy of anything case-sensitive.
Frequently asked questions
- What is Title Case?
- Title Case capitalises the first letter of every major word. This tool follows the common convention of capitalising all words except short prepositions (of, in, on, at, to, for, from, with, by, up, as, a, an, the, and, but, or, nor) — unless they appear as the first or last word.
- What is the difference between camelCase and PascalCase?
- camelCase starts with a lower-case letter (helloWorld) while PascalCase (also called UpperCamelCase) starts with an upper-case letter (HelloWorld). camelCase is common in JavaScript variable names; PascalCase is common for class and component names.
- When would I use snake_case vs kebab-case?
- snake_case (underscores) is standard in Python variables and constants, and in SQL column names. kebab-case (hyphens) is standard in CSS class names, HTML attributes and URL slugs. JavaScript generally prefers camelCase for variables.
- Does this handle Unicode and accented letters?
- Yes. Upper/lower conversion uses the JavaScript built-in toUpperCase()/toLowerCase(), which handles accented characters, German ß → SS, and most Unicode scripts correctly. camelCase and snake_case strip non-ASCII and punctuation, keeping only letters, digits and spaces.
- Is anything uploaded to a server?
- No. All conversion runs in your browser. Your text never leaves your device.