11 cases · client-side · live preview

Convert between 11 text cases instantly

camelCase, PascalCase, snake_case, kebab-case, SCREAMING_SNAKE, Title Case and more. Paste, pick a target, get a clean conversion.

Case Converter Workspace
Input size
39 B
8 words
Output size
32 B
camelCase
Target
camelCase
11 cases
Status
Ready
live
Target
input · raw text
output · camelCase
quickBrownFoxJumpsOverTheLazyDog
Quick Start

How to convert text between cases

Programming styles vary by language and team. This tool tokenizes any input string (handling existing camelCase, snake_case, or hyphens) and emits the canonical form for any of 11 supported cases.

  1. 01

    Paste your text

    Drop any string — a free-form sentence, an existing identifier, or a name already cased in one convention. The tokenizer normalises whitespace, hyphens, underscores, and dots, then splits camelCase / PascalCase boundaries so XMLHttpRequest becomes [XML, Http, Request].

    Round-tripping is safe: you can paste output back into the input and switch to a different case without losing tokens. Validation is implicit — empty input simply produces empty output.

    identifiertokenizercamelCase splitUnicode
    input · raw texttokenized
    Quick brown fox
    15 B · 3 tokensready
  2. 02

    Pick a target case

    Choose from 11 canonical styles: camelCase (JS/TS variables), PascalCase (classes, React components), snake_case (Python, SQL, Ruby), SCREAMING_SNAKE (constants, env vars), kebab-case (URLs, CSS), COBOL-CASE, dot.case, Title Case, Sentence case, UPPERCASE, and lowercase.

    Acronym handling is conservative — XML, HTTP, URL stay as readable groups instead of being split character-by-character.

    camelCasesnake_casekebab-casePascalCaseCOBOL-CASE
    target · camelCaseconvention
    quickBrownFox
    13 B · 1 tokenJS-friendly
  3. 03

    Watch the live preview

    The output updates on every keystroke via a useMemo-backed tokenizer — no submit button, no debounce, no round-trip. Switching the target case re-renders the same tokens in the new style instantly.

    Word, byte, and case metrics in the stats bar refresh in lockstep so you can spot length deltas when an identifier crosses a column limit.

    liveuseMemozero latencyclient-side
    output · kebab-caselive
    quick-brown-fox
    15 B · 1 lineURL-safe
  4. 04

    Copy or download

    One click copies via navigator.clipboard.writeText, with the target case name surfaced in the toast confirmation. Download saves as plain .txt or Markdown .md for paste-into-docs flows.

    Everything runs locally — open DevTools → Network to confirm zero outbound requests.

    clipboard.txt.mdprivacy-first
    export2 formats
    ✓ Copied as snake_case
    ✓ Saved: cased.md
    ✓ 100% client-side
    ready to shipsuccess
Pro tips

Text-processing fundamentals worth knowing

Tokenise with Unicode classes

Use \p{L}\p{N} with the u flag so accents, ideographs, and emoji count properly.

Normalise line endings

Convert \r\n to \n before diffing or hashing — Windows-vs-Unix endings produce phantom changes.

Mind invisible characters

Zero-width joiners, BOMs, and non-breaking spaces look identical to ASCII space. Strip them before comparison or storage.

Stream don’t slurp

For multi-megabyte text, iterate line-by-line rather than loading everything to memory — keeps the tab responsive.

Choose collation deliberately

Default JS sort is code-point order, not human alphabetical. Use Intl.Collator for locale-aware sorting.

Re-run after normalisation

NFC vs NFD changes byte length but not visible glyphs. String.prototype.normalize() before counts and comparisons.

Use Cases

When to convert case

Anywhere naming conventions matter across language or framework boundaries.

JS → Python

JS uses camelCase, Python uses snake_case. Convert API field names cleanly.

Unicode-correct

Constants & env vars

Convert names to SCREAMING_SNAKE for env-var conventions.

diff-clean

URL slugs

Convert page titles to kebab-case for SEO-friendly URLs.

instant counts

Class names

PascalCase for React components, classes, types.

platform-aware

Tailwind / CSS

Kebab-case for class names that match CSS conventions.

code-point-accurate

Stakeholder titles

Title Case and Sentence case for headings and emails.

lossless
FAQ

Frequently asked questions

It splits on whitespace, hyphens, underscores, and dots; it also splits camelCase / PascalCase boundaries. The result is then re-joined per the target case.
Yes — case-folding uses JavaScript's standard String.toUpperCase / toLowerCase which respects basic Unicode.
Sequences like 'XMLHttpRequest' are split conservatively to keep acronyms readable (XML, Http, Request).
One line at a time for now — convert multiple by pasting them on separate lines (each line is treated as a string).
No. All processing runs locally.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!