Title case converter
Paste the lord of the rings and get The Lord of the Rings: major words are capitalized, while short words such as of and the stay lowercase in the middle. Hyphenated words follow the same rule, so state-of-the-art becomes State-of-the-Art. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Text
- the lord of the rings
- Result
- The Lord of the Rings
- Input
- the lord of the rings
- Title
- The Lord of the Rings
- Title case
- The Lord of the Rings
A title case converter turns a plain phrase into headline-ready capitalization without guessing style by hand. Enter any non-empty string—book titles, blog headlines, product names, or UI labels—and the tool returns a title-cased result that capitalizes major words while keeping a fixed list of small words lowercase unless they sit at the start or end of the phrase.
What title case means and how small-word rules work
Title case is the capitalization style used for headlines, book titles, and many user-interface labels: the first letter of each major word is uppercase, remaining letters of that word are lowercase, and a short list of minor words stays entirely lowercase when they appear in the middle of the phrase. Major words include nouns, verbs, adjectives, adverbs, and longer prepositions.
The small-word list used here covers articles such as a, an, and the; coordinating conjunctions such as and, but, or, nor, for, yet, and so; and short prepositions and particles such as as, at, by, in, of, on, to, up, via, from, into, onto, with, than, over, if, is, it, per, and common versus abbreviations.
The first word and the last word of the whole phrase are always capitalized even when they would otherwise be small, which matches everyday headline practice: “the end of the world as we know it” becomes a title that still opens with The and closes with a capitalized final token. Hyphenated compounds are split on the hyphen so each segment can follow the same rule independently—state-of-the-art becomes State-of-the-Art rather than State-Of-The-Art or State-of-the-art with a weak final segment.
Leading and trailing whitespace is trimmed; internal runs of spaces collapse to a single space so pasted multi-line or tab-separated titles normalize cleanly. Input that is empty after trimming is not a title: the converter refuses it instead of returning an empty success string that would look like a valid conversion in logs and CMS hooks.
Practical tips, limits, and when to use this tool
Use this capability when the search intent is convert to title case, capitalize each word for a headline, or apply small-word title rules online. Paste a draft headline in any case, convert once, and drop the result into a CMS title field or an Open Graph tag. Keep intentional brand spellings in mind: pure title case will rewrite iPhone-style mid-word capitals because the algorithm normalizes after the first letter—if you must preserve a trademark form, apply this tool only to the surrounding phrase or post-edit the brand token.
Hyphenated product names and multi-part subtitles benefit from the segment rule; quoted titles still capitalize the first alphabetic character after an opening quote. This landing is not a sentence-case converter that only capitalizes the first word of a paragraph, not a full AP or Chicago Manual of Style editorial service with exception dictionaries, and not a slug generator that replaces spaces with hyphens. Prefer a URL slug tool when you need make-url-slug output; prefer this capability when humans will read the string as a title.
When teaching style guides, compare the same phrase with and without mid-phrase the and of so students see why small-word rules exist instead of capitalizing every token blindly.
What you can do with it
SEO and Open Graph title fields
Templates title-case product or article names for meta tags without hand-editing every small word.
FAQ
What is title case?
Title case capitalizes major words in a phrase. Small words such as a, the, of, and and usually stay lowercase unless they are the first or last word.
Which small words stay lowercase?
A fixed list including articles (a, an, the), short conjunctions (and, but, or, …), and short prepositions (of, in, to, …). First and last words are always capitalized.
What happens on empty input?
Successful responses always include a non-empty title-cased result.
Does this create URL slugs?
No. It returns a human-readable title-cased string with spaces. Use a slug generator if you need hyphenated URL paths.
Is the title case converter free?
The browser tool is free and runs locally.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/str/title-case \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"the lord of the rings"}'const res = await fetch("https://api.kit.forhosting.com/str/title-case", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "the lord of the rings"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/title-case",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "the lord of the rings"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/title-case", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"the lord of the rings"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"the lord of the rings"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/title-case", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "the lord of the rings"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.title_case",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_chars | 100000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Empty or whitespace-only input is rejected with a clear invalid_input error so pipelines never publish a blank title as success.
How to call the API and what the response contains
Prefer sending the raw phrase rather than pre-capitalizing by hand when you want the fixed rule set; the converter lowercases letters after the first alphabetic character of each major segment so ALL CAPS paste and mixed Case paste converge on the same title. Send a JSON body with a required string field text (aliases input, value, string, and s). The value must be a non-empty string after whitespace is trimmed and must not exceed one hundred thousand characters so a single request cannot exhaust Worker or browser memory on huge paste dumps. On success the response echoes input as the original string you sent, text as the trimmed working string, result as the title-cased output, title and title_case as the same string under alternate names for callers that prefer those keys, word_count as the number of whitespace-separated tokens after normalization, and message as a short English summary that reports how many words were converted. Failed validation—missing text, a non-string value, an oversize payload, or empty content after trim—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and when to use this tool
Round-trip checks for tests are easy: feed the lord of the rings and expect The Lord of the Rings with word_count five; feed a short single word and expect only the first letter raised; deliberately send empty string or spaces to confirm invalid_input and the message that asks for a non-empty string. Failed tasks that return invalid_input do not consume prepaid balance, which keeps form validation and CI negative tests cheap.
Integration use cases
CMS and blog headline normalization
Editors paste draft titles in mixed or all caps; a single API call returns consistent title case before publish.
Unit tests for display formatters
Generate known-good Title Case fixtures and assert blank input raises invalid_input in CI.