What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Fix html2canvas mobile failures by matching the workaround to the symptom: reduce output dimensions or scale for blank and clipped canvases, resolve image CORS at the server or proxy for missing images, and verify CSS support when layout differs. html2canvas reconstructs an image from DOM and CSS information; it is not a native screenshot of the browser’s rendered pixels. That distinction, plus mobile canvas limits, is central to debugging.
First identify what failed
Before changing options, classify the result. A wholly blank or partially cut-off image points first to canvas dimensions or the render window. Missing remote images point to cross-origin permissions. Text, colors, or layout that differ from the page point to CSS support or viewport/media-query differences. These are different problems; changing one option rarely fixes all of them.
- Blank or truncated: inspect the target’s rendered size and output scale.
- Images absent: check whether the image server permits cross-origin use.
- Styling inaccurate: check the library’s support for the affected CSS property and the cloned viewport dimensions.
- Embedded content absent: determine whether it is in a cross-origin iframe or a canvas already tainted by cross-origin content.
The project FAQ describes browser canvas limits as a cause of empty or partial output, and notes that limits vary by browser and platform. In particular, iOS Safari capacity is device-dependent; there is no single current megapixel ceiling that can safely be applied to every iPhone or iPad. html2canvas FAQ
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 problemsFix blank or clipped output
1. Measure the target and estimate the output size
Measure the element’s rendered CSS width and height, then account for scale. A useful rough estimate of output pixel dimensions is CSS width × scale by CSS height × scale; their product is the approximate canvas pixel area. This is not a guaranteed safe-limit calculation: browser, device, memory pressure, and canvas implementation all matter. The scale option defaults to window.devicePixelRatio, which can make the output substantially larger than the CSS dimensions. Configuration reference
#1 Best Overall
- WORKS FOR iPhone 17e/16e/14/13/13 Pro 6.1 Inch Display Screen 0.33mm tempered glass screen protector.Featuring maximum protection from scratches, scrapes, and bumps.[Not for iPhone 16 6.1 inch, iPhone 13 mini 5.4 inch, iPhone 13 Pro Max/iPhone 14 Pro Max/iPhone 14 Plus 6.7 inch, iPhone 14 Pro 6.1 inch]
- Specialty:to enhance compatibility with most cases, the Tempered glass does not cover the entire screen. HD ultra-clear rounded glass for iPhone 17e/16e/14/13/13 Pro is 99.99% touch-screen accurate.
- 99.99% High-definition clear hydrophobic and oleophobic screen coating protects against sweat and oil residue from fingerprints.
- It is 100% brand new,Precise laser cut tempered glass, exquisitely polished,2.5D rounded edges.
- Online video installation instruction: Easiest Installation - removing dust and aligning it properly before actual installation,enjoy your screen as if it wasn't there.
2. Lower scale or capture a smaller target
Try a lower scale first, or capture only the relevant element or region rather than a long page. Lower scale reduces output pixel dimensions and can reduce memory demand, at the cost of sharpness. Cropping with x, y, width, and height can focus on a smaller area; it does not make an over-large full-page canvas safe if the resulting canvas still exceeds device limits. The official example demonstrates region cropping. Configuration reference Crop example
Example for a smaller output and a bounded capture region:
const target = document.querySelector("#report");
if (!target) {
throw new Error("Capture target #report was not found");
}
const canvas = await html2canvas(target, {
scale: 1,
x: 0,
y: 0,
width: Math.min(target.scrollWidth, 1200),
height: Math.min(target.scrollHeight, 1600)
});
document.body.appendChild(canvas);
This bounds the requested region, but it does not guarantee that a specific mobile browser can render it. If the clipped part matters, capture the content in smaller sections and combine or save those results through your own workflow rather than assuming one enormous canvas will work.
3. Increase the cloned render window only when the clone is too small
A different problem occurs when the cloned page’s render window is shorter or narrower than the element. The FAQ suggests matching windowWidth and windowHeight to the element’s scroll dimensions in this case. This changes the viewport used for rendering the clone and can change media-query results; it is not a universal fix for a canvas that exceeds device capacity.
Rank #2
- [Compatibility]: This tempered glass screen protector is compatible with the following models: Blu View 5 (Note: Not suitable for other models).
- [Included Tools]: Each screen protector comes with dust stickers and a cleaning kit, making it super easy to apply without bubbles and keeping your screen nice and clean.
- [Premium Material]: Made from high-quality tempered glass, it boasts excellent hardness to effectively reduce scratches. You’ll enjoy lightning-fast responsiveness and crystal-clear clarity.
- [Craftsmanship]: The tempered glass screen protector features a finely polished 2.5D rounded edge design, providing a smooth touch and a perfect fit for your phone.
- [Customer Support]: We offer quick and reliable after-sales support and service that you can trust.
const element = document.querySelector("#long-content");
if (!element) throw new Error("Missing #long-content");
const canvas = await html2canvas(element, {
windowWidth: element.scrollWidth,
windowHeight: element.scrollHeight,
scale: 1
});
Compare the result on the actual target devices, especially for iOS Safari. A workaround that succeeds on one phone does not establish a universal device limit or guarantee success on another. html2canvas FAQ
Fix missing images and other cross-origin content
Browsers restrict reading pixels from images loaded from another origin unless that resource is served with suitable cross-origin permissions. Setting useCORS: true asks html2canvas to attempt CORS-enabled image loading; it does not bypass the browser’s policy. The remote server must return appropriate Access-Control-Allow-Origin headers for the page’s origin (or otherwise permit it).
const canvas = await html2canvas(document.querySelector("#gallery"), {
useCORS: true
});
If you control the image host, configure it to allow the page’s origin and verify the response headers. If you do not control it, use a properly configured same-origin proxy that retrieves the image, or replace it with a same-origin asset. A proxy must be designed with access controls and safe URL handling; an unrestricted proxy can expose your server to abuse.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Do not treat allowTaint: true as a CORS fix. A tainted canvas cannot be read normally, so enabling taint does not grant permission to export its pixels. Check the configuration reference for the relevant options and the FAQ for origin-policy limitations.
Rank #3
- [Compatible Models] - 3 Pack Privacy Glass Screen Protector for the iPhone 17e/iPhone 16e/iPhone 14/iPhone 13/iPhone 13 Pro(6.1 inch). Includes 3 privacy screen protectors and a cleaning kit. *Two types of packaging boxes are randomly shipped.
- [Full Coverage Protection] - This screen protector offers edge-to-edge protection for your device, using military-grade explosion-proof glass. It is also compatible with most phone cases, the appropriate size ensures that the phone case won't squeeze the screen protector after installation, providing double protection for the edges of the phone.
- [High Privacy Protection] - The necessary choice for you in public places. Select the optimal anti-peeping angles for the anti-spy coating to balance privacy and visual comfort. Protect your personal privacy and sensitive information from being seen by people nearby who might peek. To better protect your phone, 3mm nano-scale ultra-thin aviation glass is chosen as the material, it also protects your eyes from harsh light, ensuring a softer visual effect.
- [Superior Quality] Made of high-quality tempered glass, free of bubble wrap, easy to install and no residue when disassembled. Maintain the original touch experience, with a high-definition and clear hydrophobic and oleophobic screen coating to prevent fingerprints, sweat and oil residue. High-hardness glass protects your screen from drops, impacts, scratches and breaks, providing ultimate protection for your phone.
- [Face ID Compatible] - Precise cutting combined with high-quality glass material supports the perfect use of the Face ID function, and it can also take high-pixel photos through the front camera.
What about iframes and existing canvases?
Same-origin iframe documents can be recursively rendered. A cross-origin iframe document cannot be accessed because of browser security restrictions, and html2canvas cannot bypass them. Likewise, an existing canvas tainted by cross-origin content cannot simply be read back into a clean image. In these cases, change the content’s origin/permissions or use a capture method with access in the relevant execution context; changing scale or viewport will not solve the security restriction. html2canvas documentation
Fix text, color, or layout differences
html2canvas builds a representation from DOM and style information and renders the properties it implements. It does not capture the browser’s final pixels directly. Its documentation warns that the output may not match the actual rendered representation, and explains that CSS properties need individual implementation. The project FAQ puts it plainly: “Every CSS property must be manually implemented to render correctly, so html2canvas will never have full CSS support.” html2canvas FAQ
- Identify the specific property or visual effect that differs: for example, a shadow, filter, blend mode, or text treatment.
- Check the supported-features reference for that property rather than assuming all browser CSS is reproduced. Supported features
- Reduce the page to a minimal reproduction containing the affected markup, styles, and assets. This helps separate unsupported CSS from unrelated mobile layout behavior.
- Check the viewport dimensions used for the clone.
windowWidthandwindowHeightcan change which media queries apply, so match them to the intended layout deliberately.
Some options address positioning rather than fidelity: scrollX and scrollY can affect fixed-position elements; x and y select a crop origin; and width and height set capture dimensions. None adds support for an unimplemented CSS property. See the configuration reference before combining them.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Use a focused diagnostic capture
For a repeatable bug report or local investigation, start with a small target and explicit options. The following example logs the requested and actual canvas dimensions, which helps distinguish a wrong target/viewport from a failure after rendering:
Rank #4
- Works For iPhone 14 Pro 2022 tempered glass screen protector and camera lens protector.Featuring maximum protection from scratches, scrapes, and bumps.[Not for iPhone 14 6.1 inch, iPhone 14 Plus/iPhone 14 Pro Max 6.7 inch]
- Night shooting function: specially designed iPhone 14 Pro 6.1 Inch display 2022.The camera lens protector adopts the new technology of "seamless" integration of augmented reality, with light transmittance and night shooting function, without the need to design the flash hole position, when the flash is turned on at night, the original quality of photos and videos can be restored.
- It is 100% brand new, precise laser cut tempered glass, exquisitely polished. 0.33mm ultra-thin tempered glass screen protector provides sensor protection, maintains the original response sensitivity and touch, bringing you a good touch experience.
- Easiest Installation - Please watch our installation video tutorial before installation.Removing dust and aligning it properly before actual installation,enjoy your screen as if it wasn't there.
- 99.99% High-definition clear hydrophobic and oleophobic screen coating protects against sweat and oil residue from fingerprints,enhance the visibility of the screen.
async function captureForDebug(selector) {
const element = document.querySelector(selector);
if (!element) throw new Error(`No element matches ${selector}`);
console.log("Target CSS/scroll size", {
clientWidth: element.clientWidth,
clientHeight: element.clientHeight,
scrollWidth: element.scrollWidth,
scrollHeight: element.scrollHeight,
devicePixelRatio: window.devicePixelRatio
});
const canvas = await html2canvas(element, {
scale: 1,
useCORS: true,
logging: true
});
console.log("Canvas pixel size", canvas.width, canvas.height);
document.body.appendChild(canvas);
return canvas;
}
captureForDebug("#capture-target").catch(console.error);
useCORS helps only where the remote server authorizes the request; logging is useful while diagnosing but can be removed from production. Keep the capture target small while isolating the cause, then add page content and options back one at a time. This is a diagnostic method, not evidence that the same configuration has been tested on every browser or device.
When html2canvas is the wrong capture method
The right alternative depends on where the screenshot must run. For a browser extension, the html2canvas FAQ recommends using the browser’s native extension screenshot API, which is more reliable for that use and is not subject to the same canvas size limits. For server-side screenshot generation, it points to browser automation tools such as Puppeteer or Playwright. These are different deployment models, not drop-in fixes for a script running in an ordinary mobile web page. html2canvas FAQ
If you need a screenshot generated by a browser workflow rather than DOM reconstruction, a screenshot API is another option. For output intended to represent a page as a browser-rendered screenshot, first confirm the service’s supported output and page behavior against your requirements.
Recommended Free Tools
Or skip the browser setup
For server-side website screenshots, ScreenshotNeo takes a URL in one GET request and returns PNG, JPEG, WebP, or PDF. Its clean-shot workflow accepts cookie/consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; those steps can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies the page verdict and billing status in X-Page-Verdict and X-Billed headers. It also has an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
Example cURL request (replace the URL with the page you want to capture):
Best Value
- Include 3 PCS Screen Protector, Tailored-fit to your device's screen, Maximum Strength.
- Made of Japan Hardnest Glass, High Scratch Resistance, Smooth and high touch responsive with Superb Oleophobic Coating.
- HIGH GRADE COMPONENTS: Mr.Shield Ballistic Glass screen protectors use the Silicone adhesives for viewing clarity and easy installation and removal.
- 99.99% HD clarity and touch accuracy.
- From scratches to high impact drops, you are protected with Mr.Shield HD Clear Glass.
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 the request options. The same request in Python and Node.js:
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
The free plan includes 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots; yearly billing gives two months free, and every feature is available on every plan. Sign up for 1,000 free screenshots a month, with no card.
Free tools Windows power users keep installed
One-click scans. No signup required.
Frequently Asked Questions
Can I use html2canvas to capture a cross-origin iframe?
No. A cross-origin iframe document is blocked by browser security restrictions; html2canvas cannot bypass that boundary.
Does html2canvas work in iOS Safari?
It can run there, but canvas capacity varies with browser, device, and conditions. Test on the target device and keep captures within practical dimensions.
Does lowering scale make a screenshot less sharp?
Yes. A lower scale reduces the output pixel dimensions and can reduce memory use, but fine details may look softer.
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.

