Skip to content
TEXT TOOL

Case converter — 12 styles live in your browser

Type some text — every one of twelve cases appears below in real time, with proper AP/Chicago title case and smart acronym tokenisation.

Converted in your browser · no upload · no cookies

Characters 0 Words 0 Lines 0
Settings
German Sharp S

Modern: capital ß as ẞ — the spelling officially adopted in 2017. Classic: capital-letter rendering with double SS. The Maße/Masse distinction only survives with ẞ.

Acronyms in programmer cases

These acronyms are treated as a single word by the tokenizer. Common acronyms (API, URL, HTML, …) are already preset.

Results

Type something above and every case appears here.

How It Works

  1. 01

    Paste text or code

    Paste your content into the input field or type directly.

  2. 02

    Instant processing

    The tool processes your content immediately and shows the result.

  3. 03

    Copy result

    Copy the result to your clipboard with one click.

Privacy

All calculations run directly in your browser. No data is sent to any server.

Online case converters are everywhere — and most of them get one detail wrong: they treat 'XMLHttpRequest' the same as 'xmlhttprequest' and produce 'x_m_l_h_t_t_p_r_e_q_u_e_s_t' in snake_case. This converter detects acronym runs, lets you switch between modern (Google) and legacy (Microsoft) tokeniser conventions, and ships a built-in [AP/Chicago title-case rule set](https://en.wikipedia.org/wiki/Title_case). Everything runs in your browser — no upload, no cookies, no tracking.

01 — How to Use

How do you use this tool?

  1. Type or paste your text into the large input field — every case below updates live.
  2. Pick the acronym mode that matches your codebase: Modern (Google) keeps XML as one token, Legacy (Microsoft) splits every uppercase letter.
  3. Optionally add your own acronyms (e.g. "NASA, FBI, AWS, S3") — the tokeniser treats them as a single word.

What makes a good case converter in 2026?

A case converter looks trivial: toUpperCase() and toLowerCase() are one-line operations in every scripting language. That triviality is also the trap most online converters fall into — they ignore three details that matter in real-world writing and coding. The German sharp S is treated as a quaint exception, title case is implemented as “capitalise every word” (which is wrong for headlines), and identifiers like XMLHttpRequest are shredded into single-letter tokens because the tokeniser doesn’t recognise acronyms.

This converter fixes all three. The German ẞ Versaleszett is the default upper-case rendering of ß per the German Council for Orthography’s 2017 revision; a switch reverts to the classic SS for historical text. Title case follows the Chicago Manual of Style hybrid rule: short words (≤3 letters that are prepositions, plus articles and FANBOYS conjunctions) stay lowercase, everything else gets capitalised, and first and last words are always capitalised regardless. The acronym tokeniser detects runs of uppercase letters and splits before the last one when a lowercase letter follows, so XMLHttpRequest correctly resolves to XML, Http, Request instead of getting split into eleven single letters.

Which cases are supported?

Fourteen cases, in two groups. Eight standard cases: UPPERCASE, lowercase, Sentence case (first letter of every sentence capitalised, rest lowercase), Capitalised Case (first letter of every word capitalised), AP/Chicago Title Case (English), Duden Title Case (German), aLtErNaTiNg case (every other letter capitalised, an internet classic), and InVeRsE case (every letter’s case flipped individually).

Six programmer cases share a common tokeniser: camelCase (first word lower, the rest capitalised, no separator), PascalCase (every word capitalised, no separator), snake_case (lowercase words joined by underscores), kebab-case (lowercase words joined by hyphens), CONSTANT_CASE (uppercase words joined by underscores), and dot.case (lowercase words joined by periods). All six render at once from the same input, so you can copy whichever variant your destination needs.

How does title case work?

The English title-case logic follows a hybrid AP / Chicago rule. The built-in small-words list contains: articles (a, an, the), coordinating conjunctions FANBOYS (for, and, nor, but, or, yet, so), and short prepositions of three letters or fewer (in, on, at, by, to, of, as, up, via). The first and last word of every line are always capitalised — even if they appear on the small-words list. Every other word starts with a capital letter.

Long prepositions like ‘over’ (four letters), ‘with’ (four), ‘from’ (four), ‘into’ (four), ‘after’ (five) are capitalised under Chicago. The AP Stylebook lowercases them regardless of length, but Chicago is the dominant style in 2026 (NYT, Atlantic, Wikipedia all follow it), so it is the default here. If your house style demands strict AP, you can lowercase the long-preposition results manually after copying.

A German title-case mode runs in parallel. German rules are different — nouns are always capitalised in German prose, so a “capitalise every word” approach actually produces extra noise. The Duden mode keeps nouns capitalised but lowercases articles (der, die, das, ein, eine), short prepositions (in, an, auf, mit, von, zu, für, bei) and conjunctions (und, oder, aber, dass, wenn, weil) inside the title. The first word is always capitalised.

How does the acronym tokeniser work?

Modern style guides (Google, Apple, Mozilla) treat a run of uppercase letters in an identifier as a single acronym. XMLHttpRequest reads as three tokens: XML + Http + Request. The tokeniser detects the end of the acronym run by looking for a lowercase letter — when one appears, the LAST uppercase letter before it starts a new token. So XMLHttpRequest becomes XML | Http | Request, three tokens, exactly as a human would read it.

Legacy code (Microsoft Foundation Classes from the late 1990s, early .NET BCL) used the opposite convention: every uppercase letter starts a new token. XMLHttpRequest becomes X | M | L | Http | Request, five tokens. This converter ships both modes so you can refactor old code (legacy mode) or generate new identifiers (modern mode) without guessing.

A whitelist of recognised acronyms makes the tokeniser more accurate. API, URL, HTML, CSS, SQL, SVG, PDF, JSON and about thirty other standard acronyms are preset. You can add your own (NASA, FBI, AWS, S3, OAuth2) via the textarea — comma-separated, case-insensitive. User-supplied acronyms merge with the defaults; nothing is removed.

Why a ẞ toggle?

German has long had a typographic asymmetry: ß is a lowercase letter, but until 2017 there was no widely-accepted uppercase counterpart. The convention was to expand ß to SS in upper-case rendering — so ‘Maße’ (measurements) and ‘Masse’ (mass) both became ‘MASSE’ in headlines, losing the distinction. In 2017 the German Council for Orthography adopted ẞ (capital sharp S, codepoint U+1E9E) as an official letter and recommended it as the primary upper-case rendering. Modern browsers (Chromium 89+, Safari 16+, Firefox 128+) and Unicode-aware applications now produce ẞ by default; older systems still produce SS.

This converter ships both. The default is the modern ẞ rendering (‘Maße’ → ‘MAẞE’). A switch reverts to classic SS for historical reproduction or older display contexts. The lowercase direction is symmetric — ẞ goes back to ß cleanly.

What is deliberately NOT in scope?

Three jobs sit outside the scope on purpose. First: no headline scoring, no AI-title-rewriter, no email-subject optimiser. If you want a different title, write a different title — the converter changes case, not content. Second: no file upload for .txt or .docx. If you have a Word file open, copy the text in and copy the result out. Third: no SpongeBob case, no random case, no mocking case. The alternating case is included because it is the original internet meme; everything beyond that is novelty without utility.

These gaps are deliberate. They keep the converter fast, lightweight and private. Each of these features would require either a server round-trip, a megabyte-scale library in the browser, or a cookie for cloud sign-in — and that would not be the same tab you are working in now.

What happens with very long text?

The converter is written so that a few hundred thousand characters process in the browser without perceptible delay. Each of the fourteen case conversions runs in linear time over the input; the shared tokeniser is a single pass with constant per-character memory. Tweets, emails, blog posts and even chapter-length text appear instantly across all fourteen result cards.

For very long text (north of a hundred thousand characters) you may feel a small amount of input lag on phones, but it disappears in milliseconds. There is no artificial upper bound — the browser itself is the limiting factor. If your input overwhelms the browser tab, it would overwhelm any other converter too.

When do programmers use each case?

camelCase is the JavaScript / TypeScript / Java standard for variable, function and method names: userName, getElementById. PascalCase is used for classes, components and type names — also the default in C# and Go (for exported symbols) and React (for components): UserAccount, ButtonGroup. snake_case is the Python / Rust / Ruby standard for variables and functions: user_name, get_element_by_id; it also dominates in PostgreSQL column names and many configuration files. kebab-case is the standard for URLs (/user-profiles), CSS class names (btn-primary), Linux package names (docker-compose) and HTML custom-element tag names (<my-widget>). CONSTANT_CASE is universal for constants in every language and for environment variables (API_KEY). dot.case appears in i18n keys (hero.title.main), version strings and some config systems.

In a polyglot stack, the same identifier often lives in four different cases across four code layers — userId in JavaScript, user_id in the database, user-id in the URL, USER_ID as an env-var. A converter that produces all four at once removes the manual translation step.

What about privacy?

Your text stays in browser memory. There is no localStorage persistence, no cookies, no analytics, no server round-trip. The tab works offline once the page has loaded. The ‘Copy’ buttons next to each case use the Clipboard API and write text straight to your clipboard — no network call.

From a GDPR perspective the converter processes no personal data in the sense of Article 4 because processing happens locally on your device. Even if you paste sensitive content (email drafts, legal filings, confidential notes), the text remains in the tab. Closing the tab discards everything. That architecture is deliberate — it is the reason this converter is also usable in enterprise environments with strict data-protection rules.

Last updated:

You might also like