Skip to main content
CaseSwitch

camelCase Converter

Use the CaseSwitch camelCase Converter to turn a phrase, snake_case column, or kebab-case slug into a JavaScript-style identifier (userProfileId). Paste one name or a list, review acronyms, and copy the result. Conversion runs in this browser.

Written by the CaseSwitch editorial team. We maintain these tools in the browser so drafts, keys, and images stay on your device.

Last reviewed: 30 August 2026

Processed locally in your browser. Nothing is sent to a server.

Paste or type text to convert. Output stays empty until there is input.

Character count: 0 · Word count: 0 · Line count: 0

Examples

Phrase to camelCase

Input

user profile image

Output

userProfileImage

From snake_case

Input

user_profile_image

Output

userProfileImage

From kebab-case

Input

user-profile-image

Output

userProfileImage

Dotted path

Input

user.profile.id

Output

userProfileId

Existing PascalCase / camelCase split

Input

XMLHttpRequest

Output

xmlHttpRequest

Punctuation that is not a separator stays

Input

user profile!

Output

userProfile!

How to use

  1. Paste a phrase, snake_case name, kebab-case slug, or dotted path.
  2. Check acronyms (ID, URL, HTML) and any leftover punctuation on the output.
  3. Copy the camelCase identifier. For a list, convert one name per line.

What this tool is for

camelCase joins words without spaces: the first word stays lowercase and each following word starts with a capital (userProfileId). It is the default for JavaScript variables, JSON keys in many APIs, and Java methods. This converter exists so you can turn a readable phrase or a snake_case column into a legal-looking identifier without hand-editing fifty fields. It is a case/separator transform, not a refactor that updates call sites.

How it works

Word boundaries come from spaces, hyphens, underscores, and dots, and from camelCase / PascalCase shifts already in the input (a lowercase or digit letter followed by a capital, or an acronym followed by a capital-then-lowercase run). The first segment is lowercased; later segments are capitalized and concatenated. Punctuation that is not a separator stays attached to the segment, so “user profile!” becomes userProfile! — the exclamation mark is not stripped. Identifiers can start with a digit if the first segment does (2faToken).

When to use it

Migrating SQL columns to a Node API, turning spreadsheet headers into TypeScript property names, renaming CSS modules that a linter wants in camelCase, and converting a design-doc phrase into a variable name. Paste a list, one identifier per line, for bulk work, then review acronyms before you commit.

When not to use it

Do not camelCase URL paths — search engines and humans expect kebab-case slugs. Do not camelCase Python functions (PEP 8 wants snake_case). Do not use it as a substitute for a real rename that updates call sites. Do not paste a whole source file; comments and strings will be mashed into identifier-shaped noise.

How it compares to related tools

PascalCase capitalizes the first letter too (UserProfile) and is for classes and React components. snake_case uses underscores for Python and SQL. kebab-case uses hyphens for URLs and CSS. The Slug Generator is stricter about punctuation for public paths. Pick the convention of the layer you are targeting. Longer background: What is camelCase? and Developer naming conventions.

Common mistakes

Leaving acronyms as XMLHttpRequest vs xmlHttpRequest inconsistently — this converter turns XMLHttpRequest into xmlHttpRequest. Converting a whole file of comments. Creating identifiers that start with a digit after splitting. Assuming “!” and “@” are dropped; only space, _, -, and . are separators.

camelCase vs PascalCase vs snake_case vs kebab-case

Use camelCase for JavaScript/TypeScript variables, function names, and most JSON keys (userId, isActive). Use PascalCase for types, classes, and React components (UserAvatar — lowercase names are treated as HTML tags). Use snake_case for Python functions and SQL columns. Use kebab-case for URLs and global CSS. Mixing them in one layer (a JSON API that is half snake_case) is what this converter is for: pick the target layer and convert the names, then version the API if clients already depend on the old keys.

Frequently asked questions

Is camelCase the same as mixed case?+

People say “mixed case” loosely. camelCase specifically means lowercase first word, capitals on the rest, no separators. PascalCase is the sibling that caps the first letter too.

How do you handle acronyms like ID and URL?+

This converter treats them as ordinary letters unless they are already separated. XMLHttpRequest becomes xmlHttpRequest. Many style guides prefer userId over userID. Check your linter after converting.

Can I convert snake_case to camelCase in bulk?+

Paste a list, one identifier per line, and convert. Review names that contain digits or irregular acronyms before committing.

Does this strip punctuation?+

Spaces, underscores, hyphens, and dots are treated as word breaks and removed as separators. Other punctuation stays attached to the adjacent word.

Should JSON keys be camelCase?+

Many JavaScript APIs use camelCase keys. Some Python and Rails APIs use snake_case. Match the existing API; do not convert a public contract without a version bump.

Is my code uploaded?+

CamelCase conversion stays on-device after the page loads. Avoid pasting live API keys or production secrets into any browser UI you might screenshot.

Does this tool send my payload to CaseSwitch?+

No. Formatting, encoding, and naming conversions for this page run in your browser after load — your sample stays on the device.

Related guides

Read our original articles on this topic.

Related tools

PascalCase Converter

Naming React components and matching file names to their default export, generating TypeScript interfaces from a design-doc phrase list, turning SQL or API field labels into C# or Java class names, and converting a kebab-case or snake_case token into a type name. Paste one identifier per line for bulk work, then review acronyms before you commit.

snake_case Converter

Aligning a Node or TypeScript mapper with PostgreSQL column names, generating Python method names from a product spec, turning spreadsheet headers into database fields, and preparing keys that will later become environment-style constants (then uppercasing). Paste one identifier per line for bulk work.

kebab-case Converter

CSS class names and BEM blocks, REST path segments, data-testid values, design-token names that a style guide wants dashed, and a first-pass convert from camelCase props into a URL-ish token. Paste one name per line for bulk work.

dot.case Converter

Building i18n keys, namespacing telemetry events, matching a config schema that already uses dotted paths, and turning spreadsheet headers into lodash-style accessor strings. Paste one identifier per line for bulk work, then shorten overly deep keys by hand.

Slug Generator

Blog posts, documentation pages, product listing URLs, knowledge-base articles, and CMS permalink fields when you have a working title and need a path before publish. Also useful for turning a noisy marketing headline into a short candidate slug you can still edit by hand.