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:
XMLHttpRequestreadsXML,Http,Request. Digits stay with the word before them, soSHA256is one word. - Plural acronyms split wrongly.
getURLsgivesget_ur_ls, becauseLslooks like a word. Splitters that work from case alone do this, lodash included; typegetUrlsinstead. - Every result is rebuilt from the words. Punctuation and extra spaces are dropped from all ten, even lower case and UPPER CASE:
Hello, World!giveshello 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,byandbut. - Any script works. Scripts without capitals, like Japanese, pass through unchanged, and
ßbecomesSSin UPPER CASE, as Unicode’s case mapping specifies. - The slug is plain ASCII. Accents are dropped,
ßbecomesss,æbecomesae, and ligatures are spelled out (fitofi). 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.