ToolActToolAct

Case Converter

Convert text case quickly with multiple naming conventions

Input
Output

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

  1. Enter or paste text to convert in the left input box
  2. Click the corresponding button to select conversion mode
  3. The right side automatically shows the converted result
  4. 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

Converting text between common casing stylesTransform input into uppercase, lowercase, capitalized words, sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, or toggled case. Output updates the moment the mode or input changes, so a heading, identifier, or paragraph can be tested across styles side by side. Acronyms such as API, JSON, or iPhone, German nouns, brand names, and locale-specific characters like eszett or accented letters often need manual restoration after an automatic lowercase pass.
Preparing identifiers for code and URLsThe naming modes normalize separators such as spaces, hyphens, underscores, dots, and slashes, and split camelCase or PascalCase boundaries before rebuilding the string. That makes it useful for filenames, config keys, CSS class names, route paths, environment-variable keys, and SQL column names. Verify the result against your language's reserved-word list, since camelCase or snake_case can accidentally collide with class names like new, class, or default in JavaScript and Java.
Using editor shortcuts for frequent changesWhen the input panel is focused, keyboard shortcuts trigger uppercase, lowercase, capitalize, snake_case, and kebab-case transforms without leaving the keyboard. This speeds up repetitive cleanup when renaming batches of labels, refactoring a list of database fields, or normalizing slugs. Watch the preview when punctuation, whitespace, mixed language scripts, or compound words like iOS or markdown could be split at the wrong boundary.
Building slug and route segments from titlesConvert a heading like My First Blog Post into kebab-case to get my-first-blog-post for a URL slug. Toggle case sensitivity and separator handling when source titles already contain underscores, dots, or camelCase boundaries that need splitting first.
Protecting acronyms and brand names from being lowercasedRun lowercase on a paragraph that contains JSON, API, or iPhone and then manually fix the acronyms the conversion mangled. For production code identifiers, prefer snake_case or camelCase modes that respect existing letter runs instead of aggressive lowercasing.

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/world

Refactor 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-guide

Toggle case for stylized text

Input:     Hello World
tOGGLE:    hELLO wORLD

Input:     ToolAct Online
tOGGLE:    tOOLaCT oNLINE

FAQ

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.