Camel case to snake case conversion is the deterministic mapping of one identifier into another naming style using a fixed token list, and a cheat sheet captures the tokenization rules, acronym behavior, and the six output forms so you can predict every result. The Camel Case to Snake Case Converter follows exactly those rules: it pastes one identifier or short phrase, splits lower-to-upper transitions, separates a capital sequence from the capitalized word that follows it, replaces non-letter and non-number runs with boundaries, normalizes every token to lowercase, and then assembles snake, kebab, camel, Pascal, constant, and title outputs. Every output appears at once with its own copy control, so you compare forms without rerunning the tool. The same logic that produces snake_case from XMLHttpRequest also produces xml_http_request because the acronyms stay grouped — the tokenizer prefers a smarter boundary rule over simply inserting an underscore before every capital letter. This cheat sheet summarizes the rules, the limits, and the project-side steps you still need to take after copying a result.

camel case to snake case cheat sheet
Camel Case to Snake Case Cheat Sheet: Six Naming Styles

How Token Boundaries Are Drawn

Tokenization is the most error-prone part of any case converter, so the cheat sheet starts there. The Camel Case to Snake Case Converter applies three rules in order, and the same three rules decide every boundary in every output style.

Lower-to-upper boundaries. A lowercase letter or digit followed by an uppercase letter becomes a split. userName divides into "user" and "Name"; version2Beta divides into "version2" and "Beta" because the lowercase "n" sits next to the uppercase "B". This is the rule that drives most splits in ordinary camelCase and PascalCase inputs.

Acronym-to-word boundaries. A run of consecutive uppercase letters followed by a word that itself starts with an uppercase letter splits between the acronym and the word. XMLHttpRequest therefore divides into "XML", "Http", and "Request" rather than into individual letters. Without this rule the result would be x_m_l_http_request, which loses the acronym entirely. The same rule keeps HTTPSConnection as https_connection rather than h_t_t_p_s_connection.

Separator boundaries. Any run of characters that is neither a letter nor a number becomes a split, and repeated separators collapse rather than producing empty tokens. Spaces, dashes, dots, slashes, plus signs, pipes, and other punctuation all qualify. Hyphenated input like get-URL-by-id therefore tokenizes as "get", "URL", "by", "id", and the hyphen becomes the joiner the chosen style expects.

The tokenizer preserves Unicode letters and numbers but applies an explicit English locale during case conversion so the same input renders the same output on every browser regardless of system language settings. Digits stay inside the token where a boundary permits, so the trailing "2" in userProfile2FA stays attached to its word rather than starting a new token. Whitespace collapses. The output is one stable token list that feeds all six styles, which is why the same paste produces snake, kebab, camel, Pascal, constant, and title outputs simultaneously.

The Six Output Styles at a Glance

The six styles cover the naming forms used most often in source code, configuration, URLs, and display text. None is universally correct — the choice is project policy.

StyleJoinerCase ruleCommon use
snake_caseunderscoreall lowercase tokensPython variables, SQL columns, file names
kebab-casehyphenall lowercase tokensURL slugs, CSS class names, CLI flags
camelCasenonefirst token lowercase, rest capitalizedJavaScript variables, JSON keys in some APIs
PascalCasenoneevery token capitalizedC# classes, React components, TypeScript types
CONSTANT_CASEunderscoreall uppercase tokensEnvironment variables, C macros
Title Casespaceevery token capitalizedDisplay labels, documentation headings

The Camel Case to Snake Case Converter surfaces every style at once with its own copy control, so you can copy snake_case for a Python module, kebab-case for a CSS class, and PascalCase for a TypeScript interface from the same paste. Languages, frameworks, databases, and teams each impose restrictions on leading digits, reserved words, maximum length, and accepted characters that no converter can know in advance, so the six outputs are common forms rather than enforced rules. The converter does not transliterate scripts, singularize words, spell-check text, preserve punctuation, or guess semantic abbreviations, which means user ID becomes userId rather than the project-specific userID your team might prefer. Lock those abbreviation decisions in writing before any rename.

Convert Any Identifier in Four Steps

The cheat sheet version of the workflow fits in four repeatable steps. Each step has a specific output you can verify before moving on.

  1. Paste an identifier or short phrase into the input field. camelCase, PascalCase, acronym-heavy names, hyphenated words, and mixed phrases are all accepted. Empty input or punctuation-only input is rejected because it contains no convertible token.
  2. Review the tokenization. The tool shows how it separated the input into tokens, so you can spot surprises like an acronym that did not split where you expected or a digit boundary that grouped unexpectedly. Confirming tokenization here saves renaming mistakes later.
  3. Choose the output that matches your codebase. All six outputs are visible at once with individual copy controls, so you can copy snake_case for a Python module, kebab-case for a CSS class, and PascalCase for a TypeScript interface without retyping the input.
  4. Copy the chosen value and run project-specific checks. Search for every reference, run formatters and linters, perform type checks, prepare migrations or compatibility aliases where exported identifiers, database columns, environment variables, URLs, or JSON property names change, and confirm tests still pass before merging.

The whole flow runs locally through React and does not execute pasted content. Input is capped at five thousand code units to keep rendering and clipboard operations bounded, so very large files need to be processed in chunks. Even though the tool does not upload or store anything, do not paste secrets, API keys, private source code, or personally identifying data unless your organization permits local processing.

Worked Examples for Common Identifiers

The same tokenization rule produces very different outputs from different inputs, and a few practical cases show where the boundaries actually fall.

Inputsnake_casekebab-casecamelCasePascalCaseCONSTANT_CASETitle Case
XMLHttpRequestxml_http_requestxml-http-requestxmlHttpRequestXmlHttpRequestXML_HTTP_REQUESTXml Http Request
userProfile2FAuser_profile2_fauser-profile2-fauserProfile2FaUserProfile2FaUSER_PROFILE2_FAUser Profile2 Fa
get-URL-by-idget_url_by_idget-url-by-idgetUrlByIdGetUrlByIdGET_URL_BY_IDGet Url By Id

The acronym rule is what protects XMLHttpRequest from becoming x_m_l_http_request. The digit rule keeps "2" attached to its word in userProfile2FA, so camelCase renders as userProfile2Fa where the boundary lands between the digit "2" and the uppercase "F". Hyphenated input behaves as if the input were separated by spaces — the hyphens become boundaries and all six outputs absorb them as joiners or case resets. These are mechanical forms, not universal style rules; a project that prefers userID over userId for the canonical form of that acronym will not see it from any rule-based converter, and decisions about abbreviation policy, singular versus plural, transliteration of non-English scripts, and treatment of internal capital letters inside product names all live outside the tool.

When a Text Converter Is Not a Refactor

A converter produces text. A rename changes a system. Treating the two as interchangeable is the most common source of broken builds after a casing sweep.

Changing an exported identifier, database column, environment variable, URL path, or JSON property is a breaking change even when the new spelling looks cleaner. Callers, serialized payloads, saved queries, log aggregations, dashboards, and downstream services may all depend on the existing casing. File systems and databases compare identifiers under different case-sensitivity rules, so a rename that differs only by capitalization often needs an intermediate name — user_profile, then userProfile, then UserProfile — to avoid collisions and to give consumers a window to update references. Generated code, reflection-driven discovery, configuration files, server-side templates, external consumer code, and third-party integrations may also contain references that language-aware rename tools cannot discover. A simple search-and-replace inside source files misses every generated file, every compiled artifact, every cached serialization, and every documentation example.

Plan the rename across the full set of consumers, run the search in source-controlled files plus any externally stored reference list, and prepare compatibility aliases for symbols whose callers you cannot update. Review diffs and deployment order before merging a broad rename. A multi-service rename is usually safer when the new name is added alongside the old one, the codebase migrates to the new name over a release cycle, and the old alias is removed only after telemetry confirms zero remaining references. For databases, write a forward migration and a rollback migration; for APIs, publish a deprecation header and a sunset date; for environment variables, keep both names mapped through the configuration loader for one full release. The Camel Case to Snake Case Converter gives you the spelling; tests, migrations, compatibility aliases, and a phased rollout give you the change.

If you're weighing options, Excel Formulas Cheat Sheet: Command Line vs Online covers this in detail.

If you're weighing options, Git Cheat Sheet Alternative Built Around Safer Copy Habits covers this in detail.