Polyatic Text Case Converter

Text Case Converter

Type or paste text on the left and get it live in eleven cases on the right — UPPERCASE, Title Case, camelCase, snake_case, kebab-case and more. Copy any one with a click. Nothing is uploaded.

Your text0 words · 0 characters

Runs entirely in your browser — your text never leaves your device. Every case is computed on your own machine with JavaScript's built-in toLocaleUpperCase/toLocaleLowerCase and a small script you can read; there are no network requests and no analytics on this tool.

Every common case, computed as you type

Paste any text — a heading, a variable name, a whole paragraph — and this tool rewrites it into eleven casing styles at once, updating on every keystroke with no button to press. Each result has its own Copy button so you grab exactly the one you need. The word and character count above the box updates live too, counting by Unicode code point, so an emoji or an accented letter counts as one character rather than the two or four bytes it occupies.

Worked example: one phrase, every case

Feed the tool the developer-flavoured phrase parse HTML string and here is exactly what comes back:

input parse HTML string UPPERCASE PARSE HTML STRING lowercase parse html string Title Case Parse Html String Sentence Parse html string camelCase parseHtmlString PascalCase ParseHtmlString snake_case parse_html_string kebab-case parse-html-string CONSTANT PARSE_HTML_STRING dot.case parse.html.string

Notice how the all-caps acronym HTML becomes Html or html everywhere except UPPERCASE — the tool treats it as one ordinary word and normalises its capitals, matching the Google and Microsoft naming guides. That is deliberate, not a bug; see the limits below if you need acronyms kept intact.

The two families of case

Case-only transforms — UPPERCASE, lowercase, Title Case, Sentence case and aLtErNaTiNg cAsE — keep your spaces and punctuation and only change which letters are capital. Identifier transforms — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE and dot.case — first break the text into words, discard the original separators, and rejoin the words with a single fixed one. That is why UPPERCASE preserves your sentence intact while snake_case collapses Hello World! into hello_world, dropping the space and the exclamation mark.

How words are detected

For the identifier cases the text is split on whitespace, hyphens, underscores and other punctuation, and on camelCase boundaries — the point where a lower-case letter or digit meets a capital, and where an ACRONYM run meets a following Word. So getHTTPResponse is read as the three words get, HTTP, Response: the acronym is kept whole rather than shattered letter by letter, then normalised to give getHttpResponse or get_http_response. Because it understands existing boundaries, you can feed the tool text that is already camelCase or kebab-case and convert cleanly from one identifier style to another.

Naming convention by language

Which style a target expects depends on the language and on what you are naming. This table is the quick reference; copy whichever row matches:

StyleExampleWhere it is the norm
camelCaseuserProfileNameJS/Java/Kotlin/Swift variables & methods
PascalCaseUserProfileNameClasses & types; Go exported names; React components
snake_caseuser_profile_namePython, Ruby, Rust functions; SQL columns
kebab-caseuser-profile-nameCSS classes, URLs, npm packages, filenames
CONSTANT_CASEUSER_PROFILE_NAMEConstants, enum members, env variables
dot.caseuser.profile.nameConfig keys, namespaced properties

Unicode is handled properly

Casing uses toLocaleUpperCase and toLocaleLowerCase, so accented and non-Latin letters fold as your locale expects: café uppercases to CAFÉ, German ß expands to SS, and Greek or Cyrillic converts correctly instead of being left untouched. Word splitting iterates by code point, so letters built from surrogate pairs (astral scripts, some emoji) are never cut in half.

Honest limits

Title Case here is mechanical: it capitalises every word, so it does not follow the editorial rule of leaving short words like "of", "a" and "the" lowercase — run the lord of the rings and you get The Lord Of The Rings; fix the small words by hand for AP or Chicago style. Sentence case capitalises only after ., ! and ?, so it will not re-capitalise proper nouns (the CEO met Dana lowercases CEO and Dana) and it wrongly treats the period in "e.g." as a sentence end. Casing is also locale-sensitive: in a Turkish locale a lowercase i uppercases to a dotted İ, which is correct Turkish but surprising if you expected ASCII I. The identifier cases intentionally drop punctuation, so don't becomes dont — they turn a phrase into one valid name, not round-trip prose.

Common mistakes

Expecting editorial Title Case. This is word-by-word capitalisation, not a style guide — it will not lowercase articles and prepositions for you. Feeding prose to an identifier case. snake_case and friends strip apostrophes and punctuation, so a sentence turns into one long underscore-joined blob; they are for names, not paragraphs. Assuming acronyms survive. HTML becomes Html in camel/Pascal — check any code that relies on all-caps initialisms. Relying on Sentence case for proper nouns. It only knows sentence boundaries, so re-capitalise names yourself. Ignoring locale. If output must be ASCII-only, verify the Turkish-I and German-ß cases rather than assuming a plain uppercase.