Case Converter

Convert text between camelCase, PascalCase, snake_case, kebab-case, Title Case and more, and make a URL slug.

4 words: parse · HTTP · Response · 2xx

  • camelCasewords run together, each after the first capitalized
    parseHttpResponse2xx
  • PascalCaseevery word capitalized, run together
    ParseHttpResponse2xx
  • snake_caselower case, joined with underscores
    parse_http_response_2xx
  • kebab-caselower case, joined with hyphens
    parse-http-response-2xx
  • CONSTANT_CASEupper case, joined with underscores
    PARSE_HTTP_RESPONSE_2XX
  • Title Casea, an, and, of, the, to, in, on, for and or stay lower unless first or last
    Parse Http Response 2xx
  • Sentence casethe first word capitalized, the rest lower
    Parse http response 2xx
  • lower caseevery letter lower
    parse http response 2xx
  • UPPER CASEevery letter upper
    PARSE HTTP RESPONSE 2XX
  • URL sluglower-case ASCII, accents folded, single hyphens
    parse-http-response-2xx

Runs in your browser. Nothing you enter is sent anywhere.

How to use it

Type or paste into Text: an identifier, a title, or one item per line. All ten results appear at once, each with a Copy button, worked out in your browser.

The line above them shows how the text was split, such as 4 words: parse · HTTP · Response · 2xx. Every result is built from those words. Each line converts on its own; only URL slug joins all lines into one.

Examples

The sample identifier, parseHTTPResponse2xx:

camelCase      parseHttpResponse2xx
PascalCase     ParseHttpResponse2xx
snake_case     parse_http_response_2xx
CONSTANT_CASE  PARSE_HTTP_RESPONSE_2XX
Title Case     Parse Http Response 2xx

HTTP stays one word, and 2xx is its own word because lowercase letters follow the digit.

A headline, What's new in the Café API for 2026:

Title Case     What's New in the Café Api for 2026
Sentence case  What's new in the café api for 2026
snake_case     whats_new_in_the_café_api_for_2026
URL slug       whats-new-in-the-cafe-api-for-2026

The apostrophe stays in words and is dropped from identifiers and the slug. Sentence case lowers every word after the first, names included.

Column names, one per line, as snake_case:

user id
CreatedAt
last-login_IP
user_id
created_at
last_login_ip

Text with no letters or digits, such as -- __ .., is rejected with There is nothing to convert here: add a letter or a digit.

Good to know

  • Words break at punctuation and at case changes. A run of capitals stays together as an acronym, but its last capital starts the next word when lowercase follows: XMLHttpRequest reads XML, Http, Request. Digits stay with the word before them, so SHA256 is one word.
  • Plural acronyms split wrongly. getURLs gives get_ur_ls, because Ls looks like a word. Splitters that work from case alone do this, lodash included; type getUrls instead.
  • Every result is rebuilt from the words. Punctuation and extra spaces are dropped from all ten, even lower case and UPPER CASE: Hello, World! gives hello world.
  • Title Case keeps ten short words lower: a, an, and, of, the, to, in, on, for and or, unless they open or close the line. AP and Chicago style also lower at, by and but.
  • Any script works. Scripts without capitals, like Japanese, pass through unchanged, and ß becomes SS in UPPER CASE, as Unicode’s case mapping specifies.
  • The slug is plain ASCII. Accents are dropped, ß becomes ss, æ becomes ae, and ligatures are spelled out (fi to fi). A word with no Latin letters or digits, like 日本語, leaves nothing.
  • Input is limited to 50,000 characters.

Questions

What is the difference between camelCase, PascalCase, snake_case and kebab-case?

They join the same words differently: createdAt, CreatedAt, created_at and created-at. JavaScript uses camelCase for variables and PascalCase for classes; Python’s PEP 8 asks for snake_case functions and CONSTANT_CASE constants; CSS properties and URLs use kebab-case.

How do I convert camelCase to snake_case in code?

In JavaScript, lodash’s _.snakeCase('createdAt') returns created_at. Python’s common one-liner, re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower(), handles simple names but puts an underscore before every capital, so parseHTTPResponse2xx becomes parse_h_t_t_p_response2xx.

How do I make a URL slug from a title?

Paste the title and copy URL slug: lowercase ASCII words joined by single hyphens. Django’s slugify folds accents the same way but drops letters with no ASCII decomposition, so Straße becomes strae there and strasse here.

How do I change text to uppercase without losing punctuation?

Use a string method, since these results drop punctuation: text.toUpperCase() in JavaScript or text.upper() in Python. Both apply Unicode’s full case mapping, so ß becomes SS.