Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallIf html2canvas returns a blank or partly drawn image in Safari on iOS 11.2.1, check two different limits: whether an image has tainted the canvas, and whether the requested canvas is too large for the device. Fix image origins, CORS, or inline SVG loading when you see a security error. When there is no taint error, reduce the capture dimensions or render smaller sections. Updating html2canvas may also address a Safari data-URL tainting bug fixed in version 1.0.0-rc.1 on April 10, 2019.
First identify which failure you have
html2canvas recreates a page from the DOM and styles the browser can see; it does not take a screenshot by bypassing Safari’s rules. Safari is supported, but html2canvas cannot override browser content-policy restrictions. An image loaded from another origin, a CSS background, or an inline SVG can therefore cause a canvas security failure even when the page itself looks normal.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed) | $308.00 | Buy on Amazon |
| 2 |
|
Apple iPhone 16, 128GB, Pink - Unlocked (Renewed) | $599.99 | Buy on Amazon |
| 3 |
|
Apple iPhone 15, 128GB, Black - Unlocked (Renewed) | $410.00 | Buy on Amazon |
| 4 |
|
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed) | $262.00 | Buy on Amazon |
| 5 |
|
Apple iPhone 16e, 128GB, Black - Unlocked (Renewed) | $389.00 | Buy on Amazon |
Start with the browser console and the image dimensions. Treat the error message as a clue, not as a complete diagnosis: iOS Safari can also return blank or partial output when a canvas exceeds practical device limits without reporting a useful error.
| What you observe | Likely cause | First action |
|---|---|---|
SecurityError, “tainted canvas,” or “Unable to get image data” |
A cross-origin image or data URI is not safe to read back from the canvas. | Audit image sources, inline SVGs, and CORS loading. |
| Blank or partly rendered output with no security error | The canvas may be too large for Safari or the device’s available memory. | Measure width and height, lower scale, or split the capture. |
| Image is present but looks different from the page | A rendering or CSS compatibility difference rather than a canvas-read security failure. | Inspect computed styles and simplify unsupported or browser-specific effects. |
Fix tainted canvases and Safari data-URL images
Upgrade html2canvas carefully
The html2canvas changelog records a fix described as “safari data url taints” in version 1.0.0-rc.1, dated April 10, 2019. If your application uses an older build, upgrade to a version compatible with its framework and browser support requirements, then retest on the affected iOS Safari version. That release note identifies a relevant fix; it does not establish that upgrading alone resolves every canvas failure.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
- This phone is unlocked and compatible with any carrier of choice on GSM and CDMA networks (e.g. AT&T, T-Mobile, Sprint, Verizon, US Cellular, Cricket, Metro, Tracfone, Mint Mobile, etc.).
- Please check with your carrier to verify compatibility.
- The device does not come with headphones or a SIM card. It does include a generic (Mfi certified) charging cable.
- Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
Before changing a production dependency, check the version actually bundled into the deployed page, not just the version in a package manifest. Applications may ship a stale compiled bundle, use a CDN copy, or include a second copy through another dependency. Verify the installed and served version, rebuild and deploy, then rerun the same capture that failed.
Audit every image the captured element can paint
List all image sources used inside the captured region, including ordinary <img> elements, CSS background-image values, pseudo-elements such as ::before and ::after, and SVG content. A page can display a remote image successfully while the canvas remains unreadable: viewing an image and exporting pixels from a canvas are subject to different browser rules.
- Prefer same-origin image URLs where practical. They avoid a cross-origin dependency for the capture.
- For cross-origin images, the image server must return suitable CORS headers, and the image must be requested with the appropriate cross-origin loading behavior. Setting an option in html2canvas cannot make a server that rejects CORS readable.
- For an image element you control, set its cross-origin behavior before assigning or loading its source. Changing the attribute after the image has loaded may be too late for that request.
- Check every painted resource, not just the first visible image. A single unsuitable background or offscreen image within the capture can be the source of the security failure.
For example, configure a cross-origin image before setting its URL:
Rank #2
- 6.1" Super Retina XDR OLED, HDR10, Dolby Vision, 1000nits (typ), 2000nits (HBM), 2556x1179px at 460ppi, 3561mAh Battery
- 128GB 8GB RAM, Apple A18 (3nm), Hexa-core (2x4.04 GHz + 4x2.20 GHz), Apple GPU 5-core, 16‑core Neural Engine
- Rear camera: 48MP, f/1.6, wide + 12MP, f/2.2, ultrawide, Front Camera: 12MP, f/1.9, wide, iOS 18, upgradable to iOS 18.5
- 4G LTE: 1/2/3/4/5/7/8/12/13/14/17/18/19/20/25/26/28/29/30/32/34/38/39/40/41/42/48/53/66/71, 5G: n1/2/3/5/7/8/12/14/20/25/26/28/29/30/38/40/41/48/53/66/70/71/75/76/77/78/79 - Dual eSIM
- Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Sprint., Etc.
const image = new Image();
image.crossOrigin = 'anonymous';
image.onload = async () => {
document.querySelector('#preview').appendChild(image);
const canvas = await html2canvas(document.querySelector('#capture'));
document.querySelector('#output').src = canvas.toDataURL('image/png');
};
image.src = 'https://images.example.com/photo.jpg';
This pattern only works if the image host permits the cross-origin request with its response headers. Replace the example host and selectors with your own; it is not a workaround for a server that does not authorize CORS. If you cannot change the image host, consider serving an authorized same-origin copy or using a server-side proxy you control. Do not treat a proxy as permission to copy protected content.
Recommended Free Tools
Handle inline SVG data URIs explicitly
Inline SVG data URIs deserve separate attention on this legacy Safari target. The html2canvas project discussion for Safari on iOS 10.3–11.2 reports that escaped inline SVG data URIs can taint the canvas. Its pull-request discussion says that Safari in this range may need the crossorigin attribute on an image not only for base64 data URIs but for other data URIs too.
When SVG is encoded into a data URI, make sure its contents are URL-encoded or base64-encoded correctly; raw characters such as #, spaces, or markup delimiters can otherwise be interpreted incorrectly in the URI. If the SVG is loaded through an <img>, set the cross-origin attribute before its src and retest. The order matters because the browser’s image request behavior is selected when loading begins.
Rank #3
- 6.1inch Super Retina XDR display. Aluminum with color-infused glass back. Ring/Silent switch
- Dynamic Island. A magical way to interact with iPhone. A16 Bionic chip with 5-core GPU
- Advanced dual-camera system. 48MP Main | Ultra Wide. Super-high-resolution photos (24MP and 48MP). Next-generation portraits with Focus and Depth Control. 4X optical zoom range
- Emergency SOS via satellite. Crash Detection. Roadside Assistance via satellite
- Up to 26 hours video playback. USB C, Supports USB 2. Face ID
If you need to isolate the issue, temporarily replace the SVG with a small same-origin PNG. If the capture then exports, restore the SVG and test its encoding and loading path. This comparison helps distinguish a data-URI/SVG issue from canvas size or unrelated CSS. It does not prove that all other images are safe.
Fix blank or partial output caused by canvas size
If there is no taint-related error and origins appear clean, calculate the output dimensions before changing image settings. A capture’s effective pixel dimensions depend on the element or page dimensions and the scale used to render it. Raising scale for sharper output also increases the canvas dimensions and memory demand.
Free tools Windows power users keep installed
One-click scans. No signup required.
In an html2canvas GitHub issue discussion, a maintainer stated that iOS Safari has a maximum canvas area of 4,096 × 4,096 pixels. The official FAQ cautions that the effective limit is lower in practice and depends on device RAM; exceeding it may silently produce blank or partially rendered output. Treat 4,096 by 4,096 as a warning threshold for this legacy target, not a promise that every device can render a canvas of that size.
Rank #4
- This pre-owned product is not Apple certified, but has been professionally inspected, tested and cleaned by Amazon-qualified suppliers.
- There will be no visible cosmetic imperfections when held at an arm’s length.
- This product is eligible for a replacement or refund within 90 days of receipt if you are not satisfied.
- Product may come in generic Box.
- Measure the requested output. Record the rendered width and height after accounting for scale. The relevant canvas dimensions are pixels, not just the CSS size shown in the layout.
- Lower the scale or capture area. Reduce the requested output dimensions and retry. This trades some resolution or coverage for a smaller memory footprint.
- Render in sections when one canvas is still too large. Capture smaller page regions or tiles independently, then combine them where the output pipeline allows. Keep the sections small enough for the target devices rather than aiming at the stated maximum.
- Retest on the actual iOS Safari target. Memory availability varies by device and current workload. A render that succeeds on a newer desktop browser does not establish that it will work on iOS 11.2.1.
Tiling changes the implementation: you must define region boundaries, account for overlap where shadows or positioned content cross a boundary, and merge the results without gaps. It can preserve more total page coverage than shrinking a single capture, but it does not correct a tainted image. Resolve origin and size problems independently.
Check visual differences after the canvas succeeds
A successful export can still differ from Safari’s visible page. html2canvas reconstructs the image from browser-visible DOM and styles; it is not a pixel-for-pixel screenshot engine. If the image is no longer blank but gradients, filters, fonts, layout, or other effects look wrong, inspect computed styles in Safari and reduce unsupported or browser-specific effects in the captured region. Avoid treating every visual mismatch as evidence of a CORS problem.
A practical debugging sequence
- Reproduce the failure on iOS 11.2.1 Safari and save the exact console error, if any.
- Check the deployed html2canvas version and compare it with the Safari data-URL tainting fix recorded in 1.0.0-rc.1 on April 10, 2019.
- For a security error, inventory
<img>sources, CSS backgrounds, pseudo-elements, and inline SVG data URIs. Temporarily remove suspect assets one at a time. - For cross-origin assets, confirm both that the request uses the intended cross-origin behavior and that the server response permits it. Test an authorized same-origin replacement to isolate the server dependency.
- For blank or partial output without a taint error, measure the effective pixel dimensions and test a smaller scale or section.
- After each change, compare the exported image and console output on the target browser. Change one cause at a time so that a successful retry tells you what actually helped.
Common errors and what to change
| Symptom | Cause to check | Fix |
|---|---|---|
SecurityError when exporting or reading pixels |
At least one painted resource tainted the canvas. | Find the specific image or SVG; use a permitted same-origin resource or correct its CORS response and loading behavior. |
| Cross-origin image disappears in the capture | The remote host may not permit CORS, or the request may not have been configured appropriately before loading. | Check the response headers and set cross-origin behavior before assigning the image source; if you control neither, use an authorized alternative. |
| Inline SVG causes a failure on iOS 11.2.1 | Data URI encoding or Safari’s handling of the URI and image loading path. | URL-encode or base64-encode the SVG, set the attribute before loading when using an image element, and test a same-origin raster replacement to isolate it. |
| Blank or partial image without a security error | Canvas area or memory pressure. | Reduce width, height, or scale; split the page into smaller captures. |
| Capture works but style details differ | Browser rendering or CSS support rather than a canvas origin restriction. | Inspect Safari’s computed styles and simplify unsupported effects in the captured content. |
Or skip the browser setup
If your goal is a screenshot of a publicly reachable web page rather than exporting a particular in-page DOM element with html2canvas, ScreenshotNeo offers a website screenshot API. It is a different approach, not a fix for an html2canvas canvas you need to create inside your own page.
Best Value
- 6.1" Super Retina XDR OLED, HDR10, 800 nits (HBM), 1200 nits (peak), 2532x1170px at 460ppi, 4005mAh Battery
- 8GB RAM, Apple A18 6-core CPU (2 performance + 4 efficiency cores), Apple GPU 4-core, 16‑core Neural Engine
- Rear camera: 48MP, f/1.6, wide, Front Camera: 12MP, f/1.9, wide, iOS 18.3.1, upgradable to iOS 18.5
- Connectivity: Global 4G LTE, Sub-6 GHz 5G, LTE, Wi-Fi 6, Bluetooth 5.3, NFC, USB-C, Wireless Charging (7.5W). (does not have mmWave 5G or MagSafe or physical SIM card) - Dual eSIM Only
- Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Straight Talk., Etc.
One GET request can return a PNG, JPEG, WebP, or PDF. For example, save a WebP screenshot of a page with cURL:
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. ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents and MCP clients.
The Free plan includes 1,000 screenshots per month with no card required. Paid plans start at $5 for 3,000 screenshots; all features are available on every plan. Sign up for ScreenshotNeo’s free plan.
Frequently Asked Questions
Does this fix apply to current iOS Safari as well as iOS 11.2.1?
The cited canvas-limit and data-URI discussions address older iOS Safari behavior, especially iOS 10.3–11.2. They do not establish identical limits or behavior in current iOS releases.
Can html2canvas guarantee a successful capture after these changes?
No. The outcome depends on the deployed html2canvas build, image origins and encoding, captured styles, requested dimensions, and device memory.
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.




