Open Source Screenshot API: All Options Compared (2026)
What “open source” means for a screenshot API
The term “open source” is applied loosely in the developer tools space. Before comparing options, it is worth being precise about what each licence actually permits:
- OSI-approved open source (e.g. MIT, Apache 2.0) — source is public, you can use it for any purpose including commercial, modify it, and self-host at any scale without a licence fee
- Source-available (e.g. BSL, proprietary “free tier” licences) — source is visible but commercial use or certain scale thresholds require a paid licence
- Abandonware — MIT-licensed but no longer maintained; security vulnerabilities go unpatched
The distinction matters: a source-available tool with a commercial licence is not open source in the meaningful sense — you cannot scale it freely without paying.
The complete list of options
1. Openkova — MIT, actively maintained
Openkova is a Next.js-based screenshot API built on Puppeteer and headless Chromium. It is MIT-licensed, Docker-deployable, and accepts HTML snippets, file uploads, URLs, and depth-based crawl jobs.
- Licence: MIT — unrestricted commercial use, no licence fees at any scale
- Rendering engine: Puppeteer + headless Chromium (same as Chrome)
- Input modes: HTML snippet, .html file upload, URL, URL crawl
- Output formats: PNG, JPEG, WebP, PDF
- SSE streaming: Yes — real-time progress for batch jobs
- Packages:
@openkova/core(Node.js library — powers the server and CLI),@openkova/cli,@openkova/mcp - Docker: Official image, full Compose setup
- Last updated: June 2026 — actively maintained
- GitHub stars: Growing
Openkova is the only option on this list that is both OSI-approved open source and actively maintained with modern features. See the screenshot API overview for full documentation.
2. Browserless — source-available, commercial licence required
Browserless provides a Docker image and API for running headless Chrome remotely. The source is published on GitHub, but the licence is commercial — unrestricted self-hosting requires a paid plan.
- Licence: Business Source Licence (BSL) — not OSI-approved open source; commercial use above the free tier requires a paid licence
- Rendering engine: Chromium via CDP (Puppeteer and Playwright compatible)
- Input modes: URL via CDP scripts; no native HTML snippet endpoint
- Output formats: PNG, PDF (via scripts)
- Docker: Yes, with licence key for full features
- Cloud pricing: $25/mo Nano → $350+/mo Scale
- Last updated: Actively maintained
Browserless is well-suited for full CDP browser automation — running arbitrary Puppeteer/Playwright scripts remotely. It is not a good fit if you need HTML snippet input, want zero licensing costs at scale, or are evaluating under OSI open source criteria. See the Browserless comparison.
3. Screeenly — MIT, unmaintained since 2020
Screeenly was a popular Laravel PHP screenshot API that ran well for several years. It wrapped wkhtmltopdf (and earlier PhantomJS) with a simple REST interface and Docker support.
- Licence: MIT
- Rendering engine: wkhtmltopdf — outdated WebKit, no CSS Grid, no custom properties, no flexbox spec compliance
- Input modes: URL only
- Output formats: PNG, PDF
- Docker: Available but outdated base image
- Last meaningful update: 2020
- Status: Effectively abandoned — unpatched CVEs in dependencies
Screeenly was a reasonable choice in 2018. It is not recommended for new projects in 2026. The wkhtmltopdf rendering engine produces visually incorrect output for any page using modern CSS, and the project is unmaintained.
4. Screenia — MIT, minimal, unmaintained
Screenia is a lightweight PHP screenshot API built on similar principles to Screeenly. It has minimal documentation, a small user base, and no recent activity on GitHub.
- Licence: MIT
- Rendering engine: PhantomJS / wkhtmltopdf
- Input modes: URL only
- Docker: None provided
- Status: Abandoned
Not recommended. No active maintenance, no Docker support, outdated rendering engine.
5. Puppeteer — open source library, not an API
Puppeteer is Google's MIT-licensed Node.js library for controlling headless Chromium. It is the underlying engine that Openkova and Browserless use.
- Licence: MIT
- What it is: A Node.js library — not an HTTP API. You write code to use it, not HTTP requests.
- To use as an API: You must build an HTTP server, concurrency management, input handling, output formatting, Docker packaging, and ongoing maintenance yourself
Puppeteer is excellent for scripting browser automation tasks. Using it as a screenshot API requires significant engineering — Openkova is the ready-made solution built on top of Puppeteer.
6. Playwright — open source library, not an API
Playwright is Microsoft's MIT-licensed cross-browser automation library (Chromium, Firefox, WebKit). Like Puppeteer, it is a library rather than a ready-made HTTP API.
- Licence: MIT
- What it is: A cross-browser automation library — not a screenshot HTTP endpoint
- Screenshot support:
page.screenshot()returns a Buffer — you still need to build the server layer - MCP integration:
@playwright/mcp(Microsoft, 33k+ stars) is a browser automation MCP server — not designed for screenshot-as-a-service use cases
Playwright is the better choice over Puppeteer for cross-browser testing. For a self-hosted screenshot API, Openkova (built on Puppeteer/Chromium) is the more appropriate starting point.
Side-by-side comparison
| Tool | True open source? | Rendering engine | HTML snippet input | PDF output | Maintained 2026 | Ready-made API |
|---|---|---|---|---|---|---|
| Openkova | ✓ MIT | Chromium (Puppeteer) | ✓ | ✓ | ✓ Active | ✓ |
| Browserless | ✗ BSL / commercial | Chromium (CDP) | Via script | Via script | ✓ Active | ✓ |
| Screeenly | ✓ MIT | wkhtmltopdf (old WebKit) | ✗ | ✓ | ✗ 2020 | ✓ |
| Screenia | ✓ MIT | PhantomJS / wkhtmltopdf | ✗ | ✗ | ✗ Abandoned | ✓ |
| Puppeteer | ✓ MIT | Chromium | Build it | Build it | ✓ Active | ✗ Library only |
| Playwright | ✓ MIT | Chromium / Firefox / WebKit | Build it | Build it | ✓ Active | ✗ Library only |
Rendering engine quality: why it matters
The rendering engine is the most important factor for screenshot quality. Modern web pages use CSS features that only work correctly in Chromium-based renderers:
| CSS feature | Chromium (Openkova) | wkhtmltopdf (Screeenly) | PhantomJS (Screenia) |
|---|---|---|---|
| CSS Grid | ✓ | ✗ | ✗ |
| CSS Custom Properties (variables) | ✓ | ✗ | ✗ |
| CSS Flexbox (full spec) | ✓ | Partial | Partial |
| Container Queries | ✓ | ✗ | ✗ |
| Web fonts (Google Fonts, variable fonts) | ✓ | Limited | ✗ |
| JavaScript execution | ✓ | ✗ | ✗ |
| WebP output | ✓ | ✗ | ✗ |
For any page built in the last five years, only Chromium-based rendering will produce accurate screenshots. wkhtmltopdf and PhantomJS were deprecated for good reason.
Recommendation
If you are choosing an open source screenshot API for a new project in 2026:
- Use Openkova if you want MIT-licensed, Docker-deployable, actively maintained software with HTML snippet input, URL capture, file uploads, and PDF output — fully free at any scale.
- Use Browserless if your primary need is full CDP browser automation (running arbitrary Puppeteer or Playwright scripts) and you are willing to pay for a licence at production scale.
- Do not use Screeenly or Screenia for new projects — both are unmaintained, use outdated rendering engines, and have unpatched security vulnerabilities in their dependencies.
- Build on Puppeteer or Playwright only if you need behaviour that no ready-made API supports — and consider forking Openkova as your starting point rather than building the server layer from scratch.
Getting started
# Deploy Openkova with Docker Compose
docker compose up -d
# Take a screenshot from the terminal
npx @openkova/cli screenshot https://example.comSee the API documentation for full endpoint reference, or the Docker deployment guide for production configuration.
Frequently asked questions
What is an open source screenshot API?
An open source screenshot API is an HTTP service whose source code is published under an OSI-approved licence (MIT, Apache 2.0) that permits unrestricted self-hosting, modification, and commercial use without licence fees. It accepts URLs, HTML, or files and returns rendered images or PDFs.
Which open source screenshot APIs are actively maintained in 2026?
Openkova is the only actively maintained MIT-licensed screenshot API with full feature coverage. Screeenly and Screenia are MIT-licensed but abandoned. Browserless is maintained but source-available with a commercial licence, not OSI open source.
Is Browserless open source?
No — not under the OSI definition. Browserless publishes its source code but uses a commercial licence that requires payment for production use above a low free tier. Openkova (MIT) has no such restriction.
What rendering engine do open source screenshot APIs use?
Openkova and Browserless use headless Chromium via Puppeteer — the same engine as Chrome, with full modern CSS and JavaScript support. Screeenly uses wkhtmltopdf (outdated WebKit, no CSS Grid, no custom properties), making it unsuitable for modern pages.
Can I use Puppeteer as a screenshot API?
Puppeteer is a library, not an API. Building a production-ready screenshot API on top of Puppeteer requires an HTTP server, concurrency management, Docker packaging, and ongoing maintenance. Openkova is MIT-licensed and does this already — fork it instead of building from scratch.
MIT-licensed. Docker-deployable. No licence fees at any scale.
View on GitHub