Text Case Converter
UPPER, lower, Title, Sentence, camelCase, PascalCase, kebab-case, snake_case, CONSTANT_CASE.
How to Use
- Paste your text into the input area.
- Pick a target case from the Mode dropdown.
- The output updates live in the right panel.
- Click Copy to put the result on your clipboard.
- For programming-style cases (camelCase, snake_case, etc.), spaces and hyphens are normalized into the target separator.
- Case conversion uses Unicode-aware methods — accented Latin, Cyrillic, and Greek characters are handled correctly.
All Supported Modes
A Brief History of Case Conventions
Lowercase letters are a medieval invention — Roman inscriptions used what we'd now call all-caps, and the modern lowercase alphabet developed gradually from the cursive forms used in Carolingian minuscule (8th century) and refined through Renaissance humanist hands. Title Case in book titles and headlines is largely a 19th-century newspaper convention, codified by AP and Chicago style guides in the early 20th century.
Programming case conventions are much more recent. ALGOL 60 introduced the convention of using identifier capitalization to convey meaning. Smalltalk-72 popularized PascalCase for classes and camelCase for messages. C and Unix favored snake_case (or, in older code, all-lowercase). The Java style guide of the mid-1990s codified the camelCase/PascalCase split that most curly-brace languages now follow. Python's PEP 8 (2001) standardized snake_case for variables and PascalCase for classes, a convention now adopted by Rust, Go, and many newer languages.
The web brought its own conventions: kebab-case for URLs (because hyphens are friendlier to URL parsing and SEO than underscores) and CSS class names (where underscores were historically reserved for namespacing in BEM). The modern programming-language landscape has roughly settled into camelCase for runtime identifiers, PascalCase for types, kebab-case for URLs/CSS, and snake_case for Python and database columns — an inheritance from decades of accumulated practice.
About This Converter
This converter splits the input into words at every reasonable boundary (whitespace, hyphens, underscores, dots, camelCase transitions), then rejoins them in the target style. The logic is Unicode-aware via JavaScript's built-in case methods. Input is treated as a single string regardless of length; for very large pastes (multi-megabyte), conversion may take a moment.
Everything runs entirely in your browser; no text is transmitted, logged, or stored. Whitespace is normalized when converting to programming-style cases (multiple spaces collapse to one separator); whitespace is preserved for the spoken-language modes (Title, Sentence, UPPER, lower).
Frequently Asked Questions
How does Title Case differ from Sentence case?
Title Case capitalizes every word: 'The Quick Brown Fox.' Sentence case capitalizes only the first word of each sentence: 'The quick brown fox.' Some style guides (Chicago, AP) define Title Case more strictly — articles, prepositions, and conjunctions stay lowercase unless they're the first or last word. This converter uses the simpler 'capitalize every word' rule; for AP-style headlines, run the result past your editor.
What's the difference between camelCase and PascalCase?
Both run words together with no separator. camelCase keeps the first letter lowercase ('userName'); PascalCase capitalizes it ('UserName'). JavaScript and Java conventionally use camelCase for variables and methods, PascalCase for classes and types. Python and Rust use snake_case for variables and PascalCase for classes.
When should I use kebab-case vs. snake_case?
kebab-case (with hyphens) is standard in URLs, CSS class names, file names, and HTML attribute values. snake_case (with underscores) is standard in Python, Ruby, and Rust identifier names, and in many database systems. Hyphens are illegal in identifier names in most programming languages, which is why URLs use kebab-case but Python uses snake_case.
What does CONSTANT_CASE mean?
Also called SCREAMING_SNAKE_CASE — uppercase letters separated by underscores. It's the convention for compile-time constants in C, C++, Java, and many configuration formats. <em>const MAX_RETRIES = 5</em> — the all-caps signals 'this never changes at runtime.'
How do you convert between cases programmatically?
First normalize: split the string into words at every transition (camelCase boundary, hyphen, underscore, space). Then re-join with the target case's rules. Most language ecosystems have a 'change-case' library that handles edge cases (consecutive capitals, numbers, Unicode) better than ad-hoc regex.
Will this break Unicode text?
It uses JavaScript's String.prototype.toLowerCase() and toLocaleLowerCase() under the hood, which handle the Unicode case mapping rules correctly for most languages. A handful of corner cases (Turkish dotted/dotless I, German ß) need locale-aware conversion; for those, set your browser locale appropriately or use a dedicated library.
Common Use Cases
Programming identifier renames
Convert a Python snake_case function name to JavaScript camelCase, or rename a Java class to PascalCase from a kebab-case API field.
URL slug generation
Turn an article title into a clean kebab-case URL slug for SEO-friendly routing.
Headline formatting
Apply Title Case to a draft headline before publishing, or lower-case for a more modern aesthetic.
Database column naming
Convert PascalCase model field names to snake_case for a SQL database schema.
CSS class generation
Turn human-readable component names into BEM-style kebab-case CSS classes.
Cleaning up imported data
Normalize inconsistent capitalization in a CSV column before re-importing into a system that cares about format.
Last updated: