Text Case Converter
Convert text between camelCase, snake_case, kebab-case, Title Case, and more.
Detected 5 words · Hello · world · from · Lovable's · tools
About Text Case Converter
Text Case Converter transforms free text between programmer-friendly cases: camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, Train-Case, and lower / UPPER / Sentence case. Each output is computed simultaneously, so picking the right one is a copy away. The transformer detects word boundaries from existing punctuation, case transitions, and digit boundaries — so `XMLHttpRequest` becomes `xml_http_request`, `userID` becomes `user_id`, and `Order2024Q3` becomes `order_2024_q_3`.
Reach for it when an external system uses a different casing convention than your code: API payloads in snake_case but TypeScript expects camelCase, environment variables in CONSTANT_CASE, URL slugs in kebab-case, file names in Train-Case, or import names in PascalCase. For converting JSON keys in bulk, use JSON Key Renamer instead — it applies the same case transforms to every key in a document recursively. This tool is for ad-hoc text or single identifiers.
Examples
user account IDcamelCase: userAccountId
snake_case: user_account_id
kebab-case: user-account-id
CONSTANT: USER_ACCOUNT_ID
PascalCase: UserAccountIdAll target cases shown side-by-side. The detector treats spaces, dashes, underscores, and case transitions as word boundaries.
Frequently asked questions
How does it detect word boundaries?
From three signals: explicit separators (spaces, dashes, underscores, dots), case transitions (lowercase → uppercase as in `userID`), and digit boundaries (`Order2024` → `Order` + `2024`). The combination handles most identifier styles you will encounter.
How is this different from JSON Key Renamer?
JSON Key Renamer applies the same case transforms but only to keys inside a JSON document, recursively. Use this tool for ad-hoc text and single identifiers; use Key Renamer when the input is JSON and every key needs renaming.
What about acronyms like XML or HTTP?
Acronyms are tricky. The default reads `XMLHttpRequest` as `XML` + `Http` + `Request` and emits `xml_http_request`. If you prefer treating an acronym as a single word in PascalCase output, the option toggle has 'preserve acronyms' — `XMLHttpRequest` then survives unchanged.
Does it work with non-ASCII characters?
Yes for the most part. Unicode-aware lower/upper conversion is used everywhere, so accented letters and other scripts round-trip correctly. Word-boundary detection still relies on ASCII separators by default; for languages where `_` or `-` are not used, paste with explicit spaces.
