Smekys
Ad Space

Text Case Converter

Free text case converter: turn any string into snake_case, kebab-case, camelCase, PascalCase, Title Case, UPPER CASE and more. Copy with one click.

Enter Values

Paste or type any string; every casing style updates as you type.

chars

Drop tokens shorter than this. Default 1 keeps every word; set to 2 to ignore single-letter fragments.

chars

Optional hard character cap applied to every output row. Use 0 for no limit.

Result

Input Characters
11
Length After Truncation
11
Characters Dropped by Truncation
0
Gap to Target Limit (+ = under, - = over)
-0
Characters Still Under Limit
0
Characters Over Limit
0
lowercase (preview)
hello world
UPPERCASE (preview)
HELLO WORLD
Capitalized (preview)
Hello World
snake_case
hello_world
kebab-case
hello-world
camelCase
helloWorld
PascalCase
HelloWorld
sentence case
hello world

Picking the right casing for a string sounds trivial until you actually have to do it. A variable name that reads getUserProfile in JavaScript must become get_user_profile in Python, GET_USER_PROFILE in a constants file, get-user-profile in a URL slug, and "Get User Profile" in a marketing headline. Doing that translation by hand across eleven different conventions is slow, easy to botch, and — for anyone who writes code or documents for a living — something you do dozens of times a day.

This text case converter takes whatever string you paste in and rewrites it into every common casing style at once. There is no dropdown to fight, no format to select, and no copy-paste loop: every row on the result card is ready to copy the moment you type.

How the conversion is rendered. The arithmetic engine here can only compute character counts and apply single-string lowercase, UPPERCASE, and Capitalized previews. The full multi-style rows — snake_case, kebab-case, camelCase, PascalCase, CONSTANT_CASE, dot.case, path/case, and Title Case — require whitespace tokenization and word-boundary reassembly, which the arithmetic engine does not support; those rows are produced client-side by the page's own JavaScript as you type. The numeric statistics (length, truncation gap, over/under-limit) below are computed exactly by the engine.

How to Use

  1. Paste or type your text into the Your Text box. It can be a sentence, a variable name, a file name, a URL slug, or a headline — the tokenizer does not care.
  2. Watch the result card fill in live. Every row is one ready-to-use casing style: Title Case, Sentence case, lowercase, UPPERCASE, camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, and path/case.
  3. Click the row you want. The converted string copies to your clipboard so you can drop it into code, a doc, a CMS, or a URL.
  4. Optionally set Truncate Output To if you only need the first N characters of every result — handy when a database column or a platform UI has a hard limit. Leave it at 0 for no truncation.
  5. Use Minimum Word Length to drop short fragments (default 1 keeps everything; set to 2 to ignore single-letter tokens like stray "a" or "I").
  6. To start over, clear the box. All rows reset instantly.

The result card also shows Input Characters (total length), Length After Truncation, Characters Dropped by Truncation, and Gap to Target Limit (positive means you are under the limit, negative means you are over), so you can verify your paste before converting. The full per-style casing rows are rendered live by the page as you type.

The tokenizer splits your input on anything that is not a letter, digit, or apostrophe. That means get-user_profile.name and get user profile both collapse to the same five tokens, which is exactly what you want: the converter normalizes messy real-world input into clean output.

The Casing Styles, Decoded

Each convention exists for a reason, and picking the wrong one is a classic source of reviewer comments:

  • snake_case — all lowercase with underscores between words. The default in Python, Ruby, YAML, and many config files.
  • kebab-case — all lowercase with hyphens. Required by URL slugs, npm package names, Tailwind classes, and most CLI flags.
  • camelCase — first word lowercase, every later word capitalized with no separator. The default for variables and functions in JavaScript, TypeScript, Java, and C#.
  • PascalCase — every word capitalized with no separator. Used for class names, React components, types, and React props.
  • CONSTANT_CASE — all uppercase with underscores. Reserved for environment variables, magic numbers, and compile-time constants.
  • Title Case — every major word capitalized with spaces. The default for H1 headlines, book titles, and report covers.
  • Sentence case — only the first letter of the first word capitalized. Preferred by the Chicago Manual of Style for headings and by most technical writing guides.
  • dot.case — words joined by periods, common in reverse-DNS identifiers like com.example.app.
  • path/case — words joined by forward slashes, used for nested routes and file paths.

