Case Converter
Use the case converter below to switch any text between UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, and kebab-case. No signup, no upload — everything runs in your browser. Eight one-click conversions, live character/word/line counts, and copy-to-clipboard built in.
I built this case converter because every other one online either popped up a sign-up wall, sent the text to a server, or got camelCase wrong. This tool does none of that. It handles long documents, preserves your punctuation, and works offline once loaded.
Case Converter
Paste text, pick a case. Your input stays intact — the result appears in the output panel below. Eight conversions, live counts, one-click copy. Runs entirely in your browser.
Quick reference: when to use which case
- UPPERCASE / lowercase / Title Case / Sentence case — preserve spaces. Use for prose, headlines, body copy.
- camelCase / PascalCase — identifier formats. No spaces by definition (helloWorld, HelloWorld). Use for code variables, classes, components.
- snake_case — underscores instead of spaces. Use for Python variables, database columns, env vars.
- kebab-case — hyphens instead of spaces. Use for URL slugs, CSS classes, npm packages.
What each case means — and when to use it
Eight cases, eight different jobs. The case converter handles all of them, but knowing which one to pick is the bigger half of the problem. Here’s the practical breakdown.
| Case | Example | Where it belongs | Where it doesn’t |
|---|---|---|---|
| UPPERCASE | HELLO WORLD | Legal disclaimers, acronyms (NASA, HTML), short emphasis labels in dense UIs | Body text — reads as shouting and 13–20% slower than mixed case |
| lowercase | hello world | URLs, email addresses, file paths on Linux, hashtags | Anywhere proper nouns matter or when readability is the priority |
| Title Case | Hello World | Book and article titles, marketing headlines, conference talks (skip articles: a, the, of) | UI labels, buttons, body copy — modern style is sentence case |
| Sentence case | Hello world | UI labels, buttons, body copy, most product writing in 2026 | Headlines that need to feel formal or editorial |
| camelCase | helloWorld | JavaScript variables, JSON keys, instance methods, Java method names | Class names, file names, constants |
| PascalCase | HelloWorld | Class names, React/Vue components, type names, constructors | Variables, instance methods, normal function names |
| snake_case | hello_world | Python variables and functions, database columns, filenames on Linux, environment variables | JavaScript or Java identifiers (against convention) |
| kebab-case | hello-world | URL slugs, CSS classes, HTML attributes (data-foo), npm package names | Anything that becomes a programming identifier — the hyphens parse as subtraction |
How the case converter handles edge cases
Most online case converters fall apart on real-world text. The interesting work isn’t the simple ASCII transforms — it’s the edge cases that decide whether a tool is actually useful at scale. Here’s what this case converter does differently:
- Title Case skips small words by default. Articles (a, an, the), conjunctions (and, or, but), and short prepositions (of, in, at, to, for, by, with) stay lowercase — matching AP, Chicago, and most newsroom style guides. The first word always capitalizes regardless.
- camelCase and friends auto-detect word boundaries. Paste "hello-world" or "hello_world" or "helloWorld" or "hello world" — the converter splits all four correctly into ["hello","world"] before re-joining. Most tools only handle space-separated input.
- Sentence case respects punctuation. Periods, exclamation marks, and question marks all reset the next-word capitalization. Other punctuation (commas, colons, dashes) does not.
- Counts update in real time. Character count includes whitespace; word count uses whitespace splitting (so "don’t" is one word, not two); line count is newline-delimited.
- Copy-to-clipboard uses the modern Clipboard API with a graceful fallback to
document.execCommandfor older browsers and HTTP contexts.
Programming case conventions worth memorizing
If you write code, the case you pick is dictated by the language and the audience reading it. Mismatched conventions make a codebase look amateur regardless of the actual quality. Quick reference:
| Language / context | Variables | Functions | Classes / Types | Constants | Files |
|---|---|---|---|---|---|
| JavaScript / TypeScript | camelCase | camelCase | PascalCase | UPPER_SNAKE | kebab-case |
| Python | snake_case | snake_case | PascalCase | UPPER_SNAKE | snake_case |
| Java | camelCase | camelCase | PascalCase | UPPER_SNAKE | PascalCase.java |
| Go | camelCase / PascalCase* | camelCase / PascalCase* | PascalCase | PascalCase / camelCase* | snake_case |
| Rust | snake_case | snake_case | PascalCase | UPPER_SNAKE | snake_case |
| Ruby | snake_case | snake_case | PascalCase | UPPER_SNAKE | snake_case |
| PHP | camelCase / $snake | camelCase | PascalCase | UPPER_SNAKE | PascalCase.php |
| CSS | kebab-case | n/a | kebab-case | –kebab-case | kebab-case |
| SQL | snake_case | snake_case | PascalCase | UPPER_SNAKE | snake_case |
* Go uses PascalCase for exported (public) identifiers and camelCase for unexported (private) ones — the case literally controls visibility.
Common case conversion tasks — and the right shortcut
- Cleaning up SHOUTY emails or Slack messages. Paste, hit Sentence case. Done. Your reply doesn’t need to perpetuate the energy.
- Generating URL slugs from blog titles. Paste the title, hit kebab-case. The tool strips the case and joins with hyphens — same logic WordPress uses internally.
- Converting CSV column headers to database column names. Paste "First Name, Last Name, Email Address", hit snake_case — you’ll get the headers ready to use as PostgreSQL or MySQL columns.
- Renaming a JavaScript variable to a Python variable. Paste the camelCase identifier, hit snake_case —
userProfilebecomesuser_profile. - Building a React component name from a feature description. Paste "sticky checkout sidebar", hit PascalCase, get
StickyCheckoutSidebar. - Generating CSS custom property names from a design token list. Paste the token list, hit kebab-case, prefix with
--.
Other text and writing tools on this site
- Text to slug converter — same kebab-case logic but optimized for URL slugs with extra cleanup (Unicode normalization, stop word removal).
- PayPal fee calculator — a different kind of in-browser tool, but built with the same no-signup, no-upload philosophy.
- Compound interest calculator — for when the math gets serious.
Case converter FAQs
Is the case converter free?
Yes. The case converter runs entirely in your browser — no signup, no uploads, no usage limits. Your text never leaves your device.
Does the case converter work offline?
Once the page is loaded, all eight conversions run in JavaScript on your machine. You can disconnect from the internet and the tool keeps working until you close the tab.
Can I convert long documents?
Yes. The tool handles documents into the hundreds of thousands of characters without performance issues. Large legal, code, or transcript files convert in milliseconds.
What’s the difference between camelCase and PascalCase?
camelCase keeps the first letter lowercase (helloWorld), PascalCase capitalizes every word including the first (HelloWorld). camelCase is the JavaScript variable convention; PascalCase is the convention for classes, React components, and type names.
Why do my apostrophes and quotes change after conversion?
They don’t — the case converter preserves all punctuation, whitespace, and special characters exactly as you pasted them. Only alphabetical letters are transformed.
Does the case converter work with non-English characters?
Yes for the simple transforms (UPPERCASE, lowercase, Title Case, Sentence case) which use JavaScript’s built-in Unicode-aware methods. The programming-style transforms (camelCase, snake_case etc.) are designed for ASCII identifiers and may produce odd results on accented characters.