ForHosting KIT · Developer Utilities

Lowercase the first letter of text online

Turn an initial capital into a lowercase letter without changing the rest of your text.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

This focused transformer is useful when a class name must become a camelCase variable, a heading must fit naturally into the middle of a sentence, or generated text needs one precise casing adjustment. It processes the first Unicode character and preserves all following characters exactly, including their capitalization, spacing, punctuation, and line breaks. The operation is deterministic, runs without a network request in the browser, and is also available for automated workflows through the API.

Change only the opening character

Paste or send the text that needs adjustment. The tool reads its first Unicode character, applies the standard lowercase mapping to that character, and joins it to the untouched remainder. For example, HelloWorld becomes helloWorld, while the capital W remains exactly as supplied. This narrow behavior matters when you do not want title case, sentence case, or a full lowercase conversion. Those broader operations can destroy intentional capitals in product names, acronyms, identifiers, and code. If the opening character is already lowercase, a number, whitespace, or punctuation, the visible text generally stays the same because there is no initial uppercase letter to change. The transformer does not trim the input, normalize whitespace, remove punctuation, or reinterpret words. A leading space remains a leading space, and the character after it is not treated as a replacement first character. This makes the result predictable for templates and programs that depend on exact character positions.

Use it for identifiers and generated fragments

A common use is converting a PascalCase label into the first step of a camelCase identifier. A generator may produce CustomerRecord from a schema or type name, while an application needs customerRecord for a variable or property. Lowercasing only the initial character preserves every later boundary, so embedded capitals continue to communicate the original word structure. The same rule helps with generated language. A reusable message fragment may be stored as Your account is ready because it can appear alone, but a template may insert it after an introductory clause and require your account is ready. This capability performs that surgical change without rewriting the fragment. It does not attempt grammar correction or detect whether a word is a proper noun. You remain in control of when the transformation is appropriate. For bulk systems, call it once per item and retain the original input if you need an audit trail or later reversal.

Understand Unicode behavior and exact preservation

JavaScript strings can begin with characters represented by more than one UTF-16 code unit, so the implementation reads the first complete Unicode code point instead of blindly taking one code unit. That avoids splitting supplementary characters such as many symbols and historic-script letters. Standard Unicode lowercase behavior is applied only to that first code point. In a small number of scripts, a lowercase mapping can contain more than one code point; the result follows the runtime's standard mapping while the original remainder still begins at the correct boundary. No locale is guessed from the input, and no language-specific rewriting is attempted. This is intentional: locale guessing would make an otherwise simple transformation surprising and could produce different results for the same request. The rest of the input is copied byte-for-code-unit from the original JavaScript string, so internal capitalization, combining marks, emoji, newlines, tabs, and trailing spaces are preserved. Empty input and non-string values are rejected with an input error instead of being silently coerced.

Create camelCase names

Convert an initial PascalCase type or component name into a camelCase variable while preserving later capital letters.

Insert a sentence fragment

Adjust a capitalized reusable phrase so it can follow an introductory clause without changing the rest of its wording.

Normalize generated keys

Apply one consistent first-character casing rule to keys emitted by schema, code, or template generators.

Does it lowercase the whole text?

No. It applies lowercase mapping only to the first Unicode character and leaves the remainder unchanged.

What happens if the first character is already lowercase?

The output remains the same because lowercasing that character does not change it.

Does it skip leading spaces or punctuation?

No. It operates on the actual first character and preserves its position, so it does not search ahead for a letter.

Does it support Unicode text?

Yes. It reads the first complete Unicode code point and uses the runtime's standard Unicode lowercase mapping.

How much does the API request cost?

Each API request costs $0.002. The browser version runs locally without sending the text to a server.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/str/uncapitalize-first

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/str/uncapitalize-first \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"HelloWorld"}'
{
  "text": "HelloWorld"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "str.uncapitalize_first",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →