devtools

Case Converter

Convert text between camelCase, snake_case, kebab-case, PascalCase, CONSTANT_CASE and dot.case. Free, private, and runs entirely in your browser.

Runs entirely in your browser — your data never leaves your device.

How to use Case Converter

What it does & when you need it

You have a name in the wrong shape. An API returns first_name but your TypeScript interface wants firstName; a designer hands you "User Profile Settings" and you need user-profile-settings for a route; a config key is camelCase but the environment variable has to be SCREAMING_SNAKE. This tool takes any identifier or phrase and rewrites it into camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, Title Case, Sentence case, or a plain lower/UPPER pass. It splits the input into words first, so it understands getHTTPResponse as three words even though there are no separators. Everything runs in your browser — paste an internal field name or a secret key and nothing is ever uploaded.

How to use

  1. Paste text into the input buffer, or press Sample to load getHTTPResponseCode. You can also Upload a small .txt file.
  2. Pick a target style from the Convert to dropdown. The output buffer updates live as you type or change the style.
  3. Press Copy result (or Ctrl/Cmd + Enter) to put the converted text on your clipboard, and Clear to reset the input.

Things worth knowing

The hard part is finding the word boundaries, not changing the letters. Anyone can uppercase a string; the real work is deciding that getHTTPResponse is get + HTTP + Response rather than get + H + T + T + P + Response or get + HTTPR + esponse. The tool splits on the obvious separators (space, _, -, .), on lowercase-to-uppercase humps (fooBar), and — the tricky one — on runs of capitals: a block of uppercase letters that is followed by an uppercase-then-lowercase pair marks the end of an acronym, so HTTPResponse breaks cleanly into HTTP and Response. It also treats letter-to-digit transitions as boundaries, so utf8 becomes utf + 8. If you need to count or reorder those words afterward, the Word Counter and Text Sorter are handy companions.

Each style carries a convention, and mixing them up breaks tools. kebab-case is the standard for URLs and CSS class names — it is the same shape the Slug Generator produces for clean, lowercase paths. snake_case dominates database column names and Python, where PEP 8 mandates it for functions and variables. camelCase and PascalCase are the JavaScript and TypeScript world: camelCase for variables and functions, PascalCase for types, classes, and React components — the exact identifiers you would feed into JSON to TypeScript.

SCREAMING_SNAKE_CASE is a signal, not just a style. By long-standing convention across C, Java, JavaScript, and shell scripts, all-caps words joined by underscores mean "compile-time constant" or "environment variable" (MAX_RETRIES, DATABASE_URL). Reach for CONSTANT_CASE when the value is fixed at build time; use it for a mutable field and you will mislead every reader who knows the convention.

Casing is locale-sensitive, so this tool stays ASCII-strict on purpose. The classic trap is Turkish: in a Turkish locale, uppercasing i yields the dotted İ and lowercasing I yields the dotless ı, which silently corrupts identifiers like ID or title. To avoid that, the converter uses the Unicode default case mapping (JavaScript's toLowerCase, not toLocaleLowerCase) and only splits words on ASCII boundaries. Non-ASCII letters are never dropped — café survives a round trip — they just stay attached to their word rather than triggering a split.

Examples

snake_case API field to camelCase

created_at

A typical database or JSON field name reshaped into a JavaScript-friendly camelCase property.

Acronym-aware split

getHTTPResponse

Shows boundary detection: the acronym HTTP is kept as one word, producing get_http_response or get-http-response.

Phrase to a URL slug

User Profile Settings

Converts a human title into kebab-case for a clean route: user-profile-settings.

Frequently asked questions

How do I convert snake_case to camelCase?

Paste the snake_case identifier (for example created_at) into the input and choose camelCase from the dropdown. The tool splits on the underscores and rejoins the words with the first left lowercase and each following word capitalised, giving createdAt.

What is the difference between camelCase and PascalCase?

Both remove the separators and capitalise word boundaries; the only difference is the first letter. camelCase lowercases it (fooBar) and is used for variables and functions, while PascalCase uppercases it (FooBar) and is conventionally reserved for types, classes, and React components.

How does it split an identifier like getHTTPResponse?

It detects word boundaries at lowercase-to-uppercase humps, at letter-to-digit transitions, and at the end of an acronym — a run of capitals followed by a capital-then-lowercase pair. That yields get, HTTP, and Response, which then become get_http_response, get-http-response, and so on.

Which case should I use for URLs, CSS classes, and env vars?

Use kebab-case for URL slugs and CSS class names, snake_case for most SQL columns and Python identifiers (PEP 8), and CONSTANT_CASE for compile-time constants and environment variables. camelCase and PascalCase are the norm for JavaScript and TypeScript code.

Does this case converter send my text to a server?

No. All splitting and casing happens locally in your browser with no network request, so you can safely convert internal field names, secret keys, or unreleased identifiers without anything leaving your machine.