Case converter

Drop a text file here

or just type below — .txt, .md, .csv

The browser cannot tell what language your text is in. For the letter i it matters.

Choose a case

Convert text to upper, lower, title, sentence, camel, Pascal, snake, kebab or constant case. Unlike a plain converter this one lets you pick the language, because uppercasing an i is not the same operation in Turkish as it is in English, and it tells you when a conversion changed the length of your text or cannot be turned back — which is what quietly breaks lookups and comparisons. Nothing is uploaded.

How to use it

  1. Type or paste your text, or drop a text file onto the box.
  2. If your text is Turkish, Azerbaijani, German, Greek or Lithuanian, pick the language — it changes the result.
  3. Click a case. The result appears below with a note on what the conversion cost you.
  4. Copy it, download it, or feed it back in as input to chain conversions.

Case is a language rule, not a character rule

Almost every case converter applies one mapping to every language, and for most text that is fine. For the letter i it is not, and Turkish is where it shows.

English has one i, whose capital is I. Turkish has two separate letters: a dotted i whose capital keeps the dot, İ, and a dotless ı whose capital is I. Apply the English rule to Turkish and you do not get a slightly odd capital — you get a different letter, and often a different word. The city is İstanbul, not Istanbul. Uppercase the Turkish word iş with the default mapping and you get IS, which is not a Turkish word at all.

The browser cannot work out the language from the text, because the same letters appear in many languages. That is why the setting is yours to choose rather than something we guess at. Azerbaijani follows the same i rules. Greek has a final sigma, ς, that only appears at the end of a word and behaves differently under case conversion. Lithuanian keeps accent marks above a dotted i where the default mapping removes the dot.

Uppercasing can make text longer

German ß has no single uppercase letter. Uppercase straße and you get STRASSE: six letters in, seven out. This is the correct behaviour, not a quirk of this page — but it breaks the assumption almost every piece of software makes, which is that changing case leaves the length alone.

That assumption is load-bearing in more places than it looks. A fixed-width database column, a character limit on a form, a name badge that has to fit, a filename length cap: all of them can be within budget before the conversion and over it afterwards. The page reports when the length changed, by how much, and which characters did it.

The part that quietly breaks lookups

A very common pattern is to uppercase a value before comparing or storing it, so that differences in capitalisation stop mattering. The trouble is that some conversions throw information away and cannot be reversed.

Take straße again. Uppercase gives STRASSE. Lowercase that and you get strasse, with an ordinary double s — the ß is gone permanently. Two genuinely different inputs, straße and strasse, have now collapsed into one value. If you were using that to look something up, the lookup either matches the wrong record or fails to match the right one, and nothing anywhere reports an error.

The same trap exists in Turkish text converted with the wrong language setting, and with the Greek final sigma. This page checks the round trip after every conversion and tells you when the text does not come back.

Round-trip warnings only appear for upper and lower case. The programming cases — camel, snake, kebab and constant — are structurally lossy by design: they discard spaces and punctuation, so of course they cannot be reversed. Flagging them as a loss would be noise.

Two kinds of title case

Ask for Title Case and there are two defensible answers, so this page offers both and names them.

Capitalise Every Word is mechanical: every word gets a capital, including and, of and the. It is what you usually want for product names, column headers and menu labels.

Title Case follows the convention style guides share: short function words stay lowercase unless they are the first or last word of the title. The Lord of the Rings, not The Lord Of The Rings. Guides disagree about the exact word list and about how long a word has to be before it gets capitalised, so treat this as the common core rather than as one particular guide's ruling.

Why getHTTPResponse is three words

Converting to camel or snake case means splitting text into words first, and that split is where converters go wrong. Most of them handle spaces and underscores and stop there, so an identifier that already uses camel case comes through as one long word and you get gethttpresponse.

This one also splits on the boundaries inside existing camel case, and keeps runs of capitals together so an acronym survives as a unit. getHTTPResponse is understood as get, HTTP, Response — which is what lets it come back out correctly in whichever style you asked for.

What it will not do

It does not trim whitespace you did not ask it to trim, normalise accents, straighten curly quotes or rewrite line endings. Tools that tidy up while converting are the reason people end up comparing two files that should be identical and finding differences they cannot explain. The only change here is the one you clicked.

Frequently asked questions

Why does the language setting change the result?

Because case is a language rule, not a character rule, and the most famous example is the letter i. In English, uppercase i is I. In Turkish there are two separate letters: a dotted i whose capital keeps the dot as İ, and a dotless ı whose capital is I. A converter with no language setting applies the English rule to everyone, so Turkish text comes out with the wrong letter — a real word becomes a different, wrong word. Pick the language and the correct mapping is used.

Why did my text get longer when I made it uppercase?

German ß has no single uppercase letter, so uppercasing it produces two characters: straße becomes STRASSE, six letters turning into seven. It is not a bug and it is not this page being clever — it is the standard mapping, and every correct converter does it. It matters because anything that assumed the length would stay the same, such as a fixed-width field or a character limit, now has a problem it will not report. The page tells you when the length changed and by how much.

What does “cannot be undone” mean here?

Some case conversions lose information permanently. Uppercase straße and you get STRASSE; lowercase that and you get strasse, with the ß gone for good. The same is true of the Greek final sigma and of Turkish text converted with the wrong language. This matters most when uppercasing is used to normalise values before comparing or storing them, because two different inputs can collapse into the same output and a lookup that should succeed will silently fail. The page checks the round trip and warns you when it does not come back.

What is the difference between title case and capitalising every word?

Capitalising every word is mechanical: every word gets a capital letter, including and, of and the. Title case as style guides define it keeps short function words lowercase unless they start or end the title. Neither is right in every situation — headlines usually want the style guide version, product names and column headers often want every word capitalised. This page offers both and names which is which, rather than picking one and calling it Title Case.

How does it handle camelCase and snake_case?

It first splits your text into words, and the splitting is the part most converters get wrong. It recognises spaces, hyphens, underscores and the boundaries inside existing camelCase, so getHTTPResponse is understood as three words rather than one. Acronym runs are kept together so you get getHttpResponse rather than getHTTPResponse or gethttpresponse, whichever the target style needs. Digits stay attached to the word they belong to.

Does it change my text in any other way?

No. It does not trim whitespace you did not ask it to trim, does not normalise accents, does not convert straight quotes to curly ones, and does not touch line endings. The only change is the one you clicked. If something else about the text looks different afterwards, that is a bug and worth telling us about.

Which languages have special rules here?

Turkish and Azerbaijani share the dotted and dotless i rules. German has the ß expansion. Greek has a final sigma that appears at the end of a word and changes when case is applied. Lithuanian keeps accents above a dotted i in ways the default mapping does not. These are the ones where a plain converter is measurably wrong; for everything else the default Unicode mapping is already correct and the language setting makes no difference.

Is my text uploaded?

No. The conversion happens inside your browser tab using the browser's own case mapping, so names, addresses, code and anything else you paste in never travel to a server. Disconnect from the network and the page keeps working.