Skip to main content

Case Converter: camelCase, snake_case, kebab-case & More

Paste text, pick a style, and get it back as camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, or 7 more. 13 formats, free, 100% in your browser.

Input Text
0 chars

Convert all letters to uppercase

Result
0 chars

Features

Multiple Case Types

13+ case conversion options including camelCase, snake_case, and more

Instant Conversion

Convert text in real-time as you type or paste

No Registration

100% free - no signup or account required

Developer Friendly

Perfect for variable naming, code formatting, and more

Copy & Download

One-click copy and download functionality

Privacy First

All processing happens locally in your browser

Runs 100% in your browser
13 case formats, no uploads

Case Converter: change text between camelCase, snake_case, and 11 more styles

A case converter rewrites text into a chosen letter-casing style. Paste any text, pick a format — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, Sentence case, dot.case, path/case, UPPERCASE, lowercase, or two novelty styles — and copy the result. It handles 13 formats, runs 100% in your browser, and is free with no signup.

How to convert text case

  1. Paste or type your text into the Input box, or hit the paste icon to pull from your clipboard.
  2. Open the Convert to dropdown and pick one of the 13 styles — a short description shows what each one does.
  3. Press Convert. The recased text appears in the Result panel instantly, with a live character count.
  4. Click Copy to send it to your clipboard, or Download to save it as a .txt file.
  5. Need a different style? Change the dropdown and convert again — the original input stays put.

How case conversion actually works

Most styles are not a simple toUpperCase() call. The converter first tokenizes your text into words, then rejoins them with the right separator and capitalization. It splits on spaces, hyphens, underscores, dots, and slashes, and — critically — on internal camelCase boundaries. So getUserID is read as the words get, User, ID before being recast, which is why snake_case gives get_user_id rather than mangled output.

UPPERCASE and lowercase use JavaScript's built-in String.prototype.toUpperCase() and toLowerCase(), which apply the Unicode default case mappings. Those mappings are not always one letter in, one letter out. Per MDN's String.prototype.toLocaleUpperCase docs, some locales — Turkish especially — do not follow the default mappings, so the plain method can return the wrong letter for that language.

"For some locales, such as Turkish, whose case mappings do not follow the default case mappings in Unicode, there may be a different result."— MDN Web Docs, String.prototype.toLocaleUpperCase()

Worked examples: input → output

"user profile image" · camelCase

userProfileImage

"Max Retry Count" · CONSTANT_CASE

MAX_RETRY_COUNT

"My Blog Post Title" · kebab-case (URL slug)

my-blog-post-title

Edge case · acronym handling

Convert XMLHttpRequest to snake_case and you get xml_http_request, not x_m_l_http_request. The tokenizer keeps runs of capitals together as an acronym (XML) and only breaks before the next capitalized word (Http). This is the same rule that lets iOSDevice become i_os_device predictably.

Case style reference: where each one is used

Every input below is the phrase user profile name. Pick the convention your language or platform expects — mixing them in one codebase is a common source of lookup bugs and broken imports.

StyleOutputUsed for
camelCaseuserProfileNameJavaScript / TypeScript variables, JSON keys, Java methods
PascalCaseUserProfileNameClasses, interfaces, React / Vue components, C# types
snake_caseuser_profile_namePython & Ruby (PEP 8), SQL columns, file names
kebab-caseuser-profile-nameCSS classes, URL slugs, npm packages, HTML attributes
CONSTANT_CASEUSER_PROFILE_NAMEConstants, .env variables, C/C++ macros
Title CaseUser Profile NameHeadings, button labels, document titles
Sentence caseUser profile nameBody copy, UI microcopy, form field labels
dot.caseuser.profile.nameConfig keys, namespaces, object paths

The casing trap that quietly breaks code

Uppercasing is not always reversible, and it can change the length of your string. The German ß (eszett) has no single uppercase letter, so "straße".toUpperCase() returns "STRASSE"seven characters from six. Lowercasing that result gives strasse, not straße. If you uppercase a value to compare or store it, that round-trip loss can silently fail lookups.

Title Case here is also smarter than a space-only split: it capitalizes after hyphens, quotes, and brackets too, so mother-in-law becomes Mother-In-Law. For locale-correct casing in production (Turkish dotless ı vs dotted İ), use toLocaleUpperCase("tr") in your own code — the browser default mapping cannot infer language from text alone.

Runs 100% in your browser

Your text never leaves your device. Every conversion runs locally in JavaScript and copying uses your browser's native clipboard — no uploads, nothing leaves your device. I tested all 13 styles against tricky inputs: XMLHttpRequest, the German straße, multi-line lists, and pre-cased identifiers like already_snake. Acronym splitting and white-space preservation held up, and the result stays instant on multi-paragraph paste.

Frequently asked questions

Is this case converter free?

Yes — 100% free with no signup and no usage cap. All 13 formats are available, and the output is free to use in personal and commercial work.

Does my text get uploaded anywhere?

No. Every conversion runs in your browser with JavaScript, so nothing is sent to a server. The tool works offline once the page loads.

What is the difference between camelCase and PascalCase?

camelCase lowercases the first word and capitalizes each word after it (getUserName), used for JavaScript variables and functions. PascalCase capitalizes every word (GetUserName), used for classes and React components.

When should I use snake_case vs kebab-case?

Use snake_case (user_name) for Python and SQL, per PEP 8. Use kebab-case (user-name) for CSS classes, URL slugs, and npm packages. Reach for our URL slug generator when you specifically need web-safe slugs.

How does it split words like XMLHttpRequest?

It detects camelCase boundaries and acronyms first. XMLHttpRequest tokenizes to XML, Http, Request, so snake_case gives xml_http_request. It also splits on spaces, hyphens, underscores, dots, and slashes.

Last updated: June 2, 2026 · Runs 100% in your browser — no uploads, nothing leaves your device.

Need a different tool?

Browse all 89 free, in-browser tools — or tell us what we should build next.

Browse all tools