JSONToonPro
Utility tool

Case Converter

Convert text between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, and more, all updating instantly as you type. Everything runs 100% client-side in your browser.

100% client sideInstant resultNo data sent
Input text
camelCase
...
PascalCase
...
snake_case
...
CONSTANT_CASE
...
kebab-case
...
Train-Case
...
dot.case
...
Title Case
...
Sentence case
...
UPPER CASE
...
lower case
...

Type any phrase and every case format updates instantly. Click the copy icon on any card. Conversion runs entirely in your browser.

The Main Naming Conventions

Case conventions exist because most programming languages forbid spaces in identifiers, so multi-word names need some other way of showing where one word ends and the next begins. Over time each ecosystem settled on its own answer, and the differences are now strong enough that using the wrong one reads as a mistake even when the code compiles fine.

FormatExampleTypical use
camelCaseuserNameJavaScript and Java variables, method names, JSON keys
PascalCaseUserNameClass and type names, React components, C# members
snake_caseuser_namePython identifiers, Ruby, SQL column names
SCREAMING_SNAKE_CASEUSER_NAMEConstants and environment variables
kebab-caseuser-nameURLs, CSS classes, HTML attributes, npm package names
dot.caseuser.nameConfig keys, namespaces, feature flag paths
Train-CaseUser-NameHTTP header names such as Content-Type

What Each Language Actually Expects

Following the local convention is not pedantry. Linters enforce it, code review flags it, and in at least one popular language it changes the meaning of your code.

  • Python: PEP 8 specifies snake_case for functions, variables, and module names, PascalCase for classes, and SCREAMING_SNAKE_CASE for module level constants.
  • JavaScript and TypeScript: camelCase for variables and functions, PascalCase for classes, React components, and type names. React in particular requires components to start with a capital letter, because JSX treats a lowercase tag as a plain HTML element.
  • Go: PascalCase for exported identifiers and camelCase for unexported ones. Here capitalisation is semantically meaningful rather than stylistic: a leading capital is what makes a name visible outside its package, so renaming changes visibility.
  • SQL: snake_case dominates because many databases fold unquoted identifiers to a single case (PostgreSQL lowercases them, Oracle uppercases them), so a CamelCase column silently becomes camelcase unless you quote it everywhere.
  • CSS and URLs: kebab-case, partly because these contexts are case insensitive in places and partly because hyphens simply read better in long strings.

Why URLs Use kebab-case (and Why It Matters for SEO)

Search engines treat a hyphen as a word separator and an underscore as a word joiner. That single difference is the reason kebab-case is the standard for URL slugs.

/blog/case-converter-guide  -> read as: case converter guide
/blog/case_converter_guide  -> risks being read as one long token
/blog/caseConverterGuide    -> mixed case, fragile across systems

There is a practical reason too: many web servers and file systems differ in how they treat letter case, so an all lowercase hyphenated path avoids duplicate URLs that resolve to the same page.

Acronyms: the Hard Part of Case Conversion

Splitting a name into words is easy when every word is lowercase with a single capital. It stops being easy the moment an acronym appears, because a run of consecutive capitals gives the parser no obvious boundary.

HTTPResponse   -> HTTP + Response? or H + T + T + P + Response?
XMLHttpRequest -> XML + Http + Request
parseJSONData  -> parse + JSON + Data
userID         -> user + ID, but snake_case could be user_id or user_i_d

The usual heuristic is that a capital following another capital starts a new word only when the character after it is lowercase, which correctly turns HTTPResponse into HTTP plus Response. Style guides diverge on the output: Go recommends keeping acronyms fully capitalised (userID, ServeHTTP), while Java and much of the JavaScript world prefer treating them as ordinary words (userId, XmlParser). Pick one rule per codebase and let the linter enforce it, because inconsistent acronym casing is a persistent source of broken lookups when names are generated at runtime.

Renaming identifiers is usually one step in a larger cleanup. Browse the full text and developer tools collection for formatters, encoders, and converters that handle the rest of the job.

Frequently asked questions

4 answers
This converter handles the formats developers reach for every day: camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, Title Case, Sentence case, plus plain UPPERCASE and lowercase. Paste any text and every format updates at once, so you can copy exactly the style your language or style guide expects.

More JSON Tools

About the Case Converter

Every language and platform has its own naming conventions, so developers spend a surprising amount of time reshaping the same words between styles: a database column in snake_case, a JavaScript variable in camelCase, a class in PascalCase, a CSS selector in kebab-case, an environment variable in CONSTANT_CASE. This converter does all of that at once. Type or paste your text and it produces every supported format side by side, updating live as you edit, ready to copy. It is handy for renaming identifiers, cleaning up headings into Title Case, and normalizing inconsistent naming across a codebase. All conversion happens in your browser, so your text never leaves your device.