πŸ”€ Utilities

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.

πŸ“– How to Use This Tool
β–Ό
1
Type text in the input field
2
All conversions show at once: camelCase, snake_case, etc.
3
Click any result to copy it
4
Bulk Convert handles multiple lines
πŸ“ Examples
camelCase
Input: hello world
Output: helloWorld
All Conversions
Bulk Convert

One identifier per line β€” all lines are converted to the chosen case.

Case Reference
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

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.