camelCase Converter
camelCase glues words together with no spaces: the first word stays lowercase and each following word starts with a capital. Built for variables, props, and API field names in JavaScript-heavy codebases.
Example
Input
XML Http Request timeout ms
Output
xmlHttpRequestTimeoutMs
How the conversion works
Spaces, hyphens, underscores, and most symbols act as separators. Camel boundaries and acronyms split too—HTTPServer becomes httpServer, and XMLHttpRequest becomes xmlHttpRequest. Digits stay as their own chunks beside letters, so “version 2 beta” becomes version2Beta. Unicode letters stay in the identifier, so accented product names do not collapse into ASCII junk. Accented letters remain part of the identifier rather than being stripped to ASCII.
Working with multiple lines
Each line converts independently and keeps its line break. That lets you paste a column of labels from a spreadsheet or OpenAPI list and receive a column of identifiers ready to drop into a type definition. Empty lines stay empty so your structure survives the round trip. One label per line keeps generated prop names aligned with a source spreadsheet.
When to prefer PascalCase
React components, classes, and TypeScript types usually want PascalCase (every word capped). Use camelCase for values, functions, and object keys in most JS style guides. If you need wire formats for Python or SQL instead, switch to snake_case after you settle on the word breaks. Prefer class names instead? Switch to PascalCase; the same splits apply with a capped first word. Choose PascalCase instead when the name represents a type or component rather than a value.
Common use cases
- Turning spreadsheet headers into JS object keys
- Renaming design-system tokens for a JS API
- Cleaning labels before generating TypeScript types
- Normalizing form field names in a migration
Frequently asked questions
What happens to punctuation?
Symbols that are not letters or digits are treated as separators and removed from the identifier.
How are acronyms split?
Runs like XMLHttp become xml + Http so you get xmlHttp… instead of one jammed blob.
Does emoji stay in the name?
Emoji act as separators and are dropped from camelCase output.
Can I convert one name at a time from a list?
Put each name on its own line. Lines convert separately and keep their breaks.