SERP Pixel Width Checker for Titles & Meta Tags

Google does not cut snippets at a character count. It cuts them at a pixel boundary, because the SERP is rendered in a proportional font where W is more than four times wider than l. This checker measures the rendered width of your title tag and meta description with the browser canvas at Google's actual render sizes, simulates the line wrapping, and reports the exact character index where the text gets clipped.

Measure Your Snippet

Everything updates as you type. All measurement happens in your browser — nothing is uploaded.

engine: —

Pixel budget (desktop)

Title tag 0 / 580 px
0% of budget
Meta description 0 / 920 px
0% of budget
Title cut index
Description cut index
0 Title lines used
0 Description lines used

Cut index is the character offset in your original string where the visible text stops. A dash means nothing is truncated.

Keyword survival & brand cost

Keyword in title
Keyword in description
Title prominence
0 px Brand tail cost

Enter a target keyword to test whether it survives truncation.

Pixel-accurate SERP preview

Desktop · 20px title / 14px description
enhio.com
Mobile · 20px title / 14px description
enhio.com

The dashed edge on each block marks the line box the text is measured against. Both previews render in real Arial at the real font sizes, so the wrap you see is the wrap that is computed.

How the measurement works

1. Advance widths, not characters

Every glyph in a proportional font carries an advance width expressed in font units, normally 1000 units per em. Arial (and its metric clone Liberation Sans) uses these values, which is why identical character counts produce wildly different pixel widths:

GlyphAdvance (units / 1000 em)Width at 20px
W94418.88 px
M83316.66 px
e55611.12 px
space2785.56 px
i2224.44 px
l2224.44 px

Width for a string is simply the sum of its glyph advances scaled by the font size:

width_px = ( sum of advance_units ) × font_size_px / 1000

Ten W characters at 20px come to 188.8 px. Ten l characters come to 44.4 px. Same character count, more than four times the pixels. That is the whole reason a character-count check misfires.

2. Two measurement engines

The tool first asks the browser: it creates an offscreen canvas, sets ctx.font = "20px Arial" and calls measureText(). That path uses the real installed font and is exact. It then calibrates the canvas against the embedded advance table with a reference string. If the browser has no Arial and substitutes a font whose metrics deviate by more than 2%, the tool switches to the table so that two people on two machines get the same number. The badge next to the buttons shows which engine is live.

3. Line boxes and budgets

Google gives a snippet a fixed number of lines and a fixed pixel budget. The per-line box is the budget divided by the allowed lines:

ElementFont sizeLinesTotal budgetLine boxApprox. characters
Title, desktop20px Arial1580 px580 px~62
Title, mobile20px Arial2920 px460 px~99
Description, desktop14px Arial2920 px460 px~147
Description, mobile14px Arial3680 px227 px~109

The character estimates in the last column are derived, not assumed. Measuring ordinary English title case in this table gives an average advance of 9.34 px per character at 20px, and ordinary English prose gives 6.24 px per character at 14px; dividing each budget by that average produces the counts above. This is exactly why the familiar rules of thumb are "keep titles near 60 characters" and "keep descriptions near 150 characters" — those numbers are a by-product of the pixel budgets, not the rule itself. Your copy will land above or below them depending on how wide your glyphs are, which is the number this tool actually reports.

4. The wrap and truncation simulation

Whitespace is first collapsed to single spaces, with a character map kept so every position can be traced back to your original string. Then a greedy line breaker runs:

  1. Take the next word. Build the candidate line current + " " + word.
  2. If the measured width of the candidate is at or below the line box, accept it and continue.
  3. Otherwise close the current line and start a new one with that word.
  4. Stop after the allowed number of lines.

If any text is left over, the final visible line is filled character by character while width(fragment) + width(ellipsis) stays inside the line box, trailing spaces are trimmed, and the ellipsis is appended. Because the ellipsis is re-measured against the fragment rather than assumed, the rendered line never overshoots. The character index at which the fill stopped, mapped back through the whitespace normalisation, is the cut index reported above.

5. Keyword survival and prominence

Two different questions get two different answers. Survival uses the last occurrence of the keyword: the keyword survives when the end of that occurrence lands at or before the cut index, so a keyword repeated late in a long description is correctly judged as lost. Prominence uses the first visible occurrence and weights it by position:

prominence = 1 − ( start_index / visible_length )

A keyword at the very start scores 1.00, a keyword halfway through the visible text scores 0.50, and a keyword that never appears in the visible text scores 0.00. Front-loading matters because the first words are what a scanning user reads and what stays legible when Google rewrites the tail.

6. Brand suffix cost

The tail | Brand is measured on its own so you can see what the branding is charging you. A pipe, two spaces and a five character brand runs roughly 70 px at 20px Arial — about 12% of the entire desktop title budget, or six to seven characters of keyword copy you no longer get to use.

Practical thresholds

Writing the copy, not just measuring it

The main Enhio analyzer scores readability, sentence rhythm and keyword density on the page body that the snippet has to earn clicks for.

Open Full Analyzer

Related Tools

Frequently Asked Questions

Why measure pixels instead of counting characters?

Because Google clips on pixels. In Arial an uppercase W is 944 units per 1000 em and a lowercase l is 222 units. A 60 character title in narrow lowercase can fit where a 52 character title in capitals is cut. Character counts are a proxy that fails exactly on the titles you care most about.

What pixel limits does this tool use?

Titles: 580 px on desktop across one line, 920 px on mobile across two lines, both at 20px Arial. Descriptions: 920 px on desktop across two lines, 680 px on mobile across three lines, both at 14px Arial. The line box is the budget divided by the line count.

How is the truncation point calculated?

A greedy word-wrap simulation fills lines while the measured candidate width stays inside the line box. Once the allowed line count is reached, the last line is filled character by character until the fragment plus the ellipsis would overflow. That position, mapped back to your original string, is the cut index.

How accurate is it without the real Google font?

The canvas path uses your installed Arial and is exact. The fallback table carries Arial's published advance widths, which Liberation Sans and Helvetica match, so the deviation on ordinary Latin text is well under one percent. The active engine is always shown.

Does a brand suffix hurt my title?

It spends pixels. A pipe plus a nine character brand costs roughly 100 px at 20px Arial, about 17% of the desktop title budget. If the tail pushes you past the limit, Google may rewrite the title or drop the brand.

Is my text sent to a server?

No. Every calculation runs client-side in your browser. Nothing is transmitted, stored or shared, which you can verify in the Network tab of your developer tools.

© 2026 Enhio · A Zovo project · About