Read the viewport tag a page actually serves: whether it sets width=device-width and initial-scale, whether it appears more than once, and whether it stops visitors pinch-zooming into small print. One URL, one fetch, and the verdict right here.
5 rows, one URL. One GET of the page as VerandBot/1.0, redirects followed, 12 second timeout, the served HTML only, no browser render. We count every meta element named viewport, then split the first one's content on commas (and semicolons) into properties and read width, initial-scale, maximum-scale and user-scalable.
No tag, more than one tag, a fixed numeric width, no width and no initial-scale either, or blocked zoom is a fail. Zoom counts as blocked when user-scalable is no or 0, or maximum-scale is 1 or less. A missing width beside an initial-scale, a missing or non-1 initial-scale, and a maximum-scale between 1 and 2 (which the W3C's test rule fails) are marked review.
A tag added by JavaScript after load. Any tag after the first: only the first one's value is read, although every one is counted. Anything past the first 100,000 characters of HTML. The whole document is scanned, so a tag inside an HTML comment or a script counts. Whether the layout really fits a phone is not tested: CSS, wide images and horizontal scroll need a render. minimum-scale and viewport-fit appear in the value shown but are not graded, and whether a given browser honours a zoom block is up to the browser.
One fetch, one tag, four properties. The card is the tool in motion on an example page, looped, and each step lights up while the card is doing it.
<meta name="viewport" content="width=device-width, initial-scale=1">
The tool fetches the URL you typed as VerandBot, follows redirects to the page that answers, and reads the HTML the server sent. Nothing is rendered, so a tag that only JavaScript adds later is not there to find.
Each meta element named viewport is found and counted. One is the goal. Two is a fail on its own, because the value we read and the value a phone applies may not be the same one.
The content string is split into its parts: is width set to device-width, is initial-scale 1, and is anything stopping a visitor from zooming in.
When a row fails or needs review, the card shows the one-line tag that fixes every row at once. The endpoint returns no fix text for this check; that line is written by the page, and labelled so.
One line in the head decides how wide a page is on a phone and whether a visitor may enlarge it. Here is what each part of it does, the errors that turn up on real sites, and where Google's old mobile test went.
A phone's screen is a few hundred CSS pixels wide, and most of the web was built for screens three or four times wider. When mobile browsers arrived, they solved that by pretending: with no instruction from the page, they lay it out at a desktop width and shrink the result to fit the screen. When we loaded a page with no viewport tag in Chrome's mobile emulation at a 390-pixel phone width, the page was laid out 980 pixels wide. Text arrives at a third of its intended size, and the visitor has to pinch and pan to read anything.
The viewport meta tag is how a page opts out of that. It sits in the <head>, written as <meta name="viewport" content="...">, and tells the browser how wide the layout should be and how zoomed in it should start. A responsive stylesheet depends on it: media queries measure the layout width, so on a page without the tag they see 980 pixels and serve the desktop layout to every phone. That is why the tag is the first thing to check when a page with a perfectly good mobile design still looks tiny on a phone.
Almost every page wants the same line, the one MDN and web.dev both give:
<meta name="viewport" content="width=device-width, initial-scale=1">
width=device-width sets the layout width to the screen's width in CSS pixels, so a 390-pixel phone gets a 390-pixel layout and your media queries fire. initial-scale=1 says to open the page at 100 percent, neither zoomed in nor out. Nothing else is needed, and in particular nothing that limits zoom. Anything added to that line should have a reason you can name.
The content value is a comma-separated list of name and value pairs. These are the ones that turn up in practice:
| Property | Typical value | What it does, and how it is graded here |
|---|---|---|
| width | device-width | The layout width. device-width matches the screen; a number fixes it, so width=1024 lays a 1024-pixel page out on every phone. Graded: a number fails; missing is a fail, or a review when initial-scale is set. |
| initial-scale | 1 | The zoom level the page opens at. 1 is 100 percent. Graded: missing, or anything other than 1, is marked for review. |
| maximum-scale | unset | How far a visitor may zoom in. At 1 or below, they cannot zoom in at all. Graded: 1 or less fails as blocked zoom; between 1 and 2 is marked for review. |
| user-scalable | unset | Whether zooming is allowed at all. no or 0 switches it off. Graded: either value fails as blocked zoom. |
| minimum-scale | unset | How far a visitor may zoom out. Rarely useful. Shown in the raw value, not graded. |
| viewport-fit | cover | Whether the page may draw under a phone's notch and rounded corners. Shown in the raw value, not graded. |
One detail worth knowing: in the same Chrome emulation, a tag carrying only initial-scale=1, with no width at all, still produced a 390-pixel layout. The browser derived the width from the scale. That is why this checker fails a fixed number but marks a missing width for review when initial-scale is there, and why the standard line sets both anyway: it states the intent in the way every reference and audit tool expects to read it.
The two properties that limit zoom, user-scalable=no and a low maximum-scale, are the ones that cause real harm. A visitor with low vision, or anyone reading a phone in sunlight, enlarges text by pinching. Take that away and small print stays small.
The Web Content Accessibility Guidelines cover this under Success Criterion 1.4.4, Resize Text, at Level AA: "Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality." The W3C's own test rule for that criterion, "Meta viewport allows for zoom", fails a tag with user-scalable=no or a maximum-scale below 2. The open-source axe-core engine applies the same two tests and maps them to 1.4.4. This checker is slightly more lenient on the second: it counts zoom as blocked at a maximum-scale of 1 or less, where the visitor cannot enlarge the page at all, and marks anything between 1 and 2 for review rather than passing it silently.
Be precise about the effect. The W3C rule itself notes that most modern mobile browsers either ignore the zoom limit by default or offer an accessibility setting that overrides it, so on many phones a visitor can still pinch. The tag is still a failure in every accessibility audit that tests it, and it is still the page telling the browser to stop people enlarging the text. For a firm whose pages carry disclosures, fee tables or risk statements in small type, that is the wrong instruction to be giving. Developer tools such as webhint and axe-core already flag it; it is less often explained to the people who own the words in that small print.
width=1024 or width=980, left over from a site designed before responsive layouts. In our emulation test width=1024 produced a 1024-pixel layout on a 390-pixel screen.width=1200 tag, Chrome applied the second and laid the page out 1200 pixels wide; reversed, it applied the device-width one. This checker reads the first tag's value, so with two it may be reporting the one a phone ignores. It fails the page on the count alone for that reason. Keep exactly one.width=device-width; initial-scale=1 is common. Chrome still applied it in our test but logged an error, "';' is not a valid key-value pair separator. Please use ',' instead." This checker accepts either separator, so it will not flag it; use commas.width=device width with a space, or device_width, is not recognised, so the page falls back to whatever the browser decides.Google retired its Mobile-Friendly Test, the test's API and the Search Console Mobile Usability report on 1 December 2023, and pointed site owners to Lighthouse instead. Many pages that rank for a mobile friendly test still link to a tool that no longer exists. Lighthouse's viewport audit, as web.dev documents it, looks for a viewport meta tag in the head, a content attribute on it, and width= inside that attribute. It is a presence check. The zoom question is asked in Lighthouse's accessibility section and in engines like axe-core, not in the viewport audit itself.
This checker is not a whole-page mobile test either, and it does not claim to be. It reads one tag, precisely. Text size, tap-target spacing, content wider than the screen and layout shifts all need the page rendered on a phone-sized screen, which Lighthouse and Chrome DevTools' device mode do. Use this to confirm the tag is right, and a render to confirm the layout that depends on it.
Phones with a notch or rounded corners draw a page inside a safe rectangle by default, leaving bands at the edges. Adding viewport-fit=cover lets the page fill the whole screen, and in exchange the stylesheet has to keep text and buttons clear of the notch using the env(safe-area-inset-top) family of CSS values. It is a design choice for full-bleed layouts, not a fix, and a site that adds it without the padding rules can put its navigation under the camera cut-out. This checker shows it in the tag's value and leaves it ungraded for that reason.
One tag, in the head, near the top: width=device-width, initial-scale=1, separated by a comma, with no user-scalable and no maximum-scale. Add viewport-fit=cover only if the design has been built for it. Then check again after any theme update, plugin install or tag-manager change, because those are how a second tag arrives.
Six things that are true of this tool, each one backed by a line in the code that runs it.
The request carries a URL and nothing else. There is no account, no session and no database behind the tool, so there is nothing for us to keep about you.
A presence check passes a tag that blocks zoom. This one splits the content value into its properties and reports the width, the starting scale, the zoom limit and how many viewport tags the page carries.
The tag is read by a fixed parser with fixed thresholds. No model reads it, so the same page gives the same answer every time.
The fetch and the missing-tag check are the ones Verand's deep crawl runs on every page of every customer site. The property read is added on top for this page, and the card says which is which.
No render, so no tag added by JavaScript and no verdict on the layout itself. Only the first tag's value is read. The card says so beside the result rather than in a footnote.
Each run is one page fetch with no paid render behind it, so it is never metered. The one limit is a courtesy to the sites being fetched: 20 checks a minute per visitor.
What the tag is, what a pass looks like, and the two properties to leave out.
A meta element in the page's head, named viewport, that tells mobile browsers how wide to lay the page out and how zoomed in to open it. Without it, phones lay the page out at a desktop width and shrink it to fit: in our test in Chrome's mobile emulation, a page with no tag was laid out 980 pixels wide on a 390-pixel screen. With width=device-width, the layout matches the screen and a responsive stylesheet's media queries work as designed.
Exactly one tag named viewport whose content is width=device-width, initial-scale=1, with no user-scalable=no and no maximum-scale of 1 or less. That passes every row this checker grades. Adding viewport-fit=cover does not change the verdict; it is shown in the value and left ungraded because it is a design choice rather than an error.
Google has not published the tag as a ranking factor, and this page will not claim it is one. What Google does document is mobile-first indexing: it crawls and indexes pages with a smartphone crawler, so the version of the page that counts is the one a phone gets. A page without the tag is laid out at desktop width on that phone, which is a poor page for the people Google sends, whatever the ranking effect.
No. Google retired the Mobile-Friendly Test, its API and the Search Console Mobile Usability report on 1 December 2023 and points site owners to Lighthouse. This checker is not a replacement mobile friendly checker: it reads the viewport tag and nothing else. For text size, tap targets and content wider than the screen, run Lighthouse or Chrome DevTools' device mode, which render the page.
No, neither. Both stop visitors enlarging the page, which fails the W3C's test rule for WCAG 1.4.4, Resize Text; that rule fails user-scalable=no and any maximum-scale below 2. Many modern mobile browsers override the limit, but the instruction is still wrong for anyone who needs larger text. If maximum-scale=1 was added to stop iPhones zooming into form fields, give inputs a font size of at least 16 pixels instead.
The browser picks one, and it may not be the one you expect. In our test in Chrome's mobile emulation, the later tag won: a device-width tag followed by a width=1200 tag gave a 1200-pixel layout. We did not test Safari. This checker counts every tag but reads only the first one's value, so it fails the page on the count alone. Find where the second comes from, usually a plugin or a tag manager, and remove it.
A correct viewport tag makes a page readable on a phone, not worth reading. Verand writes articles from your own expertise and credentials, so both Google and the AI assistants have something of yours to name. It then tracks where you rank and where ChatGPT, Gemini, Perplexity, Claude and Google's AI answers mention you, and gates every draft so a claim your regulator would not allow never publishes.
Content built to rank in
Google and get cited by
ChatGPT
Perplexity
Gemini
Claude, with every claim checked before it goes live.