ForHosting KIT · SEO

Generate meta tags

A title tag that measures fine in characters can still get clipped in results because search engines truncate by pixel width, not letter count, and every letter renders at a different width. This API reads a page's actual content and produces a title and description pair sized against real pixel budgets, so what you publish is what shows up whole. It's built for teams generating meta tags at catalog scale, where hand-tuning each one isn't realistic.

● StablePer request + per page$0.003
Use it from WebAPIEmailApp soonTelegram soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

Character counts were never the real limit

Advice like 'keep titles under 60 characters' is a rough approximation of a pixel-width cutoff that search engines actually enforce, and it breaks down constantly because a title full of capital W's and M's eats far more horizontal space than one full of lowercase i's and l's. Product pages, blog archives, and category listings generated from templates often produce titles that look fine in a spreadsheet and get truncated the moment they render in results.

How the generator builds each tag

Send a page's content, or the URL itself, to POST /seo/meta-generate and it extracts the substance of the page, drafts a descriptive title and meta description, and checks both against pixel-width budgets that mirror how search results actually render, trimming or restructuring the copy until it fits without losing meaning. The output favors specific, page-relevant phrasing over generic filler, since a title stuffed with keywords but disconnected from the content tends to hurt click-through rather than help it.

Where the pixel-width problem comes from

Search result snippets have been rewritten by pixel-based truncation logic for years, replacing the older, simpler character-count rules that most SEO advice still quotes out of habit. That shift is exactly why so many sites carry meta descriptions that were 'correctly' sized under the old character rule and still get cut off mid-sentence today.

Built for the scale a person can't manually cover

A ten-page marketing site can get its meta tags handwritten. A ten-thousand-SKU catalog, a multi-language blog, or a directory of location pages cannot, and generic auto-generated tags copied from a template usually read as spammy and hurt trust. The endpoint is asynchronous: submit content, get a task_id back immediately, and receive the generated tags by signed webhook or a 24-hour signed link, so you can batch an entire sitemap without holding a connection open.

Fitting it into your content pipeline

Plug this in right after a CMS publish hook, a product feed sync, or a translation step, so every new or updated page gets a properly sized title and description without anyone touching a spreadsheet. Nothing submitted is stored past the retention window or used to train anything.

Auto-tagging a product catalog

Generate a fitted title and description for every SKU as it's added, instead of relying on a single boilerplate template across thousands of products.

Rewriting meta tags after a content refresh

Rerun the generator whenever a blog post is substantially edited, so the snippet in results still matches what the page actually says.

Localizing meta tags per language

Because pixel width varies by script and language, regenerate titles and descriptions per locale instead of reusing English-length assumptions.

Fixing a site-wide truncation audit

Feed a list of underperforming URLs found during a truncation check straight into the generator to correct them in one batch.

How is this different from just counting characters?

The generator checks titles and descriptions against actual pixel-width budgets, the same way search engines truncate results, rather than a rough character-count rule that varies by letter shape.

Can it generate tags for pages in other languages?

Yes, it works from the page's own content and language, and pixel calculations adjust accordingly since different scripts render at different widths.

Is there a free trial?

There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.

How do I retrieve the generated tags?

The call is asynchronous — POST /seo/meta-generate returns a task_id immediately, and the finished title and description arrive via signed webhook or a signed link valid 24 hours.

What if the page has thin or missing content?

The generator works from whatever content is present; extremely thin pages produce more generic output, and improving the source content is the real fix.

How much does it cost to run on a large catalog?

It's $0.003 per request plus $0.0135 per page, so the cost of a full catalog run is calculable in advance from your page count.

Will it overwrite my manually written meta tags?

No, it only returns suggested title and description text; applying it to your site is a step you control.

What happens if generation fails?

It retries automatically up to three times before returning a clear error, and a failed task is never billed.

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/seo/meta-generate

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, and soon from our app, email and Telegram.

curl -X POST https://api.kit.forhosting.com/seo/meta-generate \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"…"}'
{
  "input": "…"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "seo.meta_generate",
  "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.003
Per page$0.0135

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.
413input_too_largeThe file exceeds the size limit.
422task_failedThe task failed after 3 retries. You are never charged for it.

Read the full KIT documentation →