Case Converter

camelCase, snake_case, kebab-case and six more, converted as you type.

Input
Conversions click any result to copy
Send output to

Renaming things is half the job

Every codebase is an argument about casing. JSON from an API arrives in snake_case, your TypeScript wants camelCase, the database columns are lower_snake, the environment variables are CONSTANT_CASE, the CSS classes are kebab-case, and the React components are PascalCase. Converting between them by hand is the kind of tedious that produces typos.

Acronyms are where converters break

The interesting problem is not fooBar — it is parseHTTPResponse. A naive converter that splits before every capital letter gives you parse_h_t_t_p_response. This one treats a run of capitals as a single word, with the final capital starting a new word when a lowercase letter follows it, so you get parse_http_response. The same rule handles XMLHttpRequest, parseURLPath and IOError correctly.

Digits are treated as part of the word they touch, so base64Encode stays base64_encode rather than splitting into base_64_encode.

Whole lists at once

Each line converts independently, so you can paste a column of database columns, a list of API fields or a set of identifiers and get the entire set back in one go. That is usually the actual task — nobody converts one identifier.

Kebab-case against slug

They look identical until the input has punctuation. Kebab-case only changes separators and casing; a slug additionally strips accents, removes punctuation and collapses anything non-alphanumeric so the result is safe in a URL. Café & Bar (2026) becomes café-&-bar-(2026) as kebab and cafe-bar-2026 as a slug. Both are offered because the right one depends on whether the output is an identifier or an address.

Questions people actually ask

How are acronyms handled?
`parseHTTPResponse` splits as parse / HTTP / Response rather than parse / h / t / t / p, so it becomes `parse_http_response` instead of a string of single letters. Runs of capitals are treated as one word, with the last capital starting a new word when a lowercase letter follows.
Can I convert a whole list at once?
Yes. Every line is converted independently, so you can paste a column of column names or identifiers and get the whole set back.
What is the difference between kebab-case and a slug?
Kebab-case only changes separators and casing. A slug additionally strips accents and punctuation and collapses anything non-alphanumeric, so it is safe in a URL. Both are offered because they differ exactly when the input has interesting characters in it.
navigate open esc close