Case Converter

Convert text between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case and more. Acronyms are handled correctly.

All processing happens in your browser. Nothing is uploaded.

camelCase
PascalCase
snake_case
kebab-case
CONSTANT_CASE
dot.case
path/case
Title Case
Sentence case
UPPERCASE
lowercase

Acronyms are kept together: HTTPResponse becomes http_response, not h_t_t_p_response.

UPPERCASE and lowercase apply to your text as written, keeping punctuation and line breaks. The other styles re-split the text into words first.

How to use

  1. Paste text in any style — a sentence, camelCase, snake_case, anything.
  2. Every style is converted at once; there is nothing to select.
  3. Click copy on the row you want.

About naming styles

Every naming convention is the same two decisions: what separates the words, and how each word is capitalised. snake_case joins with underscores and lowercases everything; PascalCase joins with nothing and capitalises each word. Once text has been split into words, converting between any two styles is mechanical.

Splitting is the part that is actually hard, and the case that separates a working converter from a broken one is the acronym. HTTPResponse contains two words, but there is no lowercase-to-uppercase transition between HTTP and Response to mark the boundary — the transition is uppercase-to-uppercase, which occurs inside HTTP as well. The rule that works is to break before an uppercase letter that is followed by a lowercase one, which puts the boundary in exactly the right place and leaves the acronym intact.

Where each style is used is largely convention rather than technical necessity. Python and Rust use snake_case for functions and variables; JavaScript and Java use camelCase for those and PascalCase for classes; CSS and URLs favour kebab-case, partly because underscores were historically awkward in URLs and can be hidden by underlining. Constants are CONSTANT_CASE almost everywhere. Following the local convention matters more than any argument about which is better — a codebase mixing styles costs more attention than either style alone.

Frequently asked questions

How are acronyms handled?

They are kept as a unit. HTTPResponse splits into HTTP and Response, giving http_response in snake_case. A naive converter that breaks at every uppercase letter produces h_t_t_p_response, which is why acronym handling is the main thing separating case converters that work from ones that do not.

Can I convert from any style, not just plain text?

Yes. The tool splits the input into words first, so it does not matter whether you paste camelCase, snake_case, kebab-case or a normal sentence. Converting between any two styles works in both directions.

Why does UPPERCASE keep my punctuation when snake_case does not?

Because they are different operations. UPPERCASE and lowercase transform your text as written — punctuation, line breaks and all. The programming styles re-split the text into words and rejoin them, which necessarily discards anything that is not a word character. Both behaviours are what you want from their respective styles.

What is the difference between camelCase and PascalCase?

Only the first letter. camelCase starts lowercase (userName), PascalCase starts uppercase (UserName). The conventions differ by language and by what is being named: JavaScript and Java use camelCase for variables and PascalCase for classes, while Go uses PascalCase to mark an identifier as exported.

Which words stay lowercase in Title Case?

Short function words — articles, conjunctions and short prepositions such as a, an, the, of, and, to, in — unless they fall first or last, where they are always capitalised. This follows the common simplification of the Chicago Manual style. Different style guides disagree on the details, particularly around prepositions of four or more letters.

Does this work with non-English text?

Accented Latin script works correctly — caféMenu splits into café and Menu. Chinese, Japanese and Korean have no case distinction, so those characters pass through unchanged.