Open source

Measure CJK titles in pixels, not characters.

A Chinese, Japanese or Korean title wider than 648px is truncated in Google desktop results, and an all-CJK title crosses that line at its 30th character. serp-title-width measures every title against a model taken from the live results page, in your build or while an assistant is writing the title.

Why character counts fail for CJK

Most site auditors judge title length by counting characters, with limits around 60. That rule of thumb comes from Latin text. Google renders result titles in Arial at 22px, where an ideograph, a kana or a Hangul syllable is 22px wide, roughly twice an average Latin letter. Sixty of them come to 1,320px, about twice the 652px desktop result column. A character-count check passes CJK titles that Google will cut in half.

Google gives no length in characters or pixels. Its documentation says only that the title link is truncated as needed, so the width has to be measured.

We measured it on 2026-09-18 on google.com with the Traditional Chinese (Taiwan) interface, in Chrome on Windows: we read the computed style of a result title and measured glyph advances with a canvas in the same page. Those numbers are the model this tool uses, and the README includes the console snippet to re-measure them.

Title width thresholds: 26 CJK characters at 572px is safe, 29 at 638px is in the edge zone, 30 at 660px is past the 648px cut line

What it checks

Length in three tiers

Over 572px is a warning, over 630px is the edge zone near the desktop single-line limit, over 648px is wider than the desktop column and will be truncated. The last two fail the check.

At most two separators

More than two of the marks 、 and , combined fails. In the sample behind the model, every cut Google made in a long zh-TW title fell on one of them. The sample is small, so treat it as a heuristic.

One question per title

More than one full-width question mark fails. A title that asks two things does not tell the reader which answer is behind the click. This is an editorial rule, not a Google requirement.

Boilerplate tails

The same trailing phrase on more than two titles in a set fails. Google's title link documentation names boilerplate titles as a problem. Scan the whole site at once so this can be detected.

Keyword zone on mobile

Text before the first punctuation mark wider than 343px means the first mobile line breaks inside the main keyword. Warning only.

Stuffing and empty titles

The same run of two to four ideographs three or more times fails, which catches literal repeats such as A|A|A. Empty or whitespace-only titles fail too.

Width thresholds

A digit is about 12.2px, roughly 0.55 of an ideograph, so "2026" takes the space of 2.2 ideographs. Latin letters vary: i and l are narrow, M and W are nearly as wide as an ideograph.

TierWidthAll-CJK titleResult
safeup to 572pxup to 26 characterspass
longover 572px27 or morewarning
edgeover 630px29 or morefail
cutover 648px30 or morefail, truncated on desktop

How to use it

Requires Node.js 18 or later. No API key and no network access. Scan the built site in one run so boilerplate tails across pages are detected:

npx -y -p mcp-server-serp-title-width serp-title-width ./public

The exit code is the contract: 0 every title passes, 1 at least one title must be fixed, 2 the ruler failed its own positive and negative controls, in which case no verdict is given. Put it in front of your deploy and honour the exit code.

The same checks run as an MCP server, so an assistant can measure a title while it is writing it:

{"mcpServers":{"serp-title-width":{"command":"npx","args":["-y","mcp-server-serp-title-width"]}}}

Two tools: measure_titles takes a list of title strings, check_title_files reads the <title> of local HTML files or directories. Both are read-only, and the server refuses to start if its own selftest fails.

Limitations and licence

MIT licensed. The model was measured for one setting: google.com, Traditional Chinese interface, Chrome on Windows. Japanese and Korean use the same full-width assumption and were not measured separately, so treat those results as estimates. Latin text is approximate because Arial is proportional. Google builds title links from several sources besides the <title> element and may replace a title it considers boilerplate, so a passing title is not a guarantee of what is displayed. If Google changes the title font size, every number on this page has to be measured again.

GitHubnpm

Related reading

Titles are one of several things we check before a page goes live:

Operating on Keyword Cannibalization New Site With Zero Pages Indexed How to Choose an SEO Agency contentgate: checks before anything ships

FAQ

How many Chinese characters fit in a Google title?
On desktop, an all-CJK title is truncated from its 30th character: 648px divided by 22px per character is about 29.5. Digits and Latin letters are narrower, so mixed titles have to be measured in pixels.

Why does this disagree with my SEO tool?
Most tools count characters with a limit around 60, a rule of thumb from Latin text. A CJK character is about twice as wide as an average Latin letter, so the same limit passes titles that are certain to be cut.

Does it work for Japanese and Korean?
It measures them with the same full-width width as Chinese, which matches how kana and Hangul are normally set, but the model was measured on the Traditional Chinese interface only. Treat the results as estimates.

Is it free?
Yes. It is MIT licensed, the source is on GitHub, and it runs with npx without an API key or an account.

If you would rather someone else did this

Titles, indexing and content checks are part of what we deliver. If your site needs the foundations done properly from the start, describe your situation and we will tell you straight.

Chat on Telegram
Chat on TG