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.
Convert all letters to uppercase
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
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
- Paste or type your text into the Input box, or hit the paste icon to pull from your clipboard.
- Open the Convert to dropdown and pick one of the 13 styles — a short description shows what each one does.
- Press Convert. The recased text appears in the Result panel instantly, with a live character count.
- Click Copy to send it to your clipboard, or Download to save it as a
.txtfile. - 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.
| Style | Output | Used for |
|---|---|---|
| camelCase | userProfileName | JavaScript / TypeScript variables, JSON keys, Java methods |
| PascalCase | UserProfileName | Classes, interfaces, React / Vue components, C# types |
| snake_case | user_profile_name | Python & Ruby (PEP 8), SQL columns, file names |
| kebab-case | user-profile-name | CSS classes, URL slugs, npm packages, HTML attributes |
| CONSTANT_CASE | USER_PROFILE_NAME | Constants, .env variables, C/C++ macros |
| Title Case | User Profile Name | Headings, button labels, document titles |
| Sentence case | User profile name | Body copy, UI microcopy, form field labels |
| dot.case | user.profile.name | Config 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.
Related text & markdown tools
Turn a title into a clean kebab-case slug
Find & ReplaceSwap terms across recased text
Text SorterAlphabetize or dedupe lines of text
Word CounterCount words, characters & lines
Lorem Ipsum GeneratorCreate placeholder filler text
Markdown EditorWrite and preview Markdown live
Markdown to HTMLConvert Markdown to clean HTML
Markdown Table GeneratorBuild Markdown tables visually
Markdown TOCGenerate a table of contents
All ToolsBrowse the full Toolk hub
Guide: Markdown SyntaxRead the full Markdown syntax guide
Guide: Text Tools for CreatorsRead the text-processing workflow guide
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.