Ten conversion styles. One click.
Switch text between UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, and dot.case in one click. Every conversion runs locally in your browser. Your text never leaves the page.
Text case is a deceptively complex topic. "Hello World," "HELLO WORLD," "hello_world," and "helloWorld" all carry the same words, but in different worlds. A database table name, a CSS class, a JavaScript variable, a published headline. Getting the case right matters because conventions are enforced by linters, by readers' expectations, and by URL standards. This tool takes any input text and rewrites it in the exact case style you need, handling word boundaries, acronyms, numbers, and punctuation along the way.
The tool supports ten case styles, grouped into three families.
Display cases are about how text reads to humans. UPPERCASE capitalizes every letter. Used for emphasis, acronyms, signage, and constants. lowercase writes every letter in its small form. The default in URLs, hashtags, and casual writing. Title Case capitalizes the first letter of each significant word and is standard for English book and article titles, with rules about which short words (a, the, of) stay lowercase. Sentence case capitalizes only the first letter of each sentence plus proper nouns, and has become the default for body text, button labels, and modern UI copy at Google, Apple, and Microsoft.
Programming cases are about how identifiers are written in code. camelCase uses a lowercase first letter and capitalizes every subsequent word with no separators (getUserName). The standard for variables and functions in JavaScript, Java, Swift, and most C-family languages. PascalCase is the same but capitalizes the first letter too (UserProfile). Used for class names in most OOP languages, React components, and TypeScript types. snake_case writes everything lowercase joined by underscores (user_name). The standard for variables in Python and Ruby, database column names, and YAML keys. CONSTANT_CASE, also called SCREAMING_SNAKE_CASE, writes everything uppercase joined by underscores (MAX_RETRY_COUNT). Used for constants, environment variables, and macro names across nearly every language.
URL and path cases are about safe identifiers in URLs and CLI arguments. kebab-case uses lowercase joined by hyphens (user-profile). Standard for URL slugs, CSS class names, command-line flags, and HTML attributes. dot.case uses lowercase joined by periods (app.user.profile). Used for environment variable namespacing and some config file formats.
A wrongly-cased identifier is not a stylistic problem. It's often a hard error.
In code, mixing styles within a project triggers linter warnings or breaks the build. Most languages distinguish identifiers by case, so userName and username are two different variables that can shadow or conflict with each other. URL slugs that mix case can fail equality comparisons on case-sensitive servers, leading to broken links that work on staging but 404 in production. Database column names with the wrong case may require quoting in every query, which most ORMs don't do by default.
In writing, case sets tone. ALL CAPS for body text reads as shouting. Sentence case in a formal headline reads as careless. Title case in a button label looks dated next to sentence case, which is now the default in iOS, Android, and most modern web apps.
A naive case converter just swaps letters, but real text contains traps. Here's how this tool handles them.
Acronyms. The string "URL slug parser" needs different treatment in title case ("URL Slug Parser") versus camelCase. Most modern style guides. Google's, Microsoft's, and the popular Airbnb JavaScript style guide. Recommend treating acronyms as single words in camelCase, producing urlSlugParser rather than uRLSlugParser. PascalCase follows the same rule: UrlSlugParser, not URLSlugParser.
Numbers. Digits are preserved without modification but treated as word boundaries. "Article 2 Reading" becomes article2Reading in camelCase, with the 2 acting as a separator. This matches the convention in JavaScript, Python, Go, and most other languages that allow digits in identifiers.
Punctuation. Commas, periods, and special characters are dropped in programming cases (camelCase, PascalCase, snake_case, kebab-case) since identifiers can't contain them. They're preserved in display cases (UPPERCASE, lowercase, Title Case, Sentence case).
Existing case information is used as a hint. "iPhone" stays "iPhone" in Title Case rather than becoming "Iphone". The lowercase i followed by uppercase P signals a deliberate compound word, and the tool preserves it. Same for iOS, JavaScript, and similar branded terms.
These three are the most common programming cases, and choosing between them is almost entirely about ecosystem rather than personal taste.
If you're writing JavaScript, TypeScript, Java, Swift, Kotlin, or C#, use camelCase for variables and functions, PascalCase for classes and types. If you're writing Python, Ruby, Rust, or PHP, use snake_case for variables and functions, PascalCase for classes. If you're writing CSS, BEM-style class names, URL slugs, command-line flags, or HTML data-* attributes, use kebab-case. If you're writing constants, environment variables, or compile-time macros in any language, use CONSTANT_CASE.
The single most reliable rule: follow the convention of the file or project you're editing. A Python file using camelCase for variables looks wrong even if every name is technically valid; a JavaScript file using snake_case will trigger ESLint warnings on every commit.
Don't convert existing identifiers. If you convert a database column called user_id to camelCase, you get userId. But the database column is still user_id. Make sure your conversion is intentional and that downstream consumers (your ORM, your migrations, your reports) handle the new name.
Title Case rules vary by style guide. AP, Chicago, MLA, and APA each have slightly different rules about which short words to capitalize. This tool follows the AP convention: capitalize words of four or more letters; capitalize "is," "are," "was," "were"; lowercase "a," "an," "and," "but," "for," "of," "the" unless they're the first or last word. If you need a different convention, do a final pass by hand.
Whitespace is collapsed. Multiple spaces and tabs are normalized to single word boundaries. If you need exact whitespace preserved, use the Find & Replace tool instead.
Type or paste text into the input box. The tool detects word boundaries by splitting on whitespace, punctuation, and existing case transitions. The S in userId is treated as a boundary. Each detected word is then rewritten according to the case style you click. Conversion is instant: no submit button, no network request, no data sent anywhere. The output appears immediately and updates in place if you change the input or switch the case style.
For coders. Use the converter as a fast refactoring helper. Paste a list of snake_case Python field names, click camelCase, and you have your TypeScript interface members. Or paste a JavaScript object's keys and click snake_case to get a Python dataclass.
For writers. Paste a draft headline in any case and try Sentence case versus Title Case to see which fits your style guide. Most modern publishers (The New York Times is the major exception) have moved to sentence case for online headlines because it scans faster and matches conversational tone.
For URL slugs specifically. Use the dedicated URL Slug Generator rather than kebab-case here. It also handles diacritics, transliteration of non-Latin characters, and consecutive separators that the case converter does not.
Title Case follows a style guide. Short words like "of," "the," and "a" stay lowercase unless they begin or end the title. Capitalized Case (sometimes called Start Case) capitalizes every word regardless of length. This tool produces Title Case.
Yes. Acronyms like URL, API, JSON, and HTML are treated as single words in camelCase and PascalCase, producing urlSlug rather than uRLSlug. In Title Case, input acronyms that are already fully uppercase are preserved.
Yes. The tool detects existing separators. Underscores, hyphens, dots. As word boundaries, so you can convert from any case style to any other. Paste user_profile_data and click Title Case to get "User Profile Data."
The tool uses Unicode case mapping, so accented characters (é ↔ É, ü ↔ Ü), Cyrillic, Greek, and most other bicameral scripts work correctly. Languages without case. Chinese, Japanese, Arabic, Hebrew. Are left unchanged in case operations but still processed by separator and word-boundary logic.
Because no one needs to write rAnDoM cAsE outside of internet jokes, and adding it would inflate the UI for a feature 0.1% of users want. If you really need it, you can do it manually faster than the toggle would take to find.
No. The conversion runs entirely in your browser using JavaScript. Nothing is sent to a server, nothing is logged, nothing is stored. You can verify this by opening your browser's network tab and watching it stay empty as you convert.