Skip to content
Case Converter

Case converter — UPPER, lower, Title, camelCase, snake_case and back

Paste text and every case is worked out at once, as you type. Pick the one you want and copy it. Words already written as getUserID or XMLHttpRequest are split correctly, accents and emoji survive, and your line breaks come back exactly as you left them. Nothing you paste is uploaded or saved.

  • Nothing you paste is uploaded or saved
  • Works offline
Your text
Characters
159
Words
26
Lines
3
ResultHeadlines — small words stay small
The Lord of the Rings: The Return of the King
Getuserprofileimage and Xmlhttprequest Both Split Correctly
Paste Your Own Text — Every Case Updates As You Type.

How it works

  1. 1

    Paste or type your text

    There is no Convert button. Every case is recomputed on each keystroke, which is the whole reason to open a web tool instead of hunting for the Change Case menu in Word. Paste a single headline, a column copied out of a spreadsheet, or a whole list — line breaks and blank lines are preserved, so a list goes in as a list and comes back as a list.

  2. 2

    Read the previews and pick a case

    Each case shows what your own first line becomes, not a canned example, so you can see the difference between Title Case and Sentence case on your actual words before you commit. Clicking a case fills the result panel underneath it. The picker lives in the result panel, because it changes the result — nothing there ever rewrites what you pasted.

  3. 3

    Copy the result

    Copy puts the whole result on your clipboard; Download saves it as a .txt file if it is long enough that a clipboard round-trip is awkward. Your original text stays in the left panel untouched, so you can try snake_case, decide against it, and switch to kebab-case without pasting again.

  4. 4

    Check the count line if you need it

    Characters, words and lines are shown under the input because the text is already there and counting it costs nothing. Characters are counted as people see them, so an emoji is one. If you need sentences, reading time, keyword density or a limit bar for a meta description, the word counter on this site does that properly rather than as an afterthought here.

Every case, and where it belongs

The same three words — User profile image — written eleven ways. The right-hand column is the part that matters: a case is a convention, and using the wrong one in a language that expects another is the kind of thing a code reviewer notices before anything else.

CaseBecomesWhere you see it
lower caseuser profile imageTags, search terms, anything compared without regard to case
UPPER CASEUSER PROFILE IMAGEShort labels, table headers, print headings
Title CaseUser Profile ImageHeadlines, book and article titles, navigation labels
Sentence caseUser profile imageBody copy, UI microcopy, error messages, most modern style guides
camelCaseuserProfileImageVariables and functions in JavaScript, Java, Swift; JSON keys
PascalCaseUserProfileImageClasses, types, interfaces, React components, C# methods
snake_caseuser_profile_imagePython variables and functions, SQL tables and columns
kebab-caseuser-profile-imageURL slugs, CSS classes, HTML attributes, file names
CONSTANT_CASEUSER_PROFILE_IMAGEEnvironment variables and constants that never change
aLtErNaTiNg cAsEuSeR PrOfIlE ImAgEThe sarcasm meme, and nothing else — it is unreadable at length
iNVERSE cASEuSER PROFILE IMAGERescuing a paragraph typed with caps lock on and shift held

Frequently asked questions

Is my text uploaded or saved anywhere?

Neither. The conversion is plain JavaScript running in this tab, there is no server involved, and nothing is written to your browser storage either — close the tab and the text is gone. This tool deliberately does not save drafts, because text pasted into a case converter is usually something unpublished: a headline being tried out, a client list, a column of names. It also means the page keeps working with the network switched off, once it has loaded.

camelCase, PascalCase, snake_case, kebab-case — which one goes where?

camelCase is the convention for variables and functions in JavaScript, Java and Swift: userProfileImage. PascalCase, sometimes called UpperCamelCase, is for things that name a type — classes in C# and Java, React components, TypeScript interfaces: UserProfileImage. snake_case is the Python convention for variables and functions, and the usual style for SQL table and column names: user_profile_image. kebab-case cannot be used for identifiers in most languages, because the hyphen reads as a minus sign — which is exactly why it owns the places identifiers do not go: URL slugs, CSS class names, HTML attributes and file names. CONSTANT_CASE (also called SCREAMING_SNAKE_CASE) is reserved for values that never change: environment variables, and constants in almost every language that has a convention for them.

