Rankato

Free Text Case Converter

Convert text between 15 casing styles — Sentence, Title, UPPER, lower, camelCase, PascalCase, snake_case, kebab-case, CONSTANT, Train-Case, and more. Smart tokenisation and one-click copy for every variant.

Pick a caseFirst letter of each major word capitalised (AP style).
Your text
ConvertedTitle Case
0 chars · 0 words · 0 Bplain text
Your converted text will appear here.
0 charsTitle Case

Converted in your browser · nothing is uploaded

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 fooBarfoo + Bar). Second, it inserts a boundary between a run of capitals and a Capitalised word (so HTMLParserHTML + 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.

Tool FAQs

Everything you need to know about using Text Case Converter.

How is Title Case different from capitalising every word?+

Straight capitalisation makes every word start with a capital letter: The Cat In The Hat. AP-style Title Case drops the capital on articles, short conjunctions, and short prepositions unless they're the first or last word of the title: The Cat in the Hat. This tool uses AP because it's the convention almost every modern CMS, marketing tool, and news site follows. If you want strict every-word capitalisation, run the output through Sentence case first (to lowercase everything except the first word) then manually capitalise the words you want.

Why does the tokeniser split HTMLParser into HTML and Parser?+

Two rules apply here. First, a lowercase letter followed by a capital is a word boundary (a|B). Second — the tricky one — a run of two or more capitals followed by a capitalised word is also a boundary before the last capital. Without the second rule, HTMLParser would tokenise as HTMLP + arser, which is clearly wrong. The rule is what turns XMLHttpRequest into XML Http Request and iOSDevice into iOS Device. It's the same heuristic used by lodash's _.words() and most identifier libraries.

What's the difference between snake_case and CONSTANT_CASE?+

Only the letter case. snake_case is all lowercase words joined by underscores — the default identifier style in Python and Ruby. CONSTANT_CASE (also called SCREAMING_SNAKE_CASE) is all uppercase words joined by underscores — reserved almost universally for compile-time constants and environment variables (MAX_CONNECTIONS, DATABASE_URL). Mixing them is a subtle bug: a Ruby file with MY_VAR = 1 at the top level defines a constant, which triggers different warning behaviour than my_var.

kebab-case or snake_case for URLs?+

Kebab-case (hello-world). Search engines and URL parsers treat hyphens as word separators, so /hello-world reads as two words while /hello_world reads as a single token. Google has confirmed this in the search central docs. Use kebab-case for slugs, path segments, and filenames that will appear in URLs. Reserve snake_case for identifiers that live inside code or databases where hyphens aren't allowed.

Does the tool handle non-English characters?+

Basic ASCII casing works everywhere JavaScript's built-in String.prototype.toUpperCase and toLowerCase work — which is essentially every language, since they respect Unicode case folding. Accented characters like é uppercase to É correctly. The tokeniser, however, splits on non-alphanumeric ASCII characters — so if your input has scripts that don't map cleanly to A–Z / a–z / 0–9 (Cyrillic, Arabic, CJK), tokens may not split as expected for the identifier-style cases (camel, snake, kebab). Prose cases (Sentence, Title, UPPER, lower) still work fine for any Unicode text.

Can I convert a whole document — not just a title?+

Yes. The input pane accepts multi-line text of any length; the output preserves your line breaks. Sentence case detects sentence boundaries (using ., !, ? as terminators) and capitalises the first letter of each, which is what you usually want for prose. Title Case treats the whole input as a single title, which is what you want for headlines but probably not for a paragraph — for paragraphs, use Sentence case instead. Identifier cases (camel, snake, kebab, etc.) will strip whitespace and treat the whole input as one long identifier, which is rarely useful for prose; those are meant for short strings.

Does this tool send my text to a server?+

No. All case conversion runs entirely in your browser using standard string operations — no network requests fire while you type or paste. Open your browser's Network tab to confirm. That makes it safe to convert internal document titles, private code identifiers, unreleased product names, or anything you'd rather not hand to a random online tool.