ToolsForWeb

Saved

Tap ☆ on any tool to keep it here.

toolsforweb

Case Converter

Convert text between camelCase, snake_case, kebab-case, Title Case and more.

Runs in your browser — nothing is uploaded

Loading tool…

Results are provided as is, for general information. Check anything important before relying on it. See the Terms of Use.

About this tool

Re-case text between twelve styles: lower, UPPER, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, Train-Case and aLtErNaTiNg. For the identifier styles the input is split into words on whitespace, underscores, hyphens, dots, slashes and camelCase boundaries (so getHTTPResponse becomes get, HTTP, response), then rejoined in the target style. Title and Sentence keep the original delimiters and only change which letters are capital. Multi-line input is converted line by line and the line breaks are kept. Unicode letters are preserved — cafe stays cafe with its accent; strip accents with the Slugify tool if you need ASCII.

When to use it

Renaming a variable, constant or CSS class to match a codebase's convention.
Turning a human title into a snake_case or kebab-case key for config or a database column.
Normalising a column of headings or labels to consistent Title or Sentence case.
Converting an identifier pasted from one language's style to another's.

Questions

How does Title case differ from PascalCase here?

Title case keeps your spaces and punctuation and only capitalises the first letter of each word, so 'hello world-example' becomes 'Hello World-Example'. PascalCase discards the delimiters entirely and concatenates the capitalised words into 'HelloWorldExample'.

Why is the accent still there after converting to kebab-case?

The converter changes case and word separators only; it never transliterates. 'Café Data' becomes 'café-data', accent intact. If you need a plain-ASCII, URL-safe string, use the Slugify tool, which removes diacritics.

How are acronyms split?

A run of capitals followed by a capitalised word is treated as a boundary: XMLHttpRequest splits into XML, Http, Request, and getHTTPResponseCode into get, HTTP, response, code. The acronym letters are lowercased along with everything else for the identifier styles.

What does alternating case do with spaces and punctuation?

It toggles between lower and upper on each letter only, skipping non-letters in the count, so the rhythm continues across spaces and dashes: 'hello world' becomes 'hElLo WoRlD'.

Why did my acronym get lowercased in snake_case?

The identifier styles split on camelCase and acronym boundaries — 'getHTTPResponseCode' becomes get, HTTP, response, code — then lowercase every word before rejoining: get_http_response_code. That is the standard convention for identifier styles; capitals inside snake_case are generally unwanted. CONSTANT_CASE is the style that wants capitals, and Title and Sentence preserve capitals inside the words they touch.

How does Sentence case treat several sentences?

It capitalizes the very start of the line and after each sentence-ending punctuation (. ! ? …) — so a full paragraph in gives you every sentence capitalized, not just the first. It deliberately does not un-capitalize interior words: 'iPhone' stays 'iPhone' and proper nouns keep their capitals, because a mechanical rule that decided those would mangle them. Turning genuine ALL-CAPS shouting down is a manual edit — a safe one to make from the UPPER output.

Does it work on accented and non-Latin text?

Accented Latin letters re-case with their accents intact — 'café' becomes 'CAFÉ' — because the tool maps case, it never transliterates. Scripts with case (Latin, Greek, Cyrillic) convert normally; scripts without it (Chinese, Arabic, Hebrew) pass their letters through untouched, and the delimiter-based identifier styles still split words around them. For an ASCII-only result, the Slugify tool is the companion that removes the accents.

Which style suits a URL, a variable, a filename?

Kebab-case for URLs (search engines treat hyphens as word separators; underscores do not split the same way), snake_case for Python/Ruby/database identifiers, camelCase for JavaScript and Java variables, PascalCase for classes and types, CONSTANT_CASE for true constants. The tool's job is not to choose for you — it is to put every convention one paste away, with the acronym-splitting rules that make each output idiomatic.

What does alternating case do with digits and accents?

Non-letters are skipped in the toggle, so the lower/upper rhythm continues across them: 'hello world' becomes 'hElLo WoRlD', with the space consuming no turn. Digits and symbols pass through unchanged, and accented letters alternate correctly because each maps case individually. It is the one style whose output is display-only — never a valid identifier anywhere.

Why does multi-line input keep its structure?

Every line is converted independently and the line breaks survive — so a block of enum names or labels can be normalized in one pass without collapsing into one blob. That also means the identifier styles treat each line as its own name, which is exactly what you want for a column of constants pasted out of legacy code.

Related tools