Next generation JavaScript screenshot tool.
html2canvas-pro is a fork of niklasvh/html2canvas that includes various fixes and new features. It offers several advantages over the original html2canvas:
- Color functions
color()(incl. relative colors),lab(),lch(),oklab(),oklch() background-clip: textsupportmix-blend-modesupportobject-fitsupport for<img/>- CSS
clip-pathsupport (inset, circle, ellipse, polygon, path) - CSS
writing-modesupport (horizontal-tb, vertical-rl, vertical-lr) - Native
drop-shadow()filter rendering via the canvas shadow API - Image smoothing control — CSS
image-renderingproperty andimageSmoothing/imageSmoothingQualityoptions - Security validation — Built-in input validation (XSS/SSRF protection)
- Performance monitoring — Built-in performance measurement API
- Progress & error callbacks —
onProgress/onErroroptions andAbortSignalcancellation - Performance optimizations — deferred CSS parsing and LRU caches for gradients & CSS parsing
- Various bug fixes from the changelog
If you found this helpful, don't forget to leave a star 🌟.
npm install html2canvas-pro
pnpm add html2canvas-pro
yarn add html2canvas-proimport html2canvas from 'html2canvas-pro';To render an element with html2canvas-pro with some (optional) options, simply call html2canvas(element, options);
html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});devicePixelRatio.
// If you need exact pixel dimensions (e.g., for a specific file size):
html2canvas(element, {
width: 1920,
height: 1080,
scale: 1 // Set scale to 1 for exact dimensions
}).then(canvas => {
// Canvas will be exactly 1920×1080 pixels
const dataURL = canvas.toDataURL('image/png');
});See the Configuration Guide for more details.
If you'd like to add a feature, feel free to submit a PR.
Interested in becoming a maintainer? Open an issue or reach out to @yorickshan.
