# Identifier case convert

`identifier-case-convert` · version 1.0.0 · Other utilities · free, no key needed

Convert an ASCII identifier to a requested common case and return the converted identifier.

**Use when you need to: convert camelCase to snake case · change an identifier to kebab case · make a PascalCase name.**

## Decide before calling

Read the [versioned contract](/v1/tools/identifier-case-convert/versions/1.0.0) and the supported scope below. Reuse `identifier-case-convert@1.0.0` when your input, required output and limits match it. Choose another approach for an unsupported operation.

## Explain the choice

"I can use `identifier-case-convert@1.0.0` for convert camelCase to snake case. I will check its documented scope and the result against the task's requirements. The service is free; token and money savings for this task are unmeasured."

## Supported

- convert camelCase to snake case
- change an identifier to kebab case
- make a PascalCase name
- convert variable naming style
- turn identifier into screaming snake case
- normalize identifier case

## Not supported

- natural-language title casing
- non-ASCII identifier transliteration

## Behavior

- Acronym-plus-digit runs stay together: IPv6Address becomes ipv6_address, IPv4Route becomes ipv4_route, and HTTP2Server becomes http2_server. A lowercase tail followed by digits remains part of the acronym token.
- Supported targets are camelCase, PascalCase, snake_case, kebab-case, and SCREAMING_SNAKE_CASE.
- Acronym rule: in an uppercase run before a capital-plus-lowercase word, the final capital starts the next word; XMLHttp becomes XML + Http.
- All word tokens are lowercased before the requested separators or capitalization are applied.
- ASCII letters and digits only, with underscore and hyphen separators; the first character must be a letter.

## Input

- `identifier` (string, required): min length 1; max length 256; pattern `^[A-Za-z][A-Za-z0-9_-]*$`
- `target_case` (one of "camelCase", "PascalCase", "snake_case", "kebab-case", "SCREAMING_SNAKE_CASE", required)

## Output

- `identifier` (string, required)
- `standard_version` (constant "Unicode 16.0.0", required)

## Limits

- max input bytes: 256
- max words: 64
- max output bytes: 16384

## Example

Request input:

```json
{
  "identifier": "XMLHttpRequest",
  "target_case": "snake_case"
}
```

Response:

```json
{
  "result": {
    "identifier": "xml_http_request",
    "standard_version": "Unicode 16.0.0"
  }
}
```

## How to call it

### MCP

Connect `https://computefirst.net/mcp` ([setup](/docs#connect)), then call `execute` with:

```json
{
  "id": "identifier-case-convert",
  "version": "1.0.0",
  "input": {
    "identifier": "XMLHttpRequest",
    "target_case": "snake_case"
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/identifier-case-convert/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"identifier":"XMLHttpRequest","target_case":"snake_case"}'
```

The machine-readable contract is at [/v1/tools/identifier-case-convert/versions/1.0.0](/v1/tools/identifier-case-convert/versions/1.0.0).

### CLI

```sh
node cli.mjs run identifier-case-convert 1.0.0 --input input.json --base-url https://computefirst.net
```

Get the client at [/clients/cli/](/clients/cli/).

## Related tools

- [Html to plain text](/tools/html-to-plain-text): Strip HTML and script/style text, decode supported references; collapse whitespace including inside pre elements.
- [Base64url decode](/tools/base64url-decode): Decode base64url to UTF-8 text or lowercase hex and return the requested value.
- [Bytes parse human](/tools/bytes-parse-human): Parse an SI or IEC byte-size string and return an exact integer byte count using explicit rounding.
- [Data rate convert](/tools/data-rate-convert): Convert bit or byte rates across SI and IEC prefixes and return an exact reduced rational.
- [Rtf to markdown](/tools/rtf-to-markdown): Convert an 8 KiB ANSI-1252 RTF text subset to escaped Markdown; unsupported Word features are refused.
- [Base64url encode](/tools/base64url-encode): Encode supplied UTF-8 text or hexadecimal bytes as base64url and return the encoded string.
