Data study · October 20, 2026

What breaks when you load 1,000 popular websites on a phone

I loaded the homepages of 1,000 of the most-visited websites in a phone-sized Chrome (393×852, the size of an iPhone 16) running on a cloud server, with Shotlane's page check. It records what a person would notice: sideways scrolling and what causes it, a missing mobile viewport tag, text too small to read, JavaScript that crashes, and images that don't load. Every finding below showed up on two separate loads, and I checked the doubtful ones against their screenshots by hand.

1 in 4
showed a cloud browser a bot wall or held back their CSS and scripts (252 of 1,000)
3.2%
of mobile-ready homepages scroll sideways (21 of 657); 15 of them by 32px or less
12.4%
throw an uncaught JavaScript error while loading (83 of 671)

1. A quarter of the popular web is closed to cloud browsers

213 sites answered with a bot wall: a 403, a "Just a moment…" challenge, a captcha or a "press and hold" check. 39 more sent the HTML but refused the stylesheets, scripts or fonts, so the page rendered unstyled. 35 showed something other than the site (parked domains, consent-only gates, region blocks, maintenance pages) and 42 never finished loading. That left 671 sites to check.

Which service served the bot walls, identified from the response headers:

Cloudflare
74
Akamai
58
not identified
37
AWS
19
DataDome
13
Fastly
9
Imperva
2
Kasada
1

If you build AI agents that browse from a data center, plan for this: about one popular site in four will refuse your agent, whatever it is trying to do. Blocking is the site owner's choice. For agents, that means using a site's API or feeds where one exists, or running the browser on the user's own connection.

2. Sideways scrolling is mostly solved, and what's left is the old classics

Of the 657 homepages with a mobile viewport tag, 21 are wider than the screen, so the page moves sideways when you swipe. 15 of them overflow by 32px or less, a wobble rather than a broken page. The causes, labelled by hand from the elements the check found and the screenshots:

other
5
unclipped carousel
5
Bootstrap .row
5
fixed width
4
off-screen menu
2
SiteToo wide byCause
mail.ru2pxa hidden news tab sticks out
mp.weixin.qq.com577pxthe login page is a 970px desktop layout
archive.org57pxno single element found
www.dell.com321pxaccount and cart flyouts parked off-screen
www.aol.com20pxa grid column wider than the screen
www.uber.com198pxa card carousel whose track isn't clipped
www.elconfidencial.com57pxmenu links parked off-screen
sec.rajasthan.gov.in20px.row outside a .container
okdiario.com15pxthe section menu, a long horizontal list
canvas.umn.edu15px.row outside a .container
www.ninisite.com5pxthe carousel's next arrow
www.croxyproxy.com15pxan ad unit wider than its container
ma.afribaba.com4pxa truncated heading
linkmake.in30pxform fields 375px wide plus padding
tawk.to135pxa row of cards positioned past the edge
www.pagibigfundservices.com12px.row outside a .container
q.utoronto.ca13pxheader, main and aside shifted by a margin
abcnews.com4pxa story carousel
ibb.co5pxa rotated pricing ribbon
www.citi.com2px.row outside a .container
tradingeconomics.com18px.row outside a .container

How to fix the common ones. A Bootstrap .row has negative side margins that only a .container (or .container-fluid) parent cancels, so a row placed directly in the page sticks out by 12–15px. A carousel or horizontal menu needs overflow: hidden (or overflow-x: clip) on its own wrapper. And overflow-x: hidden on body alone doesn't fix overflow on phones: mobile Chrome still lets you pan to the hidden part. Put it on both html and body, or better, on a wrapper around the content.

3. 14 sites still have no mobile viewport tag

Without <meta name="viewport" content="width=device-width, initial-scale=1">, phones lay the page out 980px wide and shrink it to fit, so text shows at about 40% of its intended size. These sites still do that:

www.ncbi.nlm.nih.gov, www.nhc.noaa.gov, fast.com, www.dafont.com, m.tabor.ru, skyward.iscorp.com, www.rakuten-sec.co.jp, www.tjk.org, goal7.co, www.choiceadvantage.com, www.minhngoc.net.vn, www.orange.fr, cdn-f.adsmoloco.com, app.powerbi.com

They include the NIH's National Center for Biotechnology Information (home of PubMed), the National Hurricane Center, Netflix's fast.com speed test, Orange's French homepage and Microsoft Power BI's sign-in page.

4. React hydration fails on 10 big sites

