Preflight a responsive page
Check viewport configuration, responsive CSS, fixed widths, font sizes, images, weight, and plugins before release.
Free, no signup. Run this tool's seven weighted mobile-layout checks and get a 0–100 diagnostic score, plus a phone-viewport preview as separate supporting evidence.
Free, no sign-up. The analysis reads your HTML the way a mobile browser would; the screenshot renders in headless Chrome on a 390×844 iPhone-sized viewport.
Checks run from our server; we fetch the URL you enter and don't keep the results. Results are kept in a short-lived cache, not stored long-term. Anonymous aggregate stats feed our research posts; domains are counted once via an anonymized hash and never stored in the clear. Anonymous run-level outcome counters may be used for aggregate research; URLs, domains, IPs, and identifiers are never included, and no statistic is released below 100 runs.
Say you test a page whose <head> and markup look like this:
<head>
<meta name="viewport"
content="width=device-width, initial-scale=1, user-scalable=no">
<link rel="stylesheet" href="/styles/site.css"> <!-- has @media rules -->
</head>
<body>
<div style="width:960px">…fixed-width wrapper…</div>
</body> …and the tool returns a score of 78 with these checks (computed by running this page's own scorer against the signals above):
Example data — captured by running this page's own scoring engine against the markup above
https://example.com/your-page
Viewport is set, but zooming is disabled — this hurts accessibility.
1 element(s) with fixed widths over 400px — likely to cause horizontal scrolling.
No CSS was inspectable, so responsiveness couldn't be verified.
No inline font sizes below 12px detected.
/styles/site.css, so the tool honestly reports it couldn't verify
responsiveness rather than assuming media queries exist. A live run against a real URL fetches
up to four stylesheets to check. See what info vs. pass means ↓.user-scalable=no blocks
pinch-zoom (drop the viewport back to width=device-width, initial-scale=1), and the
width:960px wrapper will overflow a 390px screen (swap it for max-width:100%).https://example.com/your-page).+ saves the current site or page. Use ☆ beside any saved site, page, or list to favorite it. Recent check history appears below.
Target filled from your local choices.
Saved targets, named lists, and recent check summaries remain only in this browser.
390×844 viewport · iPhone user agent
This is a static-analysis check plus a real render — fast and directional. It can’t see CSS applied by JavaScript frameworks at runtime, so pair a borderline score with the screenshot: if the page looks right on the phone frame, trust your eyes.
Download this free analysis as a private JSON baseline, then import it after another run to see score and failing-check changes. Snapshots stay in your browser unless you choose to save a file.
| Check | Threshold / points | What this free pass can confirm |
|---|---|---|
| Viewport | 30 points | width=device-width and zoom accessibility |
| Responsive CSS | 20 points | @media rules in inspected CSS |
| Fixed widths | 15 points · >400px warning | Markup-level width attributes and inline styles |
| Font sizes | 10 points · <12px warning | CSS declarations and legacy font tags |
| Tap targets / horizontal overflow | Needs a rendered layout pass | Not claimed by this free HTML score |
Without width=device-width, phones render your page at ~980px and shrink it to fit — every other mobile problem starts here. Disabling zoom costs points too: it’s an accessibility failure.
Responsive CSS (@media rules, including in external stylesheets), hard-coded widths over 400px, and sub-12px font sizes — the three classic ways a desktop layout breaks on a phone.
Responsive images (srcset/<picture>), HTML page weight on mobile networks, and leftover <object>/<embed> plugin content that mobile browsers won’t run.
Checking why a page fails on phones? Start here, then read the mobile-first indexing guide and the viewport meta tag reference for the fixes.
The gauge colour and rating come from the total score:
Each check carries a severity badge, colour-coded by its left border:
The score comes from a server endpoint that streams your page through a single
HTMLRewriter pass — reading the <meta name="viewport"> tag, inline
styles, width attributes, images, <object>/<embed> elements,
and the HTML byte count as the bytes flow by. It also fetches up to four linked stylesheets to look
for @media rules, then weights everything into a 0–100 total. This path is fast,
effectively free, and always runs.
The phone screenshot is a separate, metered step. Only a URL that already passed the analysis can request it, and the render draws from a shared browser-time budget with daily and monthly caps. When that budget is spent, the renderer is busy, or the page blocks headless browsers, the preview shows a calm note and your score is untouched — the two never depend on each other.
width=device-width present and zoom
allowed. The heaviest check because every other mobile behaviour depends on it.@media rule, checked in inline
<style> blocks and in the linked stylesheets.width attribute) that would force horizontal scrolling.<font size> tags.srcset/sizes so
phones don’t download desktop-sized files.<object>/<embed>
plugin content that mobile browsers won’t run.
The score is static analysis, so it does not run JavaScript — CSS applied at runtime
by a framework isn’t counted, which is exactly why the phone screenshot is there to cross-check.
Responsive CSS is inferred from the presence of @media rules (in the HTML and up to four
stylesheets), not from actually laying the page out, so a page with unusual responsive techniques can
read lower than it deserves. It tests one URL a public crawler can reach — login-gated or blocked
pages, and very large pages past the byte cap, are analysed only up to that cap. It also isn’t a
Core Web Vitals or tap-target-spacing test; for field performance use the
Core Web Vitals Checker.
Google removed the standalone Mobile-Friendly Test and the mobile-usability report in Search Console in late 2023. This tool applies its own seven-part diagnostic model. Those checks are product heuristics for finding likely mobile-layout problems, not Google eligibility criteria or a replacement for testing on real devices.
The 0–100 score comes from a static-analysis pass over the HTML and up to four stylesheets, so it does not execute JavaScript. The phone screenshot is a headless-Chrome preview and useful supporting evidence, but it is still one viewport and one rendering environment. Treat disagreements as a prompt to inspect the page and test representative real devices.
The viewport check is worth 30 of the 100 points because it is the single setting every other mobile behaviour depends on. With no <meta name="viewport"An HTML head element — <meta name="viewport" content="width=device-width, initial-scale=1"> — that hints mobile browsers to size the layout viewport to the device's width in CSS pixels instead of a legacy ~980px fallback, so responsive design works.> tag, phones render your page at roughly 980px wide and shrink it to fit, so text is tiny and taps miss. The fix is one line in the <head>: <meta name="viewport" content="width=device-width, initial-scale=1">. Disabling zoom (user-scalable=no or maximum-scale=1) keeps most of the credit but drops to a warning because it is an accessibility failureWeb accessibility means designing sites so people with disabilities can use them, per the W3C's WCAG guidelines. It overlaps with SEO in specific, checkable ways — alt text, heading structure, descriptive link text, captions, and page speed all serve both audiences — but Google has said accessibility itself is not a ranking factor, and most WCAG success criteria (keyboard focus order, ARIA live regions, form labels) have no SEO effect at all..
The "Content sized to viewport" check flags any element with a hard-coded width over 400px — either an inline style:width or a width="…" attribute. Those are the widths most likely to overflow a phone screen and force horizontal scrolling. One or two is a warning; three or more is a fail. Use max-width with a percentage or relative units instead so blocks shrink on small screens.
No. The score and the seven checks come from the free HTML analysis, which runs first. The phone screenshot is a separate, metered render that can be skipped when a self-imposed daily or monthly cost cap is reached, when the renderer is briefly busy, or when the page blocks headless browsers. In every one of those cases the note is deliberately calm and your score is unaffected — the analysis never depends on the screenshot.
Upvote what you want most. New ideas can be submitted from the floating Feedback menu; requests appear here once approved, and the most-wanted rise to the top.
You won't be emailed about that request anymore.
Loading…
New requests are reviewed before they appear here.
Where this tool helps
Check viewport configuration, responsive CSS, fixed widths, font sizes, images, weight, and plugins before release.
Use the seven-part diagnostic to narrow down why a public page is difficult to read or use on a phone.
Inspect the separate viewport preview for visual clues while remembering it is not a substitute for real-device testing.
Rerun a representative page after changing CSS or markup and confirm which observed checks improved.
Watch the full workflow
Google retired its standalone Mobile-Friendly Test, but mobile layout problems still matter. I’ll show you this tool’s seven-part diagnostic, useful cases, the sample score and fixes, its main features and limits, and the device checks to make next.
This tool assigns a zero-to-one-hundred product score from seven weighted H-T-M-L and C-S-S checks, then requests a separate three-hundred-ninety by eight-hundred-forty-four phone preview. These are directional diagnostics, not Google eligibility criteria and not a replacement for testing real devices.
Use it before a launch, after a responsive redesign, while investigating horizontal scrolling or tiny text, when a template lacks a viewport tag, when large desktop images reach phones, or as a quick comparison between representative page types. Test the exact page, not only the homepage.
Paste one complete public U-R-L, clear the anti-abuse check, and select "Test page". The analysis reads the initial H-T-M-L and as many as four stylesheets. The screenshot is a separate metered render, so it can be unavailable while the seven-check score still completes normally.
The scorer-generated example has a viewport tag that disables zoom, a linked stylesheet the static sample cannot inspect, and a nine-hundred-sixty-pixel fixed-width wrapper. Those signals demonstrate accessibility, evidence availability, and likely overflow problems without pretending that a screenshot was rendered.
The example scores seventy-eight, which falls in "Mostly mobile-friendly". The gauge is a summary, not a pass certificate. Begin with the warnings and information rows that explain where points were lost, then use the phone preview and real-device testing to decide whether users experience the same issue.
The viewport warning keeps twenty-four of thirty points because the page sets device width but blocks pinch zoom. Remove the zoom restriction. The fixed-width warning keeps nine of fifteen because one element exceeds four hundred pixels. Replace the rigid width with a flexible width and an appropriate maximum.
Responsive C-S-S receives an information result because the example names a stylesheet that was not actually fetched. Information is half credit for incomplete inspection, not proof of failure and not a pass. A live run can inspect as many as four linked stylesheets for media rules.
The seven checks cover viewport configuration, responsive C-S-S, hard-coded widths, small font declarations, responsive image markup, H-T-M-L document weight, and incompatible object or embed content. The weights total one hundred, with viewport worth thirty because every other mobile behavior depends on the browser using the device width.
Scores from ninety through one hundred are green; seventy through eighty-nine are mostly mobile-friendly; fifty through sixty-nine need work; and lower scores are red. Pass, warning, error, and information badges provide the actual evidence. A high total can still hide one important issue, so review every row.
The main features are the weighted seven-check score, explicit thresholds and point values, stylesheet inspection, a separate iPhone-sized headless-browser preview, calm screenshot-unavailable states that do not alter the score, and private baseline export and import for comparing a later run. Each output remains tied to one tested U-R-L.
The score does not execute JavaScript, so runtime-applied styles can be missed. Media-rule presence does not prove correct layout. The tool tests one public page, limits stylesheet and byte acquisition, and one screenshot represents only one browser and viewport. It does not measure Core Web Vitals, real tap-target spacing, every orientation, authentication state, or assistive technology.
Save the tested U-R-L, time, total, each check, acquisition notes, and phone preview state. Fix the responsible template and assets, rerun the score, and compare a baseline. Then test representative devices and browsers for zoom, orientation, overflow, touch targets, forms, menus, keyboard access, screen readers, loading, and real-user performance.
Repair the viewport, flexible layout, fonts, images, weight, and legacy content that the evidence supports. Then retest the page and verify real interactions, overflow, tap targets, accessibility, and performance on representative phones before calling the experience ready.