Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

If html2canvas returns a blank or incomplete image, first verify that the target element exists and has finished rendering when capture starts. Then check the browser console and Network panel, classify what is missing, and investigate cross-origin images, unsupported CSS, iframe access, or canvas dimensions. html2canvas rebuilds an image from DOM and CSS; it does not take a native screenshot of the browser.

Start by identifying what “blank” means

Before changing options, inspect the output and compare it with the page. Different symptoms point to different causes:

  • The entire canvas is empty: check the target, timing, runtime errors, and canvas dimensions.
  • Text and layout appear, but some images do not: investigate failed image requests and cross-origin restrictions.
  • Only a particular component looks wrong: check its CSS, nested canvas content, or whether it lives in an iframe.
  • A long page is cut off or partly blank: check the capture dimensions and browser canvas limits.

This distinction matters because increasing a timeout cannot fix a CORS denial, and enabling cross-origin image loading cannot make an unsupported CSS effect render correctly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Confirm the target exists and is ready

html2canvas can only reconstruct what is present in the DOM it reads. Confirm that the selector matches the intended element, that the element is attached to the document, and that application rendering has put the expected content inside it before calling the library.

#1 Best Overall
Sale
Epson Workforce ES-50 Compact & Lightweight Mobile Document Scanner
  • PORTABLE SCANNER FOR USE ON-THE-GO — The fastest and lightest mobile single-sheet-fed compact document scanner in its class¹
  • QUICK DOCUMENT SCANNING ― This Epson ultra-fast scanner scans a single page as quickly as 5.5 seconds²; Windows and Mac compatible
  • VERSATILE PAPER HANDLING ― Portable scanner scans documents up to 8.5 x 72 in; Also easily digitizes receipts and ID cards to make accounting, bookkeeping, and organizing simpler
  • INTUITIVE, HIGH-SPEED SOFTWARE — Epson ScanSmart Software³ is a smart tool allowing you to easily scan, review, and save; Stay organized easily with the help of this Epson scanner
  • EASY SETUP — USB-powered connect to your computer for quick and simple scanning; No batteries or external power supply required to operate portable document scanner; Standard Connectivity: USB 2.0
const element = document.querySelector('#capture-area');

if (!element) {
  throw new Error('Capture target #capture-area was not found');
}

const canvas = await html2canvas(element);
document.body.appendChild(canvas);

For an application that renders asynchronously, call capture from the point in its lifecycle when the target is populated. There is no single readiness wait that suits every app: choose a condition that matches your framework and resource loading. A delay may help diagnose a race, but it cannot capture content that has not appeared in the DOM.

Also check whether the target is hidden, empty, or being replaced during capture. If the page changes the element between selecting it and rendering it, capture a stable element after the update has completed.

Turn on logging and inspect failed resources

The configuration reference lists logging as enabled by default for debugging. Keep the browser console open and inspect the Network panel while reproducing the issue. Look for exceptions and failed JavaScript, image, font, or other resource requests. A page that looks correct onscreen may still contain resources the reconstruction cannot load.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The documented imageTimeout default is 15,000 milliseconds. If images are genuinely slow, a longer wait may help; it will not resolve a server refusing cross-origin access or make unsupported page content render. Check the configuration for the version you have installed before relying on defaults: html2canvas configuration reference.

Rank #2
Sale
Brother DS-640 Compact Mobile Document Scanner, (Model: DS640)
  • FAST SPEEDS - Scans color and black and white documents a blazing speed up to 16ppm (1). Color scanning won’t slow you down as the color scan speed is the same as the black and white scan speed.
  • ULTRA COMPACT – At less than 1 foot in length and only about 1. 5lbs in weight you can fit this device virtually anywhere (a bag, a purse, even a pocket).
  • READY WHENEVER YOU ARE – The DS-640 mobile scanner is powered via an included micro USB 3. 0 cable allowing you to use it even where there is no outlet available. Plug it into you PC or laptop and you are ready to scan.
  • WORKS YOUR WAY – Use the Brother free iPrint&Scan desktop app for scanning to multiple “Scan-to” destinations like PC, Network, cloud services, Email and OCR. (2) Supports Windows, Mac and Linux and TWAIN/WIA for PC/ICA for Mac/SANE drivers. (3)
  • OPTIMIZE IMAGES AND TEXT – Automatic color detection/adjustment, image rotation (PC only), bleed through prevention/background removal, text enhancement, color drop to enhance scans. Software suite includes document management and OCR software. (4)
const canvas = await html2canvas(element, {
  logging: true,
  imageTimeout: 20000,
});

The timeout above is an example adjustment, not a universal recommended value. Use the Network panel to establish whether the relevant request is slow, failing, or blocked before raising it.