React apps render HTML on the server, then the browser "hydrates" it into a live page. When the two renders disagree, React logs a minified error (#418, #421, #423 or #425), throws the server's work away and rebuilds the page in the browser. Visitors then wait longer for an interactive page, and on a phone that wait is noticeable. These sites failed hydration on both loads:

fortune.com, kakuyomu.jp, wise.com, www.aol.com, www.cnnbrasil.com.br, www.coursera.org, www.instacart.com, www.jio.com, www.newsweek.com, www.spotify.com

Seven of them (Spotify, Coursera, Wise, Instacart, Fortune, Newsweek and AOL) failed again on a third load set to New York time, so the browser's timezone isn't the cause. The usual causes: dates and times formatted differently on the server and in the browser, locale-dependent numbers, random IDs, and code that reads window or localStorage while rendering. My browser was in Germany with an English locale, the same as many real visitors. samsclub.com failed on two loads and then passed four times in a row, so it isn't listed.

5. Chrome is removing the Topics API, and ad code on 9 sites still calls it

Google is retiring its Privacy Sandbox Topics API: it was deprecated in Chrome 144, and Chrome is removing it in stages (intent to deprecate and remove). In Chromium 156, which I tested with, it's already gone, and calling it throws. On these sites, ad code calls document.browsingTopics() without checking that it exists, and the promise rejection goes uncaught:

az24.vn, deadline.com, dnd5e.wikidot.com, variety.com, www.billboard.com, www.hollywoodreporter.com, www.ojogodobicho.com, www.vlr.gg, xsmn.mobi

I traced each error's stack to the script that made the call: BlogHer Ads on Variety, Billboard, Deadline and The Hollywood Reporter; NitroPay on dnd5e.wikidot.com and vlr.gg; AnyMind on az24.vn and xsmn.mobi; and The Moneytizer on ojogodobicho.com. The site owners didn't write this code, and they'll get the errors anyway. The error won't hurt readers much, but it fills error monitoring with noise and shows the ad code isn't checking for the API. As the rollout reaches more Chrome users, they'll get it too. The fix is a feature check ('browsingTopics' in document) plus a .catch(), or an update to the ad library.

6. Smaller findings

  • Small text. On 19 sites (2.8%), more than 40% of the text is under 12px, the threshold Lighthouse uses. This counts every character on the page, footers and fine print included. The shopping grids of m.shein.com and trendyol.com are clear cases. Others: imgsrc.ru (100%), thenkiri.com (81%), m.shein.com (79%), m.klikbca.com (79%), www.primevideo.com (78%), www.windy.com (71%), my.medu.ir (68%), czbooks.net (66%).
  • Broken images. 8 sites showed a visible image that failed to load on both loads: www.cdc.gov, www.usps.com, skyward.iscorp.com, www.indianrail.gov.in, tiktokio.com, all.accor.com, www.capitalone.com, client.schwab.com. Tracking pixels and hidden images don't count.
  • Everything else. 83 sites threw at least one uncaught JavaScript error on the first load. Besides hydration and Topics, the most common were scripts loading before jQuery ($ is not defined) and ad and recommendation widgets failing.
  • Clean pages. 535 of 671 sites (79.7%) passed every check.

Every site

Sorted by Tranco rank, showing the sites with a finding first; use the buttons for the rest. "Blocked" means a bot wall or something other than the site; "assets withheld" means the page loaded but its CSS, scripts or fonts were refused.

RankSiteResultFindings
14mail.ruchecked scrolls sideways (2px)
74www.spotify.comchecked React hydration failure
86mp.weixin.qq.comchecked scrolls sideways (577px)
140www.ncbi.nlm.nih.govchecked no viewport tag
148archive.orgchecked scrolls sideways (57px)
355www.cdc.govchecked broken image
356www.dell.comchecked scrolls sideways (321px)
437www.aol.comchecked scrolls sideways (20px); React hydration failure
490m.shein.comchecked 79% small text
495www.nhc.noaa.govchecked scrolls sideways (10px); no viewport tag
562fast.comchecked no viewport tag
677www.primevideo.comchecked 78% small text
737www.uber.comchecked scrolls sideways (198px)
837www.usps.comchecked broken image
977www.trendyol.comchecked 52% small text
1058wise.comchecked React hydration failure
1067www.t-mobile.comchecked 56% small text
1172www.dafont.comchecked no viewport tag
1183www.itmedia.co.jpchecked 42% small text
1196www.elconfidencial.comchecked scrolls sideways (57px)
1210www.coursera.orgchecked React hydration failure
1274m.tabor.ruchecked no viewport tag
1303sec.rajasthan.gov.inchecked scrolls sideways (20px)
1325fortune.comchecked React hydration failure
1346suumo.jpchecked 44% small text
1385www.sportybet.comchecked 49% small text
1394okdiario.comchecked scrolls sideways (15px)
1396canvas.umn.educhecked scrolls sideways (15px)
1399skyward.iscorp.comchecked no viewport tag; broken image
1453www.ninisite.comchecked scrolls sideways (5px)
1533www.indianrail.gov.inchecked broken image
1545www.rakuten-sec.co.jpchecked scrolls sideways (300px); no viewport tag
1546kakuyomu.jpchecked React hydration failure
1555www.croxyproxy.comchecked scrolls sideways (15px)
1572czbooks.netchecked 66% small text
1575www.tjk.orgchecked no viewport tag
1586m.autoplius.ltchecked 47% small text
1622my.medu.irchecked 68% small text
1626imgsrc.ruchecked 100% small text
1627www.football.comchecked 61% small text
1645ma.afribaba.comchecked scrolls sideways (4px); 42% small text
1678goal7.cochecked scrolls sideways (41px); no viewport tag
1693sportfilm800.comchecked 54% small text
1699www.choiceadvantage.comchecked no viewport tag
1701www.ojogodobicho.comchecked calls removed Topics API
1704xsmn.mobichecked calls removed Topics API
1710www.minhngoc.net.vnchecked scrolls sideways (70px); no viewport tag
1733az24.vnchecked calls removed Topics API
1736linkmake.inchecked scrolls sideways (30px)
1785www.orange.frchecked no viewport tag
1800tawk.tochecked scrolls sideways (135px)
1802www.newsweek.comchecked React hydration failure
1969www.vlr.ggchecked 47% small text; calls removed Topics API
1983m.klikbca.comchecked 79% small text
2037tiktokio.comchecked broken image
2069www.pagibigfundservices.comchecked scrolls sideways (12px)
2079thenkiri.comchecked 81% small text
2225cdn-f.adsmoloco.comchecked no viewport tag
2228www.windy.comchecked 71% small text
2273variety.comchecked calls removed Topics API
2352q.utoronto.cachecked scrolls sideways (13px)
2437www.instacart.comchecked React hydration failure
2441abcnews.comchecked scrolls sideways (4px)
2575ibb.cochecked scrolls sideways (5px)
2585www.hollywoodreporter.comchecked calls removed Topics API
2610app.powerbi.comchecked no viewport tag
2707all.accor.comchecked broken image
2812www.capitalone.comchecked broken image
2892client.schwab.comchecked broken image
3162www.cnnbrasil.com.brchecked React hydration failure
3170www.citi.comchecked scrolls sideways (2px)
3265www.billboard.comchecked calls removed Topics API
3296tradingeconomics.comchecked scrolls sideways (18px)
3430www.jio.comchecked React hydration failure
3446deadline.comchecked calls removed Topics API
3471studio.code.orgchecked 46% small text
3484dnd5e.wikidot.comchecked calls removed Topics API

Method and limits

  • Sites. Domains from the Tranco top list (October 19, 2026) that also have an origin in the Chrome UX Report's top 10,000 (crux-top-lists), so every site is both popular and visited by real Chrome users. One origin per brand (google.de and google.com count once); adult and malware domains removed using Cloudflare's 1.1.1.3 family resolver; file and CDN hosts removed. The first 1,000 in Tranco order.
  • Browser. Shotlane's /v1/check with devices=iphone: Chromium 156 in mobile mode at 393×852, English locale, run from a data center in Germany on October 20, 2026. Cookie banners are hidden before measuring, as the check does by default. Only homepages.
  • Two loads. Every site with a finding was loaded a second time, and only findings seen both times are reported. 2 small text, 2 broken images, 4 hydration, 1 topics finding(s) didn't hold up and aren't counted. The overall JavaScript error rate is from the first load.
  • Exclusions checked by hand. I read every short or suspicious page title for block pages in any language, looked at the screenshot of every page without a title (10 of 11 were walls or blank) and every page wider than the screen. That's how I found Zillow's "press and hold" overlay, which sits under a normal title, and three sites that rendered without their CSS. Overlay walls like Zillow's can still hide under a normal title elsewhere.
  • Sideways scrolling counts when the page is wider than the screen and a person could pan to the extra width. Content clipped by overflow: hidden on html and body, or on a wrapper, doesn't count.
  • Vendors come from response headers and cookies (for example cf-ray, AkamaiGHost, x-datadome), fetched again from the same server. A site served by one CDN may block with another product.

Raw data: mobile-2026-10.json (CC BY 4.0: reuse it with a link back).

Run the same check on your site

Try the free mobile-friendly test on one page. For your own pipeline, one API call renders your page on phone, tablet and desktop and returns the problems in plain language, next to the screenshots. Free accounts get 100 checks a month; the GitHub Action runs it on every preview deploy.

Test a page free See /v1/check