Title click-worthiness score
The title click-worthiness scorer gives a page title a transparent score from 0 to 100 based on three recognizable patterns: numerals, selected power words, and question formatting.
Run — free
It reports the exact numbers and power words it found, whether the title reads as a question, and the points contributed by each category. The result is a quick editorial diagnostic, not a promise of traffic, and it can help compare drafts before publication without relying on a model or sending the title to a third party.
Read the score as a signal check, not a traffic forecast
A title can earn attention for many reasons, including relevance, brand familiarity, search intent, timeliness, and the strength of the page itself. This scorer deliberately measures only three visible title patterns. A numeral contributes 30 points because numbered lists, quantities, dates, and percentages give readers a concrete expectation. Recognized power words contribute 12 points each, up to 45 points, because terms such as proven, essential, and surprising add emphasis or imply a clear benefit. Question form contributes 25 points when the title ends in a question mark or begins with a common English question word. The total is capped at 100. A high result therefore means that several configured signals are present; it does not mean the title is accurate, useful, well targeted, or guaranteed to receive clicks. Use the component points and matched values to understand why a draft scored as it did rather than treating the total as an isolated verdict.
Compare meaningful title drafts with the matched evidence
The most useful workflow is to score several honest drafts for the same page and inspect the evidence beside each result. The response lists every distinct numeral it recognizes, every distinct power word from the fixed dictionary, and the question-format decision. It also returns a matched-signals list and a point breakdown, so a reviewer can see whether a score came from one category or a balanced combination. Repeated use of the same power word does not create extra points, and adding more than four recognized power words cannot push that category beyond its cap. Those rules discourage mechanical repetition. Compare titles that communicate the same underlying promise; otherwise the score may reward a more dramatic sentence that no longer describes the page. Preserve the primary topic and search intent, then test whether a specific number, a genuinely appropriate emphasis word, or a natural question makes the title clearer. The evidence is designed to support an editorial choice, not replace one.
Keep titles credible while testing stronger phrasing
Click-worthy does not have to mean misleading. Only use a number when the page actually delivers that count, quantity, year, or percentage. Choose a power word when the content supports it: calling advice proven should imply evidence, while free should not conceal a required purchase. A question should express something the page answers directly. Because the algorithm is deterministic, the same title always produces the same result in the browser and through the API, making it suitable for repeatable editorial checklists and content pipelines. The title is limited to 300 characters to keep the operation bounded, although practical search titles are usually much shorter. No network request, random value, current date, or model inference affects the calculation. Run an occasional scoring pass during drafting, then make the final decision using relevance, clarity, accuracy, length in the actual search result, and observed performance data. Used this way, the score is a compact lint check for attention signals rather than an invitation to manufacture sensational claims.
What you can do with it
Compare article title drafts
Score several accurate alternatives and see which attention signals distinguish them before an editor chooses the final wording.
Add a content checklist step
Run the deterministic check in a publishing workflow and record both the total score and the matched evidence.
Audit a title inventory
Review existing page titles consistently to find drafts with no concrete number, emphasis word, or question framing.
FAQ
What does the score measure?
It measures the presence of numerals, words from a fixed English power-word list, and question formatting. It does not measure rankings, relevance, sentiment, or actual click-through rate.
How are the 100 points allocated?
A title receives 30 points when it contains at least one numeral, 12 points per distinct matched power word up to 45, and 25 points for question format. The final total is capped at 100.
Does a higher score guarantee more clicks?
No. The score identifies patterns that can attract attention, but audience intent, accuracy, competition, brand recognition, and the quality of the page also affect performance.
What counts as question format?
A title qualifies when it ends with a question mark or starts with a common English question word such as what, why, how, can, or should.
Are repeated words or numbers rewarded repeatedly?
No. The number category is based on presence, and each recognized power word is counted once even if it appears several times.
What does the API request cost?
Each API request costs $0.002. The same deterministic analysis is also available in the browser.
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/seo/title-click-bait-score \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"10 Proven Ways to Improve Your SEO Today?"}'const res = await fetch("https://api.kit.forhosting.com/seo/title-click-bait-score", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"title": "10 Proven Ways to Improve Your SEO Today?"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/title-click-bait-score",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"title": "10 Proven Ways to Improve Your SEO Today?"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/title-click-bait-score", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"title":"10 Proven Ways to Improve Your SEO Today?"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"title":"10 Proven Ways to Improve Your SEO Today?"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/title-click-bait-score", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"title": "10 Proven Ways to Improve Your SEO Today?"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.title_click_bait_score",
"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 | 300 |
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. |