Fix missing cross-origin images without weakening canvas security

When remote images are missing, first verify that each image request succeeds. Then inspect the image server’s response headers. Set useCORS: true to request cross-origin images in CORS mode, but the remote server must still allow your page’s origin with an appropriate CORS response header.

const canvas = await html2canvas(element, {
  useCORS: true,
});

If you control the application infrastructure and the remote host does not grant access, a same-origin proxy may be an option. Configure the proxy setting only with a proxy you operate or otherwise trust, and ensure it is suitable for the resources your application needs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not treat allowTaint: true as a fix for an empty export. With its default value of false, html2canvas skips images that would taint the canvas. Allowing taint does not bypass browser security: a tainted canvas cannot be read or exported normally. A canvas already tainted by content drawn earlier can cause the same problem. See the project’s guidance on cross-origin images and canvas limits and its configuration reference.

Rank #3
Sale
Epson Workforce ES-400 II High-Speed Color Duplex Desktop Document Scanner
  • FAST DOCUMENT SCANNING — Document scanner with feeder allows you to speed through stacks with a 50-sheet Auto Document Feeder (ADF); Efficient office scanner to help you scan more productively
  • INTUITIVE, HIGH-SPEED SOFTWARE — Quickly scan with this desktop document scanner; Epson ScanSmart Software lets you easily preview scans, email files, upload to the cloud, and more; Plus, automatic file naming saves even more time
  • SEAMLESS INTEGRATION — Easily incorporate your data into most document management software with the included TWAIN driver; Office document scanner integrates seamlessly with business workflows
  • EASY SHARING — Duplex scanner allows you to scan straight to email or popular cloud storage2 services like Dropbox, Evernote, Google Drive, and OneDrive for simple storage and sharing
  • SIMPLE FILE MANAGEMENT — Scanner allows the creation of searchable PDFs with Optical Character Recognition (OCR) and convert scans to editable Word or Excel files effortlessly; Designed for home and office document scanning

Account for long pages and canvas size limits

For a target extending beyond the viewport, set the virtual window dimensions from the element’s scroll dimensions:

const canvas = await html2canvas(element, {
  windowWidth: element.scrollWidth,
  windowHeight: element.scrollHeight,
});

This gives the renderer dimensions that include the full target, but it cannot override browser canvas size or area constraints. The html2canvas FAQ notes that limits vary by browser and platform and that an over-limit canvas may be blank or partially rendered without an error. If only especially long captures fail, try capturing smaller sections and assembling them only if that fits your output requirements. Do not assume a single maximum dimension applies across browsers or devices.

Check the FAQ for its current, approximate browser guidance rather than treating any listed limit as a guarantee: html2canvas FAQ.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Isolate unsupported CSS, canvases, and iframe content

html2canvas traverses the DOM and implements supported CSS properties to reconstruct a rendering. It does not ask the browser for its already-composited pixels, and not every browser CSS feature is implemented. If one region is absent or visually different, temporarily simplify its styling and capture again. If the result changes, identify the effect or property that is not being reproduced.

Rank #4
Canon Canoscan Lide 300 Scanner (PDF, AUTOSCAN, Copy, Send)
  • Scanner type: Document
  • Connectivity technology: USB
  • With Auto Scan Mode, the scanner automatically detects what you're scanning
  • Digitize documents and images

Use onclone to adjust the cloned document for the capture without changing the live page. Use ignoreElements when it is appropriate to omit a problematic element. These are workarounds for a particular capture, not evidence that all CSS can be reproduced.

const canvas = await html2canvas(element, {
  onclone(clonedDocument) {
    const target = clonedDocument.querySelector('#capture-area');
    if (target) target.classList.add('screenshot-simplified');
  },
  ignoreElements(node) {
    return node.matches?.('.live-chat-widget') ?? false;
  },
});

Make sure any class added to the cloned document has corresponding styles available there. Adjust this example to the markup and styles in your application.

Same-origin iframe content can be accessed under browser origin rules. A cross-origin iframe cannot be read as though it were part of the parent document; sandboxed frames without allow-same-origin impose additional restrictions. Capture from an authorized, accessible context or use another capture method rather than trying to bypass those boundaries. Existing canvas elements may also be unreadable if they have already been tainted.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The project’s explanation of its operation and limitations describes the reconstruction model and origin constraints.

