The Text Case Converter transforms any text into 15 different casing styles used across writing, code, filenames, URLs, and configuration. Paste your text once and pick a case: Sentence case and Title Case (AP style, minor words stay lowercase) for headings and prose; camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, Train-Case, dot.case, and path/case for identifiers, constants, filenames, and URL slugs; and UPPER, lower, aLtErNaTiNg, iNVERSE, and reversed for everything else. A smart tokeniser detects camelCase boundaries, digit boundaries, and runs of capitals (so HTMLParserV2 splits correctly into HTML, Parser, V, 2). The all-cases preview grid shows every variant at once with one-click copy. Runs entirely in your browser.
Fifteen cases and why each one exists
Text casing looks trivial until you realise how many mutually incompatible conventions the software and writing worlds have accumulated. Sentence case and Title Case come from publishing: sentence case is what you use in body copy and modern editorial headings; AP-style title case capitalises major words and drops articles, short prepositions, and conjunctions. camelCase is the default variable naming in JavaScript, Java, and Swift. PascalCase (a.k.a. UpperCamelCase) is the convention for classes and React components. snake_case is idiomatic in Python, Ruby, and PostgreSQL identifiers. CONSTANT_CASE (also called SCREAMING_SNAKE_CASE) is universally used for compile-time constants and environment variables. kebab-case owns URL slugs, HTML attributes, and CSS class names because those contexts don't allow underscores. Train-Case (capitalised kebab) appears in HTTP headers. dot.case and path/case serve config files and route paths. Pick the case that matches the destination — this tool doesn't guess, it lets you choose.
How the tokeniser splits words correctly
The hard part of converting between cases isn't the casing — it's figuring out where one word ends and the next begins. This tool splits input using four rules applied in order. First, it inserts a boundary anywhere a lowercase-or-digit is followed by an uppercase letter (so fooBar → foo + Bar). Second, it inserts a boundary between a run of capitals and a Capitalised word (so HTMLParser → HTML + Parser, not HTMLP + arser). Third, it treats every non-alphanumeric character as a separator (spaces, hyphens, underscores, dots, slashes — all discarded). Fourth, empty tokens are dropped. The result: whether you paste hello world, helloWorld, hello_world, or HelloWorld, you get the same two tokens and each output case renders correctly. Reverse, inverse, and alternating cases skip tokenisation and operate character-by-character.
Sentence case vs. Title Case — the AP rules
Sentence case is simple: capitalise the first letter of each sentence, leave the rest lowercase (proper nouns aside — which no automated tool can detect without a dictionary). Title Case is where the arguments start. This tool uses AP style, the dominant convention in modern web publishing: capitalise the first word, the last word, and every word in between except articles (a, an, the), coordinating conjunctions (and, but, or, nor, for, so, yet), and short prepositions (at, by, in, of, on, to, up, per, via, vs). Chicago Manual of Style and APA differ on the edges (Chicago capitalises longer prepositions like through; APA capitalises the second element of hyphenated compounds); for consistency with what most CMS and marketing tools produce, AP is the safe default. If you want a specific style guide, run the output through and adjust manually — hyphenated words and proper nouns will always need a human eye.
Case in code — camel, Pascal, snake, kebab, constant
Every mainstream language has an idiomatic case, and mixing them makes code look off even when it runs. JavaScript / TypeScript: camelCase for variables and functions, PascalCase for classes and React components, CONSTANT_CASE for module-level constants. Python / Ruby: snake_case everywhere except class names (PascalCase). Go: PascalCase for exported identifiers, camelCase for unexported. Rust: snake_case for functions and variables, PascalCase for types, CONSTANT_CASE for statics. CSS / HTML: kebab-case for class names and attributes. SQL: snake_case for tables and columns is portable across engines; quoted PascalCase works but requires quoting on every reference. Pick the case that matches the file you're pasting into.
The every-case preview grid
Below the main input/output panes, a card grid shows every case rendered from your input at once. It's designed for the moment when you're not sure which case you want — see them all, click the one that reads best, or hit the small copy icon on any card to grab that variant without changing the active selection. The card that matches the current selection is highlighted so you can trace where the main output came from. This grid updates live as you type or paste, so you can shape input until the case you want reads exactly right.