Case converter. Twelve cases, live.
Type or paste once. See all twelve cases live — UPPERCASE, lowercase, Title, Sentence, camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, aLtErNaTiNg, iNVERSE. Click any to copy.
Type or paste in the box. Every case renders below — UPPERCASE, lowercase, Title, Sentence, camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, aLtErNaTiNg, iNVERSE. Click any case to copy. Browser-only — your text stays on the page.
Privacy: text is processed in your browser. Nothing is sent or logged.
Five conventions developers ship by.
camelCase. JavaScript / TypeScript variables and functions (getUserName, isLoggedIn). Java instance methods. Swift / Kotlin variables. The de-facto standard for the entire web platform — addEventListener, querySelector, every browser API uses it. Use it by default in any JS / TS / Java codebase unless the project's lint config says otherwise.
PascalCase. Classes, types, interfaces, React components (UserProfile, PaymentMethod). Go exported identifiers (the case literally controls export visibility). Rust types. The capital-first signals "this is a type, not an instance." React + TypeScript codebases distinguish components (PascalCase) from hooks (camelCase prefixed with use) — both forms in the same file.
snake_case. Python variables and functions (PEP 8). Ruby variables. SQL columns and table names (the canonical case for relational DBs). Rust variables. C++ standard library. Pick this when the surrounding codebase is Python or SQL-heavy; pick something else otherwise.
CONSTANT_CASE. Environment variables (DATABASE_URL, STRIPE_SECRET_KEY). Compile-time constants in C / Java / JavaScript. The all-caps with underscores convention is universally readable as "this should not change at runtime." Used in .env files, Dockerfiles, GitHub Actions, every CI config in existence.
kebab-case. URL slugs (/about-us/, /blog/post-title/). CSS class names (btn-primary, text-large). HTML data attributes (data-user-id). Command-line flags (--no-cache, --max-old-space-size). The hyphen is URL-safe and reads naturally to humans scanning a URL. Google's URL structure guidance recommends hyphens over underscores in slugs.
Four jobs this tool covers.
Job 1: Identifier renaming. Rename a variable or class that needs to flow through multiple cases — UI label is "User Profile," React component is UserProfile, CSS class is user-profile, env var is USER_PROFILE_KEY, DB column is user_profile. Type once, copy each.
Job 2: Slug generation from a title. Paste a blog title — kebab-case output is the URL slug. For more controlled slug behavior (max length, reserved characters, accent stripping), use our Slug Generator — case converter is the quick version.
Job 3: Refactor case across a codebase. Migrating a Python repo from camelCase to snake_case (or the inverse), or moving from snake to kebab in URL routes — preview the conversion of a representative identifier here, validate it reads correctly, then run a project-wide rename via your editor or sed.
Job 4: Title formatting. Convert manuscript headings between Title Case and Sentence case to match a publication's style guide. Most modern style guides have moved to Sentence case for headings (more humble, easier to read at scan-pace). Pair with our Title Case Converter for AP / Chicago strict mode.
Six questions users ask.
When do I use camelCase vs PascalCase vs snake_case?
Convention varies by language and context. JavaScript / TypeScript use camelCase for variables and functions, PascalCase for classes and types. Python uses snake_case for variables and functions, PascalCase for classes. Go uses PascalCase for exported identifiers, camelCase for unexported. Rust uses snake_case for variables, PascalCase for types. SQL conventionally uses snake_case for column and table names. Match the surrounding codebase, not your preference — consistency is the value.
When do I use kebab-case?
URL slugs, CSS class names, HTML attributes, command-line flags. The hyphen is URL-safe (the period and underscore are not, in some contexts) and reads naturally to humans scanning a URL. Modern web frameworks default to kebab-case for routes (about-us, blog-posts) and CSS classes (text-large, btn-primary). For a slug-specific tool with reserved-character handling, see our Slug Generator.
What's CONSTANT_CASE for?
Environment variables, constants in many languages (especially C, Java, JavaScript), and immutable configuration values. The all-caps with underscores convention dates back to Fortran and has carried through every language since. By convention, anything in CONSTANT_CASE shouldn't change at runtime — it's a contract with the reader, not a language enforcement in most modern languages.
What does Title Case actually mean?
Capitalises the first letter of every word. Different style guides have different rules about which words to skip (Chicago Manual leaves articles, conjunctions, and prepositions of fewer than 5 letters lowercase; AP capitalises everything except a, the, and short conjunctions). We use the simpler all-words-capitalised variant — that's what most title-case tools default to, and most CMS title fields expect. For strict AP / Chicago title casing, edit the result manually after.
Why is the input split into words first?
Every conversion needs to know where word boundaries are. We split on whitespace, dashes, dots, underscores, and case-change positions (the W in HelloWorld is treated as a word boundary). This means HelloWorld → hello-world / hello_world / hello.world all work. The split-and-rejoin approach also handles mixed input gracefully — paste 'helloWorld_some-thing.MORE' and every output is correctly normalised.
Is the text I paste sent anywhere?
No. All conversions happen in your browser. The text is never uploaded to Digital Heroes servers, never logged. The page is static HTML; the only network request is the initial page load. Safe for code identifiers, internal naming proposals, or anything else you'd not want to ship to a third party.