Skip to content

Case Converter

lowercasehello world
UPPERCASEHELLO WORLD
Title CaseHello World
Sentence caseHello world.
camelCasehelloWorld
PascalCaseHelloWorld
snake_casehello_world
kebab-casehello-world
CONSTANT_CASEHELLO_WORLD
dot.casehello.world
path/casehello/world

Estimates for educational purposes — not financial, medical, or legal advice. See terms.

Case conversion sounds trivial until you hit the edge cases: acronyms, numbers, already-cased input, mixed separators. A good converter handles all of these correctly the first time, so you can paste whatever shape of text you have and get every common case as output.

This tool is multi-output: you paste once, and all eleven cases are shown at the same time with a copy button next to each. No need to toggle between modes or re-run the conversion.

How the splitting works

The hard part of case conversion is breaking the input into words. The tool recognizes these separator patterns:

  • Whitespace — spaces, tabs, newlines
  • Underscores, hyphens, dots, slashes — the common programming separators
  • camelCase boundaries — a lowercase letter followed by an uppercase letter (abcDefabc Def)
  • Acronym boundaries — an uppercase run followed by a capitalized word (HTMLParserHTML Parser)

Once the input is tokenized into lowercase words, each case is a simple join or transformation: snake_case joins with underscores, camelCase lowercases the first word and capitalizes the rest, CONSTANT_CASE is uppercase snake_case, and so on.

The eleven cases

CaseExampleTypical use
lowercasehello worldPlain prose, email addresses
UPPERCASEHELLO WORLDHeadings, emphasis
Title CaseHello WorldArticle titles, headings
Sentence caseHello world.Body prose, captions
camelCasehelloWorldJavaScript, TypeScript, Java variables
PascalCaseHelloWorldClass names, type names
snake_casehello_worldPython, Ruby, Rust identifiers
kebab-casehello-worldURL slugs, CSS class names
CONSTANT_CASEHELLO_WORLDConstants in many languages
dot.casehello.worldConfig keys, file extensions
path/casehello/worldFile paths, URL segments

Example: converting a feature name

You are starting a new feature branch and need the same name in several forms: the Git branch, the code identifier, the environment variable, the CSS class, and the file path. You type the human-readable name once:

My New Feature Flag

And the converter produces every form at once:

  • camelCase: myNewFeatureFlag → for the JavaScript variable
  • PascalCase: MyNewFeatureFlag → for the TypeScript type
  • snake_case: my_new_feature_flag → for the Python config
  • kebab-case: my-new-feature-flag → for the Git branch and URL slug
  • CONSTANT_CASE: MY_NEW_FEATURE_FLAG → for the environment variable
  • path/case: my/new/feature/flag → for the nested config path

Copy whichever you need with the button next to each row.

What this tool does not do

It does not handle internationalization edge cases: Turkish dotted/undotted i, German ß, or locale-dependent lowercasing. For code identifiers this is rarely an issue (programming languages almost always restrict identifiers to ASCII), but for proper prose in non-English languages, a locale-aware library is the right tool.

It also does not try to preserve original capitalization of proper nouns. If you paste “paris is in france”, Sentence case will give you “Paris is in france” — capitalizing only after sentence boundaries. Manual follow-up is needed for named entities. For the URL-slug variant of kebab-case (with diacritic stripping and punctuation removal), the slugify tool does the full normalisation.

Frequently asked questions

What's the difference between Title Case and Sentence case?

Title Case capitalizes the first letter of every word. Sentence case only capitalizes the first word of each sentence and proper nouns. Title Case is used for headings and titles; sentence case is for body prose.

When should I use camelCase vs snake_case vs kebab-case?

JavaScript and TypeScript conventionally use camelCase for variables and functions. Python, Ruby, and Rust use snake_case. CSS class names and URL slugs use kebab-case. The choice is usually dictated by the language or system you are writing for, not personal preference.

What is CONSTANT_CASE for?

CONSTANT_CASE (sometimes called SCREAMING_SNAKE_CASE) is used for constants in C, JavaScript, and many other languages — values that never change at runtime, like API_KEY or MAX_RETRIES. The loud styling makes them visually distinct from variables.

Does the converter handle acronyms correctly?

Yes — an acronym followed by a capitalized word is split at the boundary. HTMLParser becomes html parser, XMLHttpRequest becomes xml http request, and the resulting words are joined in the chosen case. Pure acronym input like HTML stays as one word.