Case Converter
Convert text between camelCase, snake_case, kebab-case, and more.
camelCase
PascalCase
snake_case
CONSTANT_CASE
kebab-case
Title Case
Sentence case
lower case
UPPER CASE
Word boundaries are detected from whitespace, hyphens, and underscores, from camelCase
transitions (a lowercase or digit followed by an uppercase letter), from acronym transitions
(e.g. XMLParser splits into XML and Parser), and from
letter-digit transitions (e.g. borderRadius2 splits into border, Radius, and 2). Each case style is then just a different way of
rejoining those words.
Different languages and style guides favor different conventions: JavaScript and Java use camelCase for variables, Python and Rust use snake_case, CSS and HTML attributes use kebab-case, and most languages use CONSTANT_CASE for constants. Class and type names are typically PascalCase across most languages.
How are word boundaries detected?
The converter splits on whitespace, hyphens, and underscores, on camelCase transitions (lowercase-to-uppercase), on acronym transitions (e.g. XMLParser → XML, Parser), and on letter-to-digit transitions (e.g. borderRadius2 → border, Radius, 2). It works whether your input is already camelCase, snake_case, space-separated, or a mix.
What is the difference between camelCase and PascalCase?
camelCase starts with a lowercase letter (helloWorld); PascalCase capitalizes every word including the first (HelloWorld). JavaScript variables and functions typically use camelCase, while classes and types typically use PascalCase.
Does it handle acronyms like XMLParser or HTTPRequest?
Yes — a run of uppercase letters followed by a lowercase letter is treated as an acronym boundary, so XMLParser tokenizes to XML and Parser, and HTTPRequest tokenizes to HTTP and Request.
What happens to numbers in the input?
Numbers are treated as their own word when adjacent to letters, so borderRadius2 converts to border_radius_2 in snake_case while staying borderRadius2 in camelCase.