Convert text to upper, lower and sentence case

Paste text, choose one of seven case styles, then copy or download the result. Upper, lower, title and sentence styles keep Vietnamese accents; identifier styles remove them.

Paste text and choose a case style

Processed in your browser · saves drafts when allowed Ready
Result

Convert text in three steps

01

Enter text

Type or paste text into Input text. Use sample shows a Vietnamese example with mixed capitalization.

Choose a style for your intended output

The first four styles format prose; the last three create a compact identifier. The examples below use the same input, “Đổi chữ hoa”.

StyleExample outputUse when
UPPERCASEĐỔI CHỮ HOAEvery letter should be uppercase.
lowercaseđổi chữ hoaYou need to normalize mixed capitals to lowercase.
Title CaseĐổi Chữ HoaYou want every word to start with a capital; review your title style guide afterward.
Sentence caseĐổi chữ hoaYou want sentence starts capitalized in prose.
camelCasedoiChuHoaYou need an identifier without spaces.
snake_casedoi_chu_hoaYou need words joined by underscores.
kebab-casedoi-chu-hoaYou need words joined by hyphens.

Review the result before using it

Uppercase and title case
UPPERCASE and lowercase keep Vietnamese accents, punctuation and spacing. Title Case capitalizes every word, including words a style guide might keep lowercase; adjust any exceptions manually.
Sentence case and names
Sentence case lowercases the rest and capitalizes after a period, question mark or exclamation mark followed by whitespace. Proper names and acronyms such as “SEO” may change; review the paragraph.
Unaccented identifiers
camelCase, snake_case and kebab-case remove Vietnamese accents, map “đ” to “d” and remove punctuation. They split words at spaces or separators; an existing “helloWorld” becomes “helloworld”. Choose one of the four prose styles if accents must stay.

Where is your text saved?

Case conversion runs in your browser; input text is not sent to an KitoTool conversion API. When local storage is available, the page saves your draft and selected style so you can continue after a reload. On a shared device, select Clear when finished. A TXT file is created only when you choose Download TXT.

Comments & feedback

Rate this tool

Loading ratings…

Write a commentNo account needed

Do not share passwords, sensitive information or the contents of files you are processing.

Reviewed before posting. Email stays private.

Embed this tool on your websiteFree · Copy once, receive tool updates automatically

Paste the iframe into HTML, WordPress or any platform that supports embeds. The tool runs in the visitor’s browser; adjust its height and theme as needed.

View the embed guide and supported platforms →

<div style="max-width:900px">
  <iframe data-kitotool-embed src="https://kitotool.com/embed/en/case-converter/" title="Case Converter — KitoTool" width="100%" height="880" style="display:block;width:100%;border:1px solid #dbe3ee;border-radius:12px" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
  <p style="margin:6px 2px 0;text-align:right;font:12px/1.5 system-ui,sans-serif;color:#64748b">Free tool by <a href="https://kitotool.com/en/case-converter/" target="_blank" rel="nofollow noopener noreferrer" style="color:#2359d4;text-decoration:underline">KitoTool</a></p>
</div>

The code includes a visible credit below the iframe; its link uses nofollow for a widely distributed widget.

Optional: automatically resize the iframe

Add this script once to the page containing the iframe.

<script>
(function(){var origin="https://kitotool.com";function frames(){return document.querySelectorAll("iframe[data-kitotool-embed]")}function measure(f){if(f.contentWindow&&new URL(f.src).origin===origin)f.contentWindow.postMessage({type:"kitotool:measure"},origin)}window.addEventListener("message",function(e){if(e.origin!==origin||!e.data||e.data.type!=="kitotool:resize"||!Number.isFinite(e.data.height))return;frames().forEach(function(f){if(f.contentWindow===e.source&&new URL(f.src).origin===origin)f.style.height=Math.max(320,Math.min(12000,Math.ceil(e.data.height)))+"px";});});function connect(){frames().forEach(function(f){f.addEventListener("load",function(){measure(f)});measure(f)})}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",connect,{once:true});else connect()})();
</script>