Case Converter
camelCase, snake_case, kebab-case and six more, converted as you type.
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.