# Convert camel case to kebab case and vice versa

Switch a single identifier between camelCase and kebab-case.

Canonical: https://1loc.dev/string/convert-camel-case-to-kebab-case-and-vice-versa/
Version: 1.0.0
Runtime: JavaScript · Node.js 22 / modern browsers
Verification: Local fixtures; no external services
Updated: 2026-10-28

## Implementation

```javascript
function convertCase({ value, to }) { return to === 'kebab' ? value.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase() : value.replace(/-./g, match => match[1].toUpperCase()); }
```

## Input

```json
{
  "value": "deliveryStatus",
  "to": "kebab"
}
```

## Expected output

```json
"delivery-status"
```

## Edge case

Input:
```json
{
  "value": "delivery-status",
  "to": "camel"
}
```
Output:
```json
"deliveryStatus"
```

## Limits

- The original page offered two functions; here one takes the target as to: "kebab" or "camel".
- Acronyms such as "HTMLBody" become "htmlbody"; handle them separately.

The lab validates types and size before calling this function. Add equivalent validation at your own trust boundary.

## Source and license

Original: https://github.com/phuocng/1loc/blob/14b481cf60dff1620ab1bb99a43b1f68068cdd9b/contents/convert-camel-case-to-kebab-case-and-vice-versa.mdx
Author: Nguyen Huu Phuoc and original contributors
Contributors: See original repository history
Source commit: 14b481cf60dff1620ab1bb99a43b1f68068cdd9b
Copyright (c) 2020 phuoc-ng
License: MIT — https://1loc.dev/licenses/
Maintainer: Oveyon
Modifications: Combines the two original functions behind a to option. Original MDX retained as inert source evidence.
