Case Converter
Convert text case quickly with multiple naming conventions
Select Conversion Mode
What is Text Case Conversion?
Text case conversion transforms alphabetic characters to different case forms. Beyond basic uppercase, lowercase, and capitalize, it supports various programming naming conventions like camelCase, PascalCase, snake_case, and more. Programmers and editors use these conversions to standardize text formats or switch variable naming styles quickly. Text Case converts text between uppercase, lowercase, title case, sentence case, camelCase, kebab-case, snake_case, and related styles. Common targets include headings, filenames, variable names, slugs, table fields, labels, and copyediting. Language and context still matter: proper names, acronyms, German nouns, brand spellings, and technical terms can be damaged by automatic conversion. For public copy, code identifiers, or localized UI strings, the converted result should be reviewed rather than pasted blindly.
How to Use
Basic Operations
- Enter or paste text to convert in the left input box
- Click the corresponding button to select conversion mode
- The right side automatically shows the converted result
- Click 'Copy' to copy the result to clipboard
Text Rules
- Case conversion works best for plain Latin text; names, acronyms, code identifiers, and locale-specific letters may need manual review.
- Before replacing production copy, check whether punctuation, spacing, and word boundaries were preserved.
Use Cases
Technical Principle
Uppercase and lowercase are not simple ASCII swaps. JavaScript exposes toUpperCase, toLowerCase, and the locale-aware toLocaleUpperCase/toLocaleLowerCase. The classic Turkish trap is 'I'.toLocaleLowerCase('tr-TR') returning the dotless 'ı' (U+0131) instead of 'i', and 'i'.toLocaleUpperCase('tr-TR') returning the dotted 'İ' (U+0130). German 'ß' uppercased becomes 'SS' under the default locale but the capital eszett 'ẞ' (U+1E9E) under 'de-DE-x-eszett'. The tool runs in the default locale unless the user opts in, which matches what most code identifiers expect. Camel, Pascal, snake, kebab, constant, dot, and path cases all start by splitting the input into word tokens. Word boundaries are detected at whitespace, hyphens, underscores, dots, slashes, and at any lowercase-to-uppercase transition (so 'userProfileID' splits into ['user', 'Profile', 'ID']). The token list is then lowercased, capitalized per style, and joined with the target separator: '' for camelCase and PascalCase, '_' for snake_case, '-' for kebab-case, '_' with uppercase for CONSTANT_CASE, '.' for dot.case, and '/' for path/case. Sentence case capitalizes only the first letter after a sentence-ending punctuation mark (., !, ?) plus whitespace, while Title Case capitalizes each word's first letter and lowercases the rest. Unicode has dedicated titlecase code points such as the digraph 'Dž' (U+01C5), which is neither the lowercase 'dž' nor the uppercase 'DŽ', and the standard String.prototype methods will not produce it; specialized libraries are needed for full Unicode title casing. URL slugification needs an extra normalization pass — NFKD plus stripping combining marks — to turn 'café' into 'cafe' before the kebab-case join.
- Locale traps: 'I'.toLocaleLowerCase('tr-TR') = 'ı'; 'i'.toLocaleUpperCase('tr-TR') = 'İ'; German 'ß' uppercases to 'SS' by default, 'ẞ' under de-DE-x-eszett
- Word splitting: tokenize on whitespace, '-', '_', '.', '/', and at lowercase-to-uppercase transitions ('userProfileID' -> ['user','Profile','ID'])
- Style assembly: camelCase = lowercase first + capitalize rest, join ''; PascalCase = capitalize all, join ''; snake = '_'; kebab = '-'
- CONSTANT_CASE / SCREAMING_SNAKE: snake_case piped through toUpperCase, common for environment-variable keys
- Sentence case: capitalize first letter after [.!?] plus whitespace; everything else lowercased
- Unicode titlecase: dedicated code points like 'Dž' (U+01C5) exist but String.prototype methods do not produce them
- Slugify pipeline: str.normalize('NFKD').replace(/\p{M}+/gu, '') strips diacritics so 'café' becomes 'cafe' before kebab-case
Examples
Convert 'hello world' across all common cases
Input: hello world
UPPERCASE: HELLO WORLD
lowercase: hello world
Capitalize: Hello World
Sentence case: Hello world
camelCase: helloWorld
PascalCase: HelloWorld
snake_case: hello_world
kebab-case: hello-world
CONSTANT_CASE: HELLO_WORLD
dot.case: hello.world
path/case: hello/worldRefactor a JavaScript variable to snake_case for Python
Input: userProfileSettings
snake_case output: user_profile_settings
CONSTANT_CASE: USER_PROFILE_SETTINGS
# Useful when porting code between
# JavaScript (camelCase) and Python (snake_case).Turn an article title into a URL slug
Input: My First Blog Post: A Beginner's Guide!
kebab-case: my-first-blog-post-a-beginners-guide
Final URL: https://blog.example.com/my-first-blog-post-a-beginners-guideToggle case for stylized text
Input: Hello World
tOGGLE: hELLO wORLD
Input: ToolAct Online
tOGGLE: tOOLaCT oNLINEFAQ
Which case styles are supported?
UPPERCASE, lowercase, Title Case (Each Word Capitalized), Sentence case (only first letter), camelCase (firstWordLowercase), PascalCase (FirstWordUpper), snake_case, kebab-case, CONSTANT_CASE. The page does each in real time.
What's the difference between Title Case and Sentence case?
Title Case capitalizes every significant word: 'The Quick Brown Fox'. Sentence case capitalizes only the first word and proper nouns: 'The quick brown fox'. Title Case has style variations - some skip short words (a, an, the, of, in) - the page typically uses APA or AP style; check the option list.
How are CJK characters handled?
Chinese, Japanese, and Korean characters don't have case, so they pass through unchanged. Mixed CJK + Latin text only changes the Latin parts. Romaji (Latin transcription of Japanese), pinyin (Latin transcription of Chinese), and Korean Romanization all change normally.
Does it handle accented characters?
Yes - é → É, ñ → Ñ, ß → SS (German uppercase eszett, depending on Unicode rules). Some legacy systems map ß to SS; modern Unicode allows ẞ. The page uses JavaScript's built-in toLowerCase/toUpperCase, which follows Unicode case folding.
Why does Turkish I behave strangely?
Turkish has dotless ı and dotted i - in Turkish locale, lowercase I is ı (dotless), not i. JavaScript's default uppercase/lowercase doesn't apply locale rules. Use String.prototype.toLocaleLowerCase('tr') in code if Turkish casing matters.
Can I convert from snake_case back to Title Case?
Yes. The detector recognises common case styles and converts between any pair: snake_case → kebab-case, PascalCase → camelCase, etc. Acronyms in PascalCase (e.g. HTMLParser) sometimes don't round-trip cleanly through snake_case - depends on whether the page treats consecutive caps as one word or several.
Is my text uploaded?
No. Conversion runs in your browser using JavaScript string methods. Pasted text is not transmitted.