Text Case Converter
Convert text between camelCase, snake_case, kebab-case, PascalCase, SCREAMING_SNAKE_CASE, Title Case, dot.case, path/case, UPPERCASE, lowercase and more in real time. Click any output to copy it instantly.
One identifier per line β all lines are converted to the chosen case.
| Case | Example | Common Use |
|---|
Browser Converter vs. Editor Plugins and CLI Renamers
Most code editors already ship a rename-refactor feature, and IDEs like IntelliJ or VS Code with the right extension can convert a selected identifier's case in place. Those tools are the right choice when the change needs to propagate through an entire codebase β a rename-refactor understands scope and updates every reference safely, something a text converter has no way to do. Where a browser-based converter earns its place is everything upstream of code: naming a new column before a migration is written, deciding on an environment variable name before it exists anywhere to refactor, or translating a product spec's plain-English field names into every casing convention a cross-language API needs simultaneously.
Command-line alternatives exist too β a one-off sed or awk substitution can mechanically convert case in a file, and codemod frameworks like jscodeshift can do it safely across a whole repository β but both require writing and testing a script for what is often a single lookup. This tool is deliberately the fast path: paste once, get every casing convention back immediately, with no script to write or repository to touch.
Tokenizing Text Before Recasing It
Before any output format can be produced, the converter has to agree on what the "words" in the input actually are β the mechanism handling this is a boundary-detection tokenizer. It inserts breaks in three situations: at existing separators (spaces, underscores, hyphens, dots, slashes), at a lowercase-to-uppercase transition typical of camelCase or PascalCase input (helloWorld β hello / World), and at the boundary within an acronym run followed by a new word (XMLParser β XML / Parser, so the acronym isn't shredded into single letters). Once the input is reduced to this word list, every output format is just a different join-and-capitalize rule applied to the same tokens: snake_case lowercases and joins with underscores, kebab-case does the same with hyphens, PascalCase capitalizes every token and concatenates, camelCase does the same but leaves the first token lowercase. Because every format shares the same tokenizer, a single input reliably produces a consistent set of outputs rather than each conversion re-parsing the string independently.
Case Conversion Failure Patterns to Watch For
- Silently renaming a public API field without a migration plan: converting
user_idtouserIdin a live response schema is a breaking change for every existing consumer parsing that field β support both keys during a deprecation window, or version the endpoint, rather than flipping the case outright. - Disagreeing with a linter or a collaborator on acronym casing: Go convention keeps acronyms uppercase in identifiers (
UserID,HTTPClient), while Java and JavaScript convention typically doesn't (userId,httpClient) β a converter that picks one convention can produce output that fails your team's specific linter until you adjust it by hand. - Converting names with embedded digits or version numbers without checking the result: a string like
OAuth2TokenorS3Bucketcan tokenize unpredictably depending on whether digits count as a word boundary β verify the output rather than assuming it split the way you expected. - Bulk-converting a list of identifiers without spot-checking a few by hand: a boundary-detection quirk that mishandles one unusual input format (mixed separators, leading underscores) is easy to miss when scanning fifty converted lines at once.
Why Renaming API Fields Breaks Clients Silently
Case conversion applied to a live API contract carries a different risk than converting text for internal naming, because external consumers frequently deserialize JSON by exact field-name match rather than through a schema-tolerant parser. Mobile clients in particular tend to rely on strict model-mapping or codegen layers β Swift's Codable, Kotlin serialization, or a generated DTO class β that fail to populate a field, or throw outright, the instant the JSON key it expects stops appearing under that exact string, even though the underlying value never changed. A web frontend using a permissive, dynamically-typed access pattern can mask the identical rename completely, which is precisely why this class of break is so easy to miss in whatever environment the change originated in and so disruptive everywhere it wasn't tested.
The safe pattern for any field rename that crosses a boundary you don't fully control is additive, not substitutive: emit and accept both the old and new key names during a deprecation window, track which clients are still requesting the legacy key through request logging or a usage metric, and only remove it once telemetry confirms nothing depends on it anymore. Treating a naming-convention cleanup as equivalent to renaming an internal variable β a single mechanical find-and-replace shipped in one deploy β is the underlying mistake; the case change itself is cosmetic, but the contract change beneath it isn't, and any consumer parsing by exact key match will treat it exactly like the breaking schema change it actually is.
Frequently Asked Questions
What text cases does this tool support?
The tool converts between camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case, Title Case, UPPER CASE, lower case, dot.case, path/case, and more. All conversions happen simultaneously from a single input β you type or paste once and every variant is generated instantly. This is particularly useful when you need to define the same concept across multiple contexts: a Kubernetes label (kebab-case), an environment variable (SCREAMING_SNAKE_CASE), a Go struct field (PascalCase), and a JSON API field (camelCase) all from the same descriptive phrase.
What is the difference between camelCase and PascalCase?
camelCase begins with a lowercase letter and capitalises the first letter of each subsequent word β for example, myVariableName or getUserById. PascalCase (also called UpperCamelCase) capitalises every word including the first β for example, MyVariableName or GetUserById. In practice, camelCase is the standard for variable and function names in JavaScript, Java, Go, and Kotlin, while PascalCase is reserved for class names, TypeScript interfaces, React components, and Go exported identifiers. Understanding this distinction prevents common naming errors when reviewing code or designing APIs.
When should I use SCREAMING_SNAKE_CASE?
SCREAMING_SNAKE_CASE β all uppercase letters with underscores separating words β is the conventional format for environment variables, constants, and externally injected configuration values. Examples include DATABASE_URL, AWS_ACCESS_KEY_ID, MAX_RETRY_COUNT, and REDIS_CONNECTION_TIMEOUT. Using this convention universally signals to engineers that a value is fixed configuration or a constant rather than a computed runtime variable. It is the standard across shell scripts, Docker and Docker Compose environment blocks, Kubernetes ConfigMaps and Secrets, GitHub Actions environment variables, and twelve-factor app configuration. Most linters and style guides for Python, Java, and C enforce this convention for module-level constants.