Mobile-friendly test: see your page at five widths and what breaks
A free mobile-friendly test with screenshots at five widths and the element that breaks each layout, plus a Content-Security-Policy built from what your page really loads.
- Free, no account
- Results in under a minute
- 5 widths from 360 to 1440 px
Example result:example-shop.hr
WordPress 6.8Sample shop · homepage · mobile Chrome · the same check you get for your own site
Detected technology
- WordPress 6.8
- WooCommerce
- Elementor
- jQuery 1.12.4
- LiteSpeed
Your page at five widths
4 of 5 scroll sideways
360 pxSmall phone 864 px too wide14 small targets
414 pxLarge phone 810 px too wide15 small targets
768 pxTablet 456 px too wide15 small targets
1024 pxSmall laptop 200 px too wide7 small targets
1440 pxDesktop fits7 small targets
- 360 px: img[src*="hero-large.png"] (864 px)
- 414 px: img[src*="hero-large.png"] (810 px)
- 768 px: img[src*="hero-large.png"] (456 px)
- 1024 px: img[src*="hero-large.png"] (200 px)
Content-Security-Policy, built from this page
start in report-only modedefault-src 'self'; script-src 'self' 'sha256-DMSIJQXbuKuQ7nc/7yDTSFiTs7VlKqukpfaftGWQ+Ls='; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'
- 1 inline script is allowed by hash. If you change it, the hash changes: regenerate the policy or switch to a nonce set by your server.
- Built from one page load. Scripts that load on click, on other pages or for logged-in users are not in it, so deploy it as Content-Security-Policy-Report-Only first and watch the reports for a week.
What we found
Show 3 passed checks
Fix these first
From the example above. Check your own site to get the fixes that apply to it.
Warning: Content-Security-Policy header is missing
A CSP blocks most cross-site scripting attacks by listing where scripts may load from.
How to fix it: Start in report-only mode with Content-Security-Policy-Report-Only to see what would break.Warning: Other sites can embed this page in a frame
A site that loads your page in an invisible frame can trick visitors into clicking your buttons (clickjacking), for example "confirm order" or "delete account".
How to fix it: Add frame-ancestors 'self' to your Content-Security-Policy, or send X-Frame-Options: SAMEORIGIN.Warning: The page scrolls sideways on screens up to 1024 px wide
When a page is wider than the phone, visitors have to pan left and right to read it, and Google counts it as not mobile-friendly.
How to fix it: Find the element named in the technical detail and give it max-width:100% instead of a fixed width.
What the mobile-friendly test checks
Five real renders in Chromium, plus the headers and inline code that decide your CSP.
Sideways scrolling
Loads the page at five widths from 360 to 1440 px and flags any that scroll sideways.
Viewport meta tag
Checks phones display the page at their own width, which matters because Google ranks the mobile version.
Zoom on phones
Checks visitors can pinch to zoom the page on their phone to read small text.
Tap target size
Checks links and buttons are at least 24×24 px, so visitors don't mis-tap on phones.
Oversized images
Finds images served at more than twice their displayed size, which wastes visitors' data.
Content-Security-Policy header
Checks for the header that limits where scripts may load from, blocking most injected scripts.
Inline and wildcard scripts in CSP
Checks your Content-Security-Policy doesn't still allow inline or wildcard scripts that weaken it.
Frame embedding protection
Checks other sites can't load your page in a hidden frame to trick visitors into clicking.
Mixed content
Finds files loaded over http:// on an HTTPS page, which browsers block or mark as not secure.
Show 5 more checks
Oversized images
Finds images served at more than twice their displayed size, which wastes visitors' data.
Content-Security-Policy header
Checks for the header that limits where scripts may load from, blocking most injected scripts.
Inline and wildcard scripts in CSP
Checks your Content-Security-Policy doesn't still allow inline or wildcard scripts that weaken it.
Frame embedding protection
Checks other sites can't load your page in a hidden frame to trick visitors into clicking.
Mixed content
Finds files loaded over http:// on an HTTPS page, which browsers block or mark as not secure.
How the mobile-friendly test and CSP generator work
Render at five widths
The page loads in Chromium once, then is resized to 360, 414, 768, 1024 and 1440 px. At each width we take a screenshot and measure the layout.
Find what breaks
We look for anything wider than the screen, text smaller than 12 px and tap targets smaller than 24 by 24 px, and name the elements responsible.
Build the CSP
Every script, style, image, font, frame and connection the page loaded is grouped by origin, inline scripts are hashed, and the result becomes a policy to start from.
Resizing one loaded page is close to, but not the same as, loading it on each device. The CSP covers one page load; test it in report-only mode before you enforce it.
Mobile-friendly test questions
Is Google's Mobile-Friendly Test still available?
No. Google retired the Mobile-Friendly Test, its API and the Mobile Usability report in Search Console on 1 December 2023, and points to Lighthouse instead. This tool is a free alternative for the same question: it renders your page at five widths from 360 to 1440 px and checks the viewport tag, zoom, sideways scrolling, text under 12 px and tap targets under 24 px.
How do I test if my website is mobile friendly?
Enter the address above. The page loads once in Chromium and is resized to 360, 414, 768, 1024 and 1440 px, with a screenshot at each width. Any width where the page scrolls sideways, text is too small or tap targets are too close is named with the element responsible. Also open the page on a real phone, because a resized browser is close but not identical.
Does mobile-friendliness affect Google rankings?
Yes, indirectly and strongly. Google uses mobile-first indexing, so it reads and ranks the mobile version of your page; text or links missing on mobile are missing for Google. Pages that are hard to use on a phone also lose visitors quickly. There is no separate mobile-friendly label any more, so a page simply has to work on small screens.
Why does my page scroll sideways on phones?
Almost always one element with a fixed width wider than the phone: a table, an image, an embed or a wide banner. The check names the element that sticks out at each width. Give it max-width: 100%, or wrap tables in a box with overflow-x: auto, and make sure the page has a viewport meta tag with width=device-width.
How do I test a Content-Security-Policy without breaking my site?
Send it as Content-Security-Policy-Report-Only first. The browser then reports every resource the policy would block, in the console and to a report endpoint if you set one, but blocks nothing. Browse your key pages, including forms and checkout, adjust the policy until no reports appear for a week or two, then rename the header to Content-Security-Policy.
How do I use the generated Content-Security-Policy?
Send it first as a Content-Security-Policy-Report-Only header. Browsers then report what the policy would block without blocking anything. Watch for a week, add the sources you missed, such as scripts on other pages or for logged-in users, and only then switch to the real header. On WordPress use a security plugin or the server config; on Cloudflare, a Transform Rule.
Why are inline scripts listed with hashes?
A CSP blocks inline scripts unless you allow them. A sha256 hash allows exactly that script and nothing else, which is far safer than unsafe-inline. Change one character of the script and the hash stops matching, so regenerate the policy after edits, or switch to nonces if your server can add a fresh one to every response.
Related free tools
All 59 tools →Free, funded by the people who use it
No account, no paid plan. Donations keep it running.