Skip to main content

Python API

render() - Simple Conversion

The easiest way to convert HTML to image.

import html2png

html2png.render("page.html", "output.png")

Parameters

ParameterTypeDefaultDescription
input_sourcestrrequiredHTML file path, URL, or "-" for stdin
output_pathstr | PathrequiredOutput image file path
widthint1080Viewport width in pixels
heightint1440Viewport height in pixels
dprfloat3.0Device pixel ratio
browserstr | BrowserEngine"chromium"Browser engine
formatstr | ImageFormat"png"Output format (png/jpeg)
qualityintNoneJPEG quality 0-100
full_pageboolTrueCapture full page
timeoutint60000Navigation timeout in ms
headlessboolTrueRun browser in headless mode
wait_forstrNoneCSS selector to wait for
wait_strategystr | PageLoadStrategy"domcontentloaded"Page load strategy
zoomfloat1.0Page zoom level
configConfigNoneConfig object

Returns

bool - True if conversion succeeded, False otherwise

Examples

import html2png

# Basic usage
html2png.render("page.html", "output.png")

# Custom dimensions
html2png.render("page.html", "output.png", width=1920, height=1080)

# High DPI
html2png.render("page.html", "output.png", dpr=2.0)

# JPEG with quality
html2png.render("page.html", "output.jpg", format="jpeg", quality=90)

# From URL
html2png.render("https://example.com", "screenshot.png")

# With zoom
html2png.render("page.html", "output.png", zoom=1.5)

Renderer - Batch Processing

Reuse browser instance for multiple conversions.

with html2png.Renderer(width=1920, height=1080) as r:
r.render("page1.html", "out1.png")
r.render("page2.html", "out2.png")
r.render("https://example.com", "screenshot.png")

Constructor Parameters

Same as render() function parameters.

Methods

render(input_source, output_path, **kwargs)

Render HTML to image using the shared browser instance.

Additional kwargs override: format, quality, wait_for, timeout

Examples

import html2png

# Batch processing with shared browser
with html2png.Renderer(width=1920, height=1080, dpr=2.0) as r:
r.render("page1.html", "out1.png")
r.render("page2.html", "out2.png")
r.render("page3.html", "out3.png")

# Override format per render
with html2png.Renderer() as r:
r.render("page1.html", "out1.png")
r.render("page2.html", "out2.jpg", format="jpeg", quality=90)

Config - Configuration Object

Create reusable configuration.

config = html2png.Config(
width=1920,
height=1080,
dpr=2.0,
format="jpeg",
quality=90
)
html2png.render("page.html", "output.jpg", config=config)

Attributes

AttributeTypeDefault
widthint1080
heightint1440
dprfloat3.0
browserstr | BrowserEngine"chromium"
formatstr | ImageFormat"png"
qualityint | NoneNone
full_pageboolTrue
timeoutint60000
headlessboolTrue
wait_forstr | NoneNone
wait_strategystr | PageLoadStrategy"domcontentloaded"
zoomfloat1.0

Advanced Types

BrowserEngine

from html2png import BrowserEngine

BrowserEngine.CHROMIUM # "chromium"
BrowserEngine.FIREFOX # "firefox"
BrowserEngine.WEBKIT # "webkit"

ImageFormat

from html2png import ImageFormat

ImageFormat.PNG # "png"
ImageFormat.JPEG # "jpeg"

PageLoadStrategy

from html2png import PageLoadStrategy

PageLoadStrategy.COMMIT # "commit"
PageLoadStrategy.DOMCONTENTLOADED # "domcontentloaded"
PageLoadStrategy.LOAD # "load"
PageLoadStrategy.NETWORKIDLE # "networkidle"