Convert between 11 text cases instantly
camelCase, PascalCase, snake_case, kebab-case, SCREAMING_SNAKE, Title Case and more. Paste, pick a target, get a clean conversion.
quickBrownFoxJumpsOverTheLazyDog
How to convert text between cases
Programming styles vary by language and team. This tool tokenizes any input string (handling existing camelCase, snake_case, or hyphens) and emits the canonical form for any of 11 supported cases.
- 01
Paste your text
Drop any string — a free-form sentence, an existing identifier, or a name already cased in one convention. The tokenizer normalises whitespace, hyphens, underscores, and dots, then splits camelCase / PascalCase boundaries so
XMLHttpRequestbecomes[XML, Http, Request].Round-tripping is safe: you can paste output back into the input and switch to a different case without losing tokens. Validation is implicit — empty input simply produces empty output.
identifiertokenizercamelCase splitUnicodeinput · raw texttokenizedQuick brown fox
15 B · 3 tokensready - 02
Pick a target case
Choose from 11 canonical styles:
camelCase(JS/TS variables),PascalCase(classes, React components),snake_case(Python, SQL, Ruby),SCREAMING_SNAKE(constants, env vars),kebab-case(URLs, CSS),COBOL-CASE,dot.case,Title Case,Sentence case,UPPERCASE, andlowercase.Acronym handling is conservative —
XML,HTTP,URLstay as readable groups instead of being split character-by-character.camelCasesnake_casekebab-casePascalCaseCOBOL-CASEtarget · camelCaseconventionquickBrownFox
13 B · 1 tokenJS-friendly - 03
Watch the live preview
The output updates on every keystroke via a
useMemo-backed tokenizer — no submit button, no debounce, no round-trip. Switching the target case re-renders the same tokens in the new style instantly.Word, byte, and case metrics in the stats bar refresh in lockstep so you can spot length deltas when an identifier crosses a column limit.
liveuseMemozero latencyclient-sideoutput · kebab-caselivequick-brown-fox
15 B · 1 lineURL-safe - 04
Copy or download
One click copies via
navigator.clipboard.writeText, with the target case name surfaced in the toast confirmation. Download saves as plain.txtor Markdown.mdfor paste-into-docs flows.Everything runs locally — open DevTools → Network to confirm zero outbound requests.
clipboard.txt.mdprivacy-firstexport2 formats✓ Copied as snake_case ✓ Saved: cased.md ✓ 100% client-side
ready to shipsuccess
Text-processing fundamentals worth knowing
Tokenise with Unicode classes
Use \p{L}\p{N} with the u flag so accents, ideographs, and emoji count properly.
Normalise line endings
Convert \r\n to \n before diffing or hashing — Windows-vs-Unix endings produce phantom changes.
Mind invisible characters
Zero-width joiners, BOMs, and non-breaking spaces look identical to ASCII space. Strip them before comparison or storage.
Stream don’t slurp
For multi-megabyte text, iterate line-by-line rather than loading everything to memory — keeps the tab responsive.
Choose collation deliberately
Default JS sort is code-point order, not human alphabetical. Use Intl.Collator for locale-aware sorting.
Re-run after normalisation
NFC vs NFD changes byte length but not visible glyphs. String.prototype.normalize() before counts and comparisons.
When to convert case
Anywhere naming conventions matter across language or framework boundaries.
JS → Python
JS uses camelCase, Python uses snake_case. Convert API field names cleanly.
Unicode-correctConstants & env vars
Convert names to SCREAMING_SNAKE for env-var conventions.
diff-cleanURL slugs
Convert page titles to kebab-case for SEO-friendly URLs.
instant countsClass names
PascalCase for React components, classes, types.
platform-awareTailwind / CSS
Kebab-case for class names that match CSS conventions.
code-point-accurateStakeholder titles
Title Case and Sentence case for headings and emails.
losslessFrequently asked questions
Something missing?
Tell us what you need. We ship the top requests every two weeks.