String Case Converter

Convert text between camelCase, PascalCase, snake_case, kebab-case, and more. Real-time conversion.

Input0 words
camelCase-
PascalCase-
snake_case-
kebab-case-
SCREAMING_SNAKE_CASE-
Title Case-
UPPERCASE-
lowercase-

Type or paste once and all eight conventions render simultaneously — camelCase, PascalCase, snake_case, kebab-case, SCREAMING_SNAKE_CASE, Title Case, UPPERCASE, lowercase — each row with its own copy button, plus a live word count so you can see how the splitter parsed your input.

How the splitter decides where words end

Boundaries are detected at spaces, underscores, hyphens, and any lowercase-to-uppercase transition, so fetchUserByID and fetch_user_by_id and fetch-user-by-id all parse to the same four words. Two cases it deliberately does not handle: runs of capitals stay glued (XMLHttpRequest splits as XMLHttp + Request, giving snake_case xmlhttp_request rather than xml_http_request), and digits never create a boundary, so v2Response stays a single word — snake_case gives v2response, not v_2_response. If an acronym-heavy identifier matters, pre-split it with spaces before converting.

The UPPERCASE and lowercase rows are not a plain case flip of your raw input — they run on the split words re-joined with single spaces. Feed them fetchUserByID and you get FETCH USER BY ID and fetch user by id: a space at every detected boundary, and any run of underscores or hyphens collapsed to one space. That makes the lowercase row a quick preview of exactly how the splitter tokenized a hairy identifier, worth a glance before you trust the camelCase row.

Title Case here is the mechanical kind: every word gets a capital, including articles and prepositions. That is what you want for identifiers and filenames, but it is not AP or Chicago headline style, which lowercases short connecting words.

One identifier, every convention
Input: user login count
Output: userLoginCount / UserLoginCount / user_login_count / user-login-count / USER_LOGIN_COUNT / User Login Count
Good to know: Round trips destroy acronym casing. fetchUserByID to snake_case gives fetch_user_by_id, and converting that back to camelCase yields fetchUserById with a lowercase 'd' — the information that ID was an acronym is gone. Convert once, from the original.

For renaming across an entire codebase you will end up in your editor's regex replace; the regex tester here is a safe place to get the capture groups right before running it on real files.