kebab-case Converter
kebab-case writes a name in lowercase letters with a hyphen between words, as in main-navigation-menu. This converter turns plain words or names in another case, such as camelCase or snake_case, into kebab-case, splitting acronyms and dropping punctuation, with one name per line of input.
Universal Text Transformer
Skip to text inputInput
Type or paste text. The output updates as you type.
Output
The converted text appears here as you type.
Each line is converted as its own title, so you can paste a list of headlines.
kebab-case Converter examples
| Case | Input | Output |
|---|---|---|
| Words | Main Navigation Menu | main-navigation-menu |
| From camelCase | backgroundColor | background-color |
| Punctuation | How to Bake Bread! | how-to-bake-bread |
| From CONSTANT_CASE | MAX_WIDTH | max-width |
| Acronym | IOStream reader | io-stream-reader |
| One name per line | dry run
log level | dry-run
log-level |
kebab-case Converter rules
- Every letter is lowercase, and words are joined with one hyphen.
- Each line becomes one name, so you can convert a list in one pass. Blank lines are kept.
- Spaces, punctuation, symbols, emoji, and the separators of other cases (_ - . /) split words and are removed.
- A new word also starts where a lowercase letter or digit meets a capital (getUser is get and User) and at the end of a run of capitals (XMLHttp is XML and Http).
- Digits stay with the letters before them, so utf8 and h264 stay whole words. In a name written in capitals, a capital after a digit does not start a new word, so 2FA, MP3, and IPV6 stay whole words.
- Acronyms are treated as ordinary words (HTML becomes html or Html), so their capitals are not kept.
- An apostrophe inside a word is dropped (don't becomes dont). Accented letters and other alphabets are kept.
How kebab-case differs from snake_case
Both are lowercase. kebab-case joins words with hyphens (max-width) and snake_case with underscores (max_width). Most programming languages read a hyphen as a minus sign, so kebab-case names suit CSS, URLs, and files rather than variables. Try the same text in the snake_case Converter.
How to use
- 1
Type or paste your words, or names in another case, into the editor. Put each name on its own line.
- 2
The kebab-case version appears in the output as you type.
- 3
Copy the result into your code, configuration, or file name.
That's it! Your text is transformed and ready to use.
Three simple steps to use kebab-case Converter
When to use kebab-case Converter
CSS and HTML
Class names, custom properties, and attributes such as data-user-id. CSS property names are themselves kebab-case (background-color).
URLs and file names
Readable page slugs and file names without spaces or capital letters.
Command-line flags and packages
Long option names such as --dry-run, and npm package names, which cannot contain capital letters.
FAQ
Is kebab-case the same as a URL slug?
Close, but not identical. This converter keeps accented letters and other alphabets (café-menu). If your URLs must be plain ASCII, remove or replace those letters afterward.
Why can’t I use kebab-case for variable names?
Most languages, including JavaScript, Python, and Java, read user-id as user minus id. Use camelCase or snake_case for variables.
Can I convert many names at once?
Yes. Put each name on its own line. Every line converts to one name, and blank lines stay where they are.
Is my text uploaded anywhere?
The conversion runs in your browser, so your text is not uploaded to a server to be converted.