Case
Converter
Convert text between UPPERCASE, lowercase, Title Case, camelCase, snake_case, and more.
How It Works
Enter Text
Type or paste the text you want to convert.
Pick a Case
Choose from 9 case styles including camelCase and snake_case.
Copy
Copy the converted text to your clipboard instantly.
Convert text case online between UPPERCASE, lowercase, Title Case, Sentence case, camelCase, snake_case, kebab-case, PascalCase, CONSTANT_CASE, and dot.case. ConverterUp's case converter is a fast helper for developers renaming variables, copywriters cleaning headlines, and SEO specialists normalizing slugs. Paste your input, click the format you need, and copy the result with one tap. The text is processed entirely in your browser, so blog drafts, code snippets, and internal product names never leave your device or get logged on a third-party server.
Where each case is used
camelCase (userId, fetchUserData) is the JavaScript and TypeScript convention for variables and functions. It is also standard in Java, Swift, Kotlin, and most modern OO languages for local variables and methods.
snake_case (user_id, fetch_user_data) dominates Python (PEP 8), Ruby, Rust, and SQL. It is also the de-facto JSON convention for APIs designed against Python or Rails backends. Snake case wins on long identifiers because underscores create natural word breaks.
kebab-case (user-id, fetch-user-data) is the URL slug convention, the CSS class and custom-property convention, and the HTML attribute convention. It is invalid as an identifier in almost every programming language because the hyphen parses as subtraction.
PascalCase (UserId, FetchUserData) marks types and classes in most languages: classes in JavaScript/TypeScript/Python/Java/C#, structs in Rust and Go (exported only), components in React. CONSTANT_CASE (MAX_RETRIES) is universal for compile-time constants, environment variables, and configuration keys.
ToolSeo.case-converter.section1.p5
Language and framework conventions
Go uses case as visibility: identifiers starting with an uppercase letter are exported (public); lowercase are package-private. User and user are not just style choices — they change the language semantics. This is unique to Go among major languages.
Ruby uses snake_case for methods and variables, PascalCase for classes and modules, and SCREAMING_SNAKE for constants. Rust enforces the same conventions with compiler warnings: non_snake_case and non_upper_case_globals lints fire on style violations.
JSON conventions are not standardized but de-facto split by ecosystem: REST APIs from Python/Rails backends use snake_case keys; APIs from Node/Java backends use camelCase; some legacy Microsoft APIs use PascalCase. Keep a single convention per API and document it.
CSS uses kebab-case for properties (background-color), custom properties (--brand-primary), and class names by convention (.product-card, BEM .product-card__title--featured). HTML uses kebab-case for custom data attributes (data-user-id) but reserves camelCase for ARIA properties accessed in JavaScript (el.dataset.userId).
ToolSeo.case-converter.section2.p5
Programmatic gotchas: acronyms, numbers, transitions
Acronyms are the hardest part of case conversion. Should XMLHttpRequest become x_m_l_http_request or xml_http_request? The latter is what most modern style guides recommend. Google's JavaScript style guide says treat acronyms as a single word in camelCase: parseHtml, not parseHTML. The .NET style guide says the opposite for two-letter acronyms: IOStream is fine, but HtmlParser for longer ones. ConverterUp follows the Google convention by default and offers a 'preserve acronyms' toggle.
Numbers are also ambiguous. Does html5Parser split as html5 + Parser (digits stick to the preceding word) or html + 5Parser? The default is digits-stick-to-preceding, producing snake_case html5_parser. For SemVer-style identifiers, this matters: oauth2Client should become oauth2_client, not oauth_2_client.
Word boundaries on already-mixed input are detected at: lowercase-to-uppercase transitions (fooBar → foo, Bar), uppercase-acronym-to-PascalCase transitions (HTMLParser → HTML, Parser), digit transitions when 'split on digit' is enabled, and explicit separators (-, _, ., space). When converting a mix of conventions, paste once, normalize to a known intermediate (often kebab-case), then convert to the target.
ToolSeo.case-converter.section3.p4
ToolSeo.case-converter.section3.p5
ToolSeo.case-converter.section4.heading
ToolSeo.case-converter.section4.p1
ToolSeo.case-converter.section4.p2
ToolSeo.case-converter.section4.p3
ToolSeo.case-converter.section4.p4
ToolSeo.case-converter.section4.p5
ToolSeo.case-converter.section5.heading
ToolSeo.case-converter.section5.p1
ToolSeo.case-converter.section5.p2
ToolSeo.case-converter.section5.p3
ToolSeo.case-converter.section5.p4
ToolSeo.case-converter.section5.p5
Frequently asked questions
How does Title Case differ from Sentence case?
Title Case capitalizes the first letter of each significant word, like in book titles. Sentence case capitalizes only the first letter of the sentence and proper nouns, which is the standard for body copy.
Does case conversion preserve numbers and punctuation?
Yes. Digits, punctuation, and emoji are kept untouched. The tool only changes letter casing and adjusts separators (underscore, hyphen, dot) when converting to programmer-friendly cases.
Does it handle Portuguese and Spanish accents correctly?
Yes. The converter is fully Unicode-aware, so accented letters such as á, ã, ç, ñ, and ü keep their diacritics and convert their case correctly in either direction.
Is there a maximum text length?
Up to 1 MB of plain text, which equals roughly 200,000 words. The transformation is instant for any realistic input thanks to native browser string APIs.
How are acronyms like XML, HTTP, and ID handled?
By default the converter treats consecutive uppercase letters as a single word, then capitalizes only the first letter on output: <code>XMLHttpRequest</code> → <code>xmlHttpRequest</code> (camelCase) or <code>xml_http_request</code> (snake_case). Toggle <em>Preserve acronyms</em> to keep them fully uppercase: <code>XMLHttpRequest</code> stays <code>XML_HTTP_Request</code>.
Can I convert in bulk, line by line?
Yes. Paste a multi-line input and each line is converted independently. Useful for renaming a list of database columns, slugifying a list of titles for URLs, or normalizing an export from a spreadsheet column.
ToolSeo.case-converter.q7
ToolSeo.case-converter.a7
ToolSeo.case-converter.q8
ToolSeo.case-converter.a8