Skip to main content
Ink·tab

camel · snake · kebab · Pascal

Convert identifier names between every common style.

  • camelCasehelloWorldExample
  • PascalCaseHelloWorldExample
  • snake_casehello_world_example
  • kebab-casehello-world-example
  • CONSTANT_CASEHELLO_WORLD_EXAMPLE
  • Sentence caseHello world example
  • Title CaseHello World Example
  • UPPERCASEHELLOWORLD EXAMPLE
  • lowercasehelloworld example

Multiple lines are converted line by line. · Everything happens in your browser. Nothing is uploaded.

When to use it

When the same concept has to be spelled differently per language or tool — Swift wants camelCase, Python snake_case, CSS kebab-case, environment variables SHOUT_CASE. Seeing all nine conventions side by side cuts down on typos.

How it works

Type in the top field and every row below updates. Hit the Copy button on a row to grab just that style. Multi-line input is converted line by line.

Token boundaries

  • Split on _, -, and whitespace first
  • Split at camelCase / PascalCase boundaries (helloWorldhello World)
  • Split runs of capitals before a lowercase letter (HTTPServerHTTP Server)

So acronym-heavy identifiers like myXMLParser segment the way a human would read them.

Identifiers stay in the page

9 case styles (camel · Pascal · snake · kebab · CONSTANT · Title · Sentence · UPPER · lower) all use regex + replace. Identifiers don't leave the page.

Frequently asked questions

Which case conversions are supported?
camelCase · PascalCase · snake_case · kebab-case · CONSTANT_CASE · Title Case · Sentence case · UPPERCASE · lowercase — 9 total.
Can I convert multiple lines at once?
Yes. Processed line by line — handy for batches of variable names or column names. Empty lines are preserved.
How are Hangul and accented characters handled?
Hangul is left unchanged (not a target of case rules). Accented characters (`café`) go through NFC normalization, then through the ASCII option as configured.