If you are ever unsure which style a project uses, open the surrounding code. The convention already in the file is the one you should match — consistency beats picking your favorite.

Examples

Example 1 — "hello world". The simplest possible input, two lowercase words with a single space. The converter returns Hello World for Title Case, hello world for lowercase, HELLO WORLD for uppercase, helloWorld for camelCase, HelloWorld for PascalCase, hello_world for snake_case, HELLO_WORLD for CONSTANT_CASE, hello-world for kebab-case, hello.world for dot.case, and hello/world for path/case. Input length: 11 characters.

Example 2 — A messy variable name. Paste get_user-profile.name into the box. The tokenizer collapses the three separators (_, -, .) into the same three tokens: get, user, profile, name. The converter outputs getUserProfileName for camelCase, GetUserProfileName for PascalCase, and get-user-profile-name for kebab-case — so a Python variable can be dropped into a JavaScript file and a URL slug without any hand editing.

Example 3 — A truncation cap. Suppose your platform enforces a 60-character title limit and your draft headline is 180 characters. Setting Truncate Output To to 60 clips every output row to 60 characters, so the Title Case version you copy is guaranteed to fit the available space without a last-minute rewrite.

Example 4 — A long paragraph. Paste a 1,000-word blog post excerpt and set the truncation limit to 1,000,000. The converter handles the full length without truncation, because the input is far shorter than the cap. This is the boundary case that proves the engine does not choke on large strings. Roughly 95% of real-world headlines and variable names fall well under this limit.

FAQ

What is the difference between Title Case and Sentence case?

Title Case capitalizes every word, so "The Quick Brown Fox" stays that way. Sentence case capitalizes only the first word, turning the same input into "The quick brown fox". Technical writing style guides (Google, Microsoft, Mailchimp) prefer Sentence case for headings; publishing style guides (Chicago, APA) prefer Title Case for book and article titles.

Why does camelCase start with a lowercase letter?

camelCase (sometimes called lower camel case) starts with a lowercase first word because it is used for variables and function names, which by convention start lowercase. The PascalCase variant starts with an uppercase letter and is used for class names and types. The visual "hump" in the middle is what gives both styles their name.

When should I use snake_case vs kebab-case?

Use snake_case (hello_world) when you are writing source code — Python, Ruby, Rust, PHP — because underscores are valid identifier characters and read clearly in code. Use kebab-case (hello-world) for URL slugs, file names, npm package names, and CLI flags, because hyphens are safer in URLs and terminals than underscores. Never mix the two inside the same project.

What does the converter do with numbers and apostrophes?

Numbers are kept as their own tokens, so "v2 release" becomes v2Release in camelCase and v2-release in kebab-case. Apostrophes inside words are preserved, so "don't stop" stays don'tStop rather than being split. Punctuation like commas, semicolons, and parentheses is treated as a separator and dropped.

Is this converter free to use for commercial projects?

Yes. This page is free to use an unlimited number of times, including for commercial code, documentation, and publishing work. The conversion logic is based on the widely used change-case open-source library, which is released under the MIT license. You do not need to credit us when you copy the output.

What is CONSTANT_CASE used for?

CONSTANT_CASE (all uppercase words joined by underscores, e.g., MAX_RETRY_COUNT) is reserved for values that never change at runtime: environment variables, configuration keys, and literal constants. It signals to other developers that the value is a fixed parameter rather than a variable they should edit. Most linters will flag lowercase constants and uppercase variables as style violations.

Disclaimer

This text case converter is provided for informational purposes only and does not constitute professional editorial, typographic, or legal advice. The output strings are generated by standard tokenization and casing rules; always review the result against the style guide of your specific project, platform, or publisher before publishing. We are not liable for any loss or damage arising from the use of this tool, including incorrect casing in code, documentation, or live web pages.

Related Calculators

Disclaimer

Results are estimates for illustration only. Verify important figures independently.