If you can’t scroll on a website, first find out whether the problem follows one site, one browser, or one way of scrolling. Try another input method and, if possible, another browser before changing settings. A page can intercept touch or wheel input, route a gesture into a nested panel, or simply be slow to respond; extensions and browser data can also affect how one site behaves. The right fix depends on which layer fails.
Quick checks: find where scrolling fails
- Reload once. Check whether the page is still loading or whether a dialog, menu, banner, or other overlay is open.
- Try another way to scroll. Use the keyboard (Page Down or Space), drag the scrollbar, or try a mouse wheel or touchpad. On a phone, test a different part of the page. If only one method fails, investigate that input method and browser before blaming the site.
- Check for a nested panel. If a modal, drawer, chat window, or embedded frame is open, try scrolling inside its content and then outside it. The gesture may be going to that region instead of the main page.
- Open the same page in another browser. If it fails in multiple browsers, the website is a more likely place to investigate. If it fails only in one browser, check that browser’s extensions, settings, and site data.
- Test extensions one at a time. Temporarily disable likely page-changing tools, such as ad blockers, privacy or script blockers, and appearance customizers. Reload after each change; re-enable extensions that do not affect the problem.
- Clear site data only if faster checks fail. This may sign you out of the site. If the problem persists across browsers, report the page and the steps that reproduce it to the site owner.
Record whether the failure is total, merely delayed or jerky, or causes the background page to move unexpectedly. Also note the input method and whether the page or a nested area was under the pointer or finger. Those details narrow the diagnosis far better than changing pointing-device brands at random.
Why a website may not scroll
Page code can intercept input
A site can use JavaScript event handlers to take control of touch or wheel input. A touch handler that calls preventDefault() can cancel the browser’s normal touch-panning behavior. That can be intentional for a specific interaction, but a handler applied too broadly can make ordinary page scrolling stop. Chrome’s guidance recommends expressing intended touch gestures with touch-action where possible, rather than relying on JavaScript cancellation: Chrome’s touch-scrolling guidance.
A wheel or touchpad gesture can also feel delayed if the browser must wait for a JavaScript handler to finish before it knows whether that handler will cancel scrolling. For a handler that only observes wheel input and does not need to cancel it, registering it as passive tells the browser it need not wait for a possible cancellation. Chrome’s 2019 article described an intervention for certain root-target wheel listeners in Chrome 73; that is historical, browser-specific context, not a guarantee about every current browser: Chrome’s wheel-scrolling article.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems#1 Best Overall
A nested panel, modal, or iframe receives the gesture
Pages can contain independently scrollable areas: for example, a dialog, drawer, chat panel, or iframe. If the pointer or finger is over one, the gesture may scroll that area rather than the document. At the inner area’s boundary, the gesture may stop there or pass to a parent container. Chrome calls the latter behavior scroll chaining; Firefox documents transfer between an iframe and its parent as scroll handoff. See Chrome’s explanation of scroll chaining and Firefox’s asynchronous panning and zooming documentation.
This explains two different symptoms: the main page may appear stuck because an inner panel is receiving input, or the page behind a modal may move when the modal reaches its edge. They are not the same defect and may need different fixes.
The browser or page is busy, or something changes how it behaves
JavaScript that occupies the main thread can make a page feel frozen or sluggish. Wheel, touchpad, touch, keyboard, and scrollbar input do not all exercise the same path, so one successful test does not prove that every method works. Microsoft’s 2017 web-scrolling primer provides architectural background, not a current guarantee for all browsers: Microsoft Edge’s scrolling primer.
Extensions that block scripts or modify a page, blocked content, saved site data, or browser settings can also change a page’s behavior. Mozilla recommends comparing browsers, testing extensions, and clearing site data as part of diagnosing pages that appear or behave incorrectly: Mozilla’s troubleshooting guidance (updated June 27, 2026). A browser-specific graphics or hardware-acceleration issue is another later check, not a reason to start by changing advanced settings.
Rank #2
Fixes for readers, in the order to try them
When only one input method fails
If keyboard scrolling works but a mouse wheel does not, or touch works while the touchpad does not, keep the site and browser constant and compare the input methods. Check that the pointer is not over a nested panel, then check relevant browser or device settings. A keyboard test may behave differently on a busy page, so repeat the comparison after the page settles.
When only one browser fails
- Disable likely extensions one at a time and reload the affected page after each change.
- Check whether JavaScript or site content is being blocked for that page. Restore the site’s normal permissions if you intentionally restricted them.
- If the issue remains, clear data for that site, keeping in mind that you may need to sign in again.
- Only then investigate browser-specific settings or graphics troubleshooting. Mozilla’s support guide covers these checks for Firefox; other browsers have their own settings and procedures.
When the same page fails in multiple browsers
Try the page’s own panels and controls, and note the exact URL, device, input method, and symptom. If the issue remains across browsers, send those details to the website owner. A site-specific report is more actionable than saying only that scrolling does not work.
How developers should diagnose a page that will not scroll
Identify the real scroll container
First determine which element is meant to scroll: the document, an app wrapper, a modal, an iframe, or a region with overflow: auto. In browser developer tools, inspect the elements under the pointer and their computed styles and scroll dimensions. Check whether html, body, or an ancestor has a constrained height or overflow: hidden. A dialog may set a scroll lock when it opens; verify that the lock is removed when the dialog closes. These are hypotheses to check in the affected page, not causes that can be assumed without inspection.
Audit handlers that can cancel scrolling
Search the page code for global wheel, mousewheel, touchstart, touchmove, and pointer handlers. Look for calls to preventDefault(), and confirm that each cancellation is required for the interaction. Scope handlers to the component that needs control instead of attaching them broadly. For an observation-only wheel listener, use a passive listener where appropriate:
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →element.addEventListener('wheel', onWheel, { passive: true });
A passive handler must not call preventDefault(). If the interaction genuinely needs cancellation, keep that behavior narrowly scoped and test it on the devices and browsers the page supports. Chrome’s historical root-listener intervention should not be treated as a universal rule for all targets and browsers.
Declare touch behavior narrowly
Use touch-action to declare the gestures an element permits, and apply it to the smallest element that needs the policy. For a horizontal carousel that should still allow vertical page panning and pinch zoom, Chrome gives pan-y pinch-zoom as an example. Avoid applying touch-action: none to the whole page: it disables browser scrolling and zooming within the affected element. Test Safari behavior separately if it is in scope; Chrome’s guidance notes differences in older or mobile Safari behavior.
Control boundary behavior only when it is intentional
Use overscroll-behavior when the desired behavior at a scroll boundary is clear, such as preventing a dialog’s content from scrolling the page behind it. It controls overscroll and scroll chaining; it cannot fix an accidentally locked document or a handler that cancels all input. Test both the panel at its boundary and the page around it on the affected browsers.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #4
Reproduce across input and container combinations
Test the actual reported combination instead of relying on one desktop check. Record whether the target is the top-level document, a nested region, or an iframe; whether the symptom is total failure, delay or jank, or unexpected background movement; and whether changing browsers or disabling extensions alters it. Include mouse wheel, touchpad, touch, keyboard, and scrollbar tests where relevant. Mozilla’s Firefox guidance summarizes the value of a browser comparison: testing the site in another browser helps determine whether a problem is Firefox-specific.
What historical browser figures do—and do not—show
Chrome for Developers reported in 2019 that 75% of wheel and mousewheel listeners on root targets (window, document, or body) did not specify a passive option, and more than 98% of those listeners did not call preventDefault(). The article said its metrics indicated that Chrome’s passive-by-default root-listener change could lead to unintended scrolling or zooming on less than 0.3% of pages. These figures describe that historical Chrome intervention and its measurements; they are not estimates of how common scrolling failures are today: Chrome for Developers.
Or skip the browser setup
If you need a screenshot to inspect a page’s visible state, ScreenshotNeo can return an image or PDF through one GET request. It can accept cookie or consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses identify the page verdict and billing status. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for AI agents using Claude, Cursor, or another MCP client.
Example cURL request (replace the URL with the page you want to inspect):
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options and response details. The service also supports full-page capture, selecting an element by CSS selector, device and viewport settings, retina scale, PDF settings, custom CSS or JavaScript, waiting conditions, request blocking, headers and cookies, timezone and geolocation, caching, signed image links, asynchronous jobs, bulk captures, and a usage API. These options help inspect a rendered page, but a screenshot alone does not identify why a reader’s browser cannot scroll.
The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Every feature is on every plan. Sign up for ScreenshotNeo’s free plan.
FAQ
Why can I scroll with the keyboard but not the mouse wheel?
Those input methods can follow different browser and page-code paths. Check for an overlay or nested scroll region under the pointer, compare another browser, and test extensions before treating it as a device fault.
Should I use touch-action: none to fix scrolling?
No. It disables browser scrolling and zooming within the element where it applies. Use a narrowly scoped touch policy that preserves the gestures the page should allow.
Does a screenshot show whether a page is scrollable?
A screenshot shows captured visual content, not the cause of a scrolling failure. Use it to inspect what the page rendered; diagnose input handling and scroll containers in the affected browser or page code.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