Best Value
Sale
ScanSnap iX2500 Wireless or USB High-Speed Document Scanner, Black
  • OUR MOST ADVANCED SCANSNAP. Large touchscreen, fast 45ppm double-sided scanning, 100-sheet document feeder, Wi-Fi and USB connectivity, automatic optimizations, and support for cloud services. Upgraded replacement for the discontinued iX1600
  • CUSTOMIZABLE. SHARABLE. Select personalized profiles from the touchscreen. Send to PC, Mac, mobile devices, and clouds. QUICK MENU lets you quickly scan-drag-drop to your favorite computer apps
  • STABLE WIRELESS OR USB CONNECTION. Built-in Wi-Fi 6 for the fastest and most secure scanning. Connect to smart devices or cloud services without a computer. USB-C connection also available
  • PHOTO AND DOCUMENT ORGANIZATION MADE EFFORTLESS. Easily manage, edit, and use scanned data from documents, receipts, photos, and business cards. Automatically optimize, name, and sort files
  • AVOIDS PAPER JAMS AND DAMAGE. Features a brake roller system to feed paper smoothly, a multi-feed sensor that detects pages stuck together, and skew detection to prevent paper damage and data loss
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Use the right capture method for the job

Keep html2canvas when a DOM-derived canvas is sufficient and the page uses content it can access and CSS it supports. If you need the browser’s actual composited pixels, use a capture mechanism designed for that context instead. For browser extensions, the FAQ points to native extension APIs such as chrome.tabs.captureVisibleTab() or browser.tabs.captureVisibleTab(). For server-side screenshots, it suggests Puppeteer or Playwright driving a headless browser. Check the current browser documentation and tool compatibility for your implementation.

html2canvas runs in the browser, not directly in Node.js: it relies on window, document, and computed styles. The project’s getting-started guide covers browser execution and compatibility. Choose based on where capture runs, what security boundaries apply, whether reconstructed output is accurate enough, and how large the requested image is.

Or skip the browser setup

For a server-side screenshot, ScreenshotNeo provides a one-request API that returns an image or PDF. It accepts a page URL and removes cookie banners, newsletter popups, and chat widgets before capture. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. Its MCP server exposes screenshot tools to AI agents, and every plan includes its features. See the ScreenshotNeo website and API documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" 
  -d access_key=YOUR_API_KEY 
  --data-urlencode url=https://stripe.com 
  -o shot.webp

Replace YOUR_API_KEY with your API key and the example URL with the page you want. The response is an image or PDF according to the request options. ScreenshotNeo’s free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up free for 1,000 screenshots a month, with no card.

Troubleshooting by symptom

Symptom Likely cause What to check or change
Entire output is blank Missing or wrong target, capture before render, runtime error, or canvas size constraint Check the selected element and its content at capture time; inspect console and Network; test a smaller target.
Only remote images are missing Failed request or server does not permit the page origin through CORS Inspect the request and response headers; use useCORS: true only when the server permits it, or use an appropriate same-origin proxy.
Export fails after allowing tainted content The canvas is not readable or exportable under browser security rules Do not rely on allowTaint: true to bypass security; remove or replace inaccessible content.
Long capture is cropped or partly blank Window dimensions do not cover the target or canvas constraints are exceeded Set window dimensions from scrollWidth and scrollHeight; split the capture if necessary.
One effect or component is wrong Unsupported or incompletely implemented CSS, tainted canvas, or inaccessible frame Simplify styles, inspect the cloned output, omit the element if acceptable, or capture through an accessible context.
Works locally but fails with remote assets Origin policy or production resource loading differs Inspect production requests and CORS headers; do not infer access from a local development setup.
Library fails in Node.js It expects browser globals and computed styles Run it in a browser, or use a browser automation tool such as Puppeteer or Playwright for server-side capture.

FAQ

Does html2canvas take a screenshot of exactly what the browser displays?

No. It reconstructs the page from DOM information and supported CSS rather than capturing the browser’s final pixels, so some appearance differences are expected.

Can a longer image timeout fix a CORS error?

No. A timeout can allow a slow resource more time to load, but permission to use a cross-origin image depends on the image server’s CORS response.

Can I use html2canvas in a Node.js script?

Not directly as a server-side screenshot library. It depends on browser objects and computed styles; use browser automation when the capture needs to run server-side.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why does my page look correct, but the exported file omit content?

The browser may display content that html2canvas cannot access or reconstruct, including cross-origin resources, iframe content, or unsupported styling. Inspect the specific missing region and its requests, origin, and CSS.

Quick Recap

Bestseller No. 4
Canon Canoscan Lide 300 Scanner (PDF, AUTOSCAN, Copy, Send)
Canon Canoscan Lide 300 Scanner (PDF, AUTOSCAN, Copy, Send)
Scanner type: Document; Connectivity technology: USB; With Auto Scan Mode, the scanner automatically detects what you're scanning
$75.00

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.