How does Title Case decide which words stay lowercase?

Short function words stay lowercase in the middle of a title — a, an, the, and, but, or, for, nor, on, at, to, from, by, of, in — and they are capitalised again when they land first or last. That is why "the lord of the rings" becomes "The Lord of the Rings": the first "the" is capitalised because it opens the title, the second is not. A word straight after a colon is also capitalised, which both Chicago and AP call for. Style guides genuinely disagree beyond that list: Chicago keeps all prepositions lowercase however long, while AP capitalises any word of four letters or more, so AP would write "The Lord Of The Rings" with "Over" and "With" capitalised too. This tool follows the shorter list, the one every guide agrees on, and leaves house-style edits to you.

Why did NASA survive in one line and turn into Nasa in another?

Because a word in capitals is either an acronym or a caps-lock accident, and the only clue is the rest of the line. If a line contains lowercase letters anywhere, a fully capitalised word inside it is treated as an acronym and left exactly as it is — "NASA launches a probe" becomes "NASA Launches a Probe". If the whole line is in capitals, there is nothing to distinguish an acronym from an ordinary word, so the line is treated as shouting and normalised — "NASA LAUNCHES A PROBE" becomes "Nasa Launches a Probe". That trade-off cannot be avoided without a dictionary of every acronym in every language, and the alternative would leave anyone pasting an all-caps headline with their headline unchanged. Sentence case uses the same rule.

Why does converting to UPPER CASE and back not give me my text again?

Because uppercasing throws information away, and in a few places it is not even reversible character by character. Three examples you can test above. "iPhone" uppercases to "IPHONE" and lowercases to "iphone" — the capital P is simply gone, and nothing can know it was there. German "Straße" uppercases to "STRASSE", because ß has no single capital form; going back gives "strasse", one character longer than it started, and the ß cannot be recovered. And on a computer set to Turkish, "i" uppercases to "İ" — the dotted capital — because Turkish has separate dotted and dotless i, so the round trip through upper and lower depends on the language your browser is set to. Case conversion is lossy. Keep the original if you might need it, which is why the left panel here is never rewritten.

How does it split words that are already camelCase or snake_case?

Underscores, hyphens, dots, slashes and spaces all end a word. Inside a run of letters, a capital starts a new word, with one extra rule for acronyms: a run of capitals followed by a capital and a lowercase letter breaks before the last capital. That is what turns XMLHttpRequest into xml_http_request rather than x_m_l_http_request, and getUserID into get_user_id. Digits never split a word on their own — utf8 stays utf8 and h1 stays h1, rather than becoming utf_8 and h_1 — but a digit does not block a capital either, so version2Beta becomes version2_beta and MP3Player becomes mp3_player. Apostrophes are dropped when building an identifier, so "don’t stop" becomes dontStop rather than donTStop.

What happens to emoji, accents and non-English text?

Characters are handled as grapheme clusters — what a person sees as one character — using the browser’s own Unicode segmenter, so a family emoji or a flag is one character and never gets torn in half by aLtErNaTiNg cAsE. An é written as "e" plus a combining accent stays intact and uppercases to É. Scripts with no capital and small letters at all, such as Chinese, Japanese, Korean, Arabic, Hebrew and Thai, pass through the letter cases unchanged, which is correct: there is nothing to convert. They are still split into words at spaces and punctuation for snake_case and kebab-case. Emoji and other symbols are dropped from the identifier cases, because they are not valid in a variable name or a URL slug.

What counts as a sentence for Sentence case?

A full stop, question mark or exclamation mark followed by a space, plus the start of every line — headings and list items rarely end in punctuation, and treating a whole list as one sentence would capitalise only the first bullet. Common abbreviations (Dr., Ltd., etc., Jan.) and single letters (as in "J. K." or "e.g.") do not end a sentence, so the next word is not capitalised by mistake. The English pronoun "I" is restored on its own and in contractions — i, i’m, i’ve, i’ll, i’d all come back capitalised. Names are the one thing sentence case cannot fix: it has no way to know that "lim" is a surname, so proper nouns need a pass by hand afterwards.