Case Converter
Convert text between upper, lower, title, camel, snake, and kebab case.
This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.
Naming conventions differ across every language, API and file system, so this switches text between UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE in one click.
How to use it
- 1Paste your text.
- 2Click the case you want.
- 3Copy the result.
Example
- Input
- hello world foo
- Output
- helloWorldFoo
That is camelCase. The same input gives hello_world_foo in snake_case and hello-world-foo in kebab-case.
What happens to your data
This tool runs entirely in your browser. Your input is never uploaded to a server, never stored, and never logged. The transformation is a pure string operation with no state, so the same input always gives the same output and nothing is remembered between visits.
Last updated August 2026
Convert text between UPPERCASE, lowercase, Title Case, camelCase, snake_case, and kebab-case in one click. Naming conventions differ across languages, APIs, and file systems, and converting by hand is tedious and error-prone.
Paste text and switch it to any case instantly — perfect for turning labels into variable names, or headings into slugs.
The nine buttons are really two tools. UPPERCASE, lowercase, Title Case and Sentence case rewrite letters and leave everything else alone, so spaces, line breaks and punctuation all survive and a paragraph comes back a paragraph. camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE work differently — they cut the text into words and weld it into one continuous identifier, so a paragraph fed to any of them returns a paragraph-length variable name.
Worth knowing before you start: this converts case and nothing else. It does not strip punctuation or drop anything a language would reject in a name, so a heading carrying a colon or an apostrophe produces an identifier carrying a colon or an apostrophe. If the output is headed for a URL slug or a database column, plan on tidying it by hand.
The result box is read-only, and every button converts the original text rather than the last result — chaining two conversions means pasting the output back into the top box.
How it works
Toolvore transforms text in your browser; nothing is uploaded. The five identifier styles share one splitter: a space is inserted wherever a lowercase letter or digit is followed by a capital, underscores and hyphens become spaces, and what is left is split on whitespace. That single rule explains most of what surprises people. Punctuation is not a separator, so full stops, colons and apostrophes ride into the output — Chapter 1: The End becomes chapter-1:-the-end. Line breaks are whitespace, so a pasted list collapses into one long identifier, while the four letter-only styles leave your layout untouched. Leading and trailing underscores disappear, turning __init__ into init, and a hyphen is always read as a word boundary rather than a minus sign, so a temperature of -5 arrives as 5.
Common use cases
- Converting labels or phrases into camelCase or snake_case variable names
- Normalising headings and titles to Title Case
- Turning names into kebab-case for CSS classes or URLs
- Cleaning up inconsistently-cased data
- Producing CONSTANT_CASE names for environment variables and config keys
- Turning a PascalCase component name into a kebab-case file name
Frequently asked questions
Which cases are supported?+
Upper, lower, title, sentence, camelCase, snake_case, and kebab-case.
Is my text uploaded?+
No — conversion happens locally in your browser.
What is the difference between camelCase and PascalCase?+
One character. Both strip the spaces and capitalise every word after the first; camelCase leaves that first word lowercase, PascalCase raises it too. Convention decides which belongs where, and the choice usually carries meaning rather than taste. JavaScript and Java use camelCase for variables and methods and PascalCase for classes — which is also why a React component must start with a capital, since a lowercase tag is treated as a plain HTML element. In Go it is not style at all: a capital first letter is what makes an identifier visible outside its package, so the difference between the two is the difference between exported and private.
Should I use snake_case or kebab-case?+
Usually the surface decides rather than you. A hyphen is not legal in an identifier in most languages, because the parser reads it as subtraction — which confines kebab-case to things that handle text rather than code: CSS class and custom property names, HTML attributes, URL paths, npm package names, file names. snake_case is the house style of Python, Ruby and Rust, and the safer choice for database columns, where an unquoted hyphen ends the identifier and breaks the query. Lisp and Clojure are the exception, using hyphens in code freely. Where you do have a free hand, consistency within one surface matters more than which you picked.
Which words are not capitalised in title case?+
Every style guide agrees on the shape and argues about the detail. Articles — a, an, the — coordinating conjunctions like and, but and or, and short prepositions stay lowercase unless they fall first or last in the title. The argument is about length: Chicago keeps prepositions lowercase however long they run, while AP and APA capitalise anything of four letters or more, so Through is capital in one and not the other. Choose a guide and stay with it rather than deciding word by word. The plain Title Case button applies none of those rules — it raises the first letter of every word — but the AP Title Case and Chicago Title Case buttons apply each guide's published word lists: first and last words always capitalised, the first word after a colon capitalised, and each guide's own function words kept down. The genuinely contested corners — a preposition used adverbially, the second half of an unusual compound — still deserve a glance, because the guides themselves argue about those.
What happens to acronyms like XML, URL or ID?+
They get flattened, in every style except the two style-guide modes. Plain Title Case lowercases the rest of a word after raising its first letter, so USA returns as Usa and iPhone as Iphone — but AP and Chicago Title Case leave a short all-capitals word alone, because AP itself prints NASA, not Nasa. The identifier styles inherit that: myXMLParser splits into my and XMLParser and comes back as myXmlparser. It matches one real convention — Google's Java style asks you to treat an acronym as an ordinary word, giving XmlHttpRequest — and contradicts the older habit of leaving it shouting. Either way, pushing an existing identifier through is not a round trip: the capitals inside a word are gone and no button restores them, so retyping is often quicker than converting and then repairing.
How do I turn a heading into a URL slug?+
kebab-case does the easy half. A slug generator also strips punctuation, folds accented letters to ASCII or percent-encodes them, collapses repeated separators and trims them from the ends. This does none of that, so What's New in v2.0? comes back as what's-new-in-v2.0? Those characters are legal in a path and still cause trouble: apostrophes and question marks get percent-encoded, break Markdown links and copy badly into chat. Take them out before publishing. Settle the slug before the page goes live, too — changing it later costs the URL whatever links and ranking it had, unless you add a redirect.
Does capitalisation actually matter in file names and URLs?+
It depends where the name ends up, which is why case bugs surface late. Linux file systems are case-sensitive; macOS defaults to case-insensitive but case-preserving, and Windows behaves much the same — so an import of ./Button that resolves on a laptop can fail in a Linux build container, and Git, which stores the case it was handed, is awkward about renames that change nothing else. In a URL the host is case-insensitive but the path usually is not, so /About-Us and /about-us can be two pages, or one page and a 404. Lowercase anything that crosses a system boundary and the question stops arising.
Why does sentence case remove the capitals from names?+
Because it lowercases the whole text first, then raises the opening letter and any letter following a full stop, question mark or exclamation mark plus a space. Nothing in that can know Paris is a city or that NASA is not a word, so proper nouns and the pronoun I come back lowercase and have to be restored by hand. The space requirement bites twice: an abbreviation mid-sentence, e.g. this one, picks up a false capital after it, while a full stop with no space after it — inside a file name or a version number — is not read as the end of a sentence at all.
Related tools
Text Diff Checker
Compare two blocks of text and highlight the differences.
Slug Generator
Turn any text into a clean, URL-friendly slug.
Text Sorter & Deduplicator
Sort lines alphabetically or numerically and remove duplicates.
Markdown Previewer
Write Markdown and preview the rendered HTML live.