puppeteer-renderer alternatives

More input modes, streaming, and a built-in UI.

TL;DR: puppeteer-renderer is a minimal self-hosted service — give it a URL, get back a screenshot or PDF. It does not accept HTML snippets or file uploads. Openkova covers those cases and adds depth-based URL crawling, SSE progress streaming, and a web UI — with the same MIT license and Docker deployment.

What puppeteer-renderer is

puppeteer-renderer (by zenato) is an open-source Node.js service that wraps Puppeteer in a small HTTP server. It exposes three endpoints:

All three also accept POST with a JSON body for more complex options (viewport, headers, cookies, wait conditions). It is actively maintained — v4.0.1 was released in December 2024 — and ships a Dockerfile for easy deployment.

For simple URL-to-screenshot use cases, puppeteer-renderer works well. Its limitations appear when you need to render HTML you wrote yourself, crawl multiple pages in a single call, or stream progress to a client.

Where puppeteer-renderer falls short

Comparison

Featurepuppeteer-rendererOpenkova
Captures URLs
Captures HTML snippets
Captures HTML file uploads
Depth-based URL crawling✓ depth 1–2
SSE progress streaming
PDF output
Rendered HTML output
PNG / JPEG / WebP output
Web UI
Session gallery
Docker support
Self-hosted
LicenseMITMIT
CostFreeFree

Note: puppeteer-renderer can return fully-rendered HTML — Openkova does not support that output mode. For screenshots and PDFs, both tools are equivalent.

Getting started with Openkova

git clone https://github.com/scnix-git/openkova
docker compose up

Render an HTML snippet directly — no URL needed:

curl -N -X POST http://localhost:3000/api/convert/snippet \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1 style=\"font-family:sans-serif\">Hello</h1>"}'

Or crawl a URL and its sub-pages in one call:

curl -N -X POST http://localhost:3000/api/convert/url \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "depth": 2}'

See the API reference for the full endpoint list and SSE event format, or read how to deploy Openkova with Docker.

Frequently asked questions

What is puppeteer-renderer?

An open-source Docker service that converts URLs to screenshots, PDFs, or rendered HTML via a simple REST API. Actively maintained by zenato on GitHub.

Can puppeteer-renderer convert an HTML snippet to an image?

No — it requires a URL. To render raw HTML, you would need to serve it first. Openkova's POST /api/convert/snippet accepts an HTML string directly with no hosting step.

Does puppeteer-renderer support SSE streaming?

No. It returns results as a synchronous HTTP response. Openkova streams progress events via SSE, useful for long crawls or agent workflows.

What is the main difference between puppeteer-renderer and Openkova?

puppeteer-renderer is minimal and focused: URL in, screenshot/PDF/HTML out. Openkova is broader: three input modes (URL, snippet, file), depth crawling, SSE streaming, and a web UI — and now matches on PNG, JPEG, WebP, and PDF output. puppeteer-renderer's unique advantage is returning rendered HTML. Both are MIT-licensed and Docker-deployable.

Also compare: Urlbox alternatives, html2canvas alternatives, and wkhtmltopdf alternatives.