Iteration Layer vs Puppeteer
Puppeteer takes screenshots of HTML pages — a browser pipeline for what should be a simple API call.
Why developers switch from Puppeteer
Puppeteer spins up a full browser for every screenshot — heavy on memory and slow to cold-start.
No Chromium to deploy or maintain
Each Puppeteer screenshot requires a running Chromium instance consuming 200–300 MB of RAM. We are a managed API: define your layers as JSON, get a PNG or JPEG back — no browser, no containers, no memory management.
AI operations on every layer
Puppeteer takes screenshots of what Chrome renders. We apply background removal and smart crop with object detection to individual layers as part of the same generation request.
Explicit layer composition
Puppeteer renders HTML — what you get depends on CSS interpretation, font loading, and browser quirks. Our layer model is explicit: each element has a precise position, size, and style, producing the same result every time.
Feature-by-feature comparison
We went through the docs so you don't have to. Here's how every feature compares — including the ones where we're not the better choice.
| Feature | Iteration Layer | Puppeteer |
|---|---|---|
| Template definition |
JSON layers
Templates defined as JSON layer arrays — versionable and diffable |
HTML/JS
Takes screenshots of HTML pages rendered in a headless browser |
| Layer composition |
Per layer
Independent text, image, and shape layers composited pixel-perfectly |
Browser rendering
Browser rendering can vary based on font loading, CSS interpretation, and rendering timing |
| Output formats |
4 formats
PNG, JPEG, WebP, and PDF output |
4 formats
PNG, JPEG, WebP, and PDF output supported via Chromium |
| AI operations |
Included
Background removal and smart crop with object detection available per layer |
None
No AI-based image operations available — takes browser screenshots only |
| Output determinism |
Deterministic
Same input always produces the same output with pixel-level consistency |
Non-deterministic
Browser rendering can vary based on font loading, CSS interpretation, and rendering timing |
| Open source |
Proprietary
Closed-source managed SaaS platform |
Free
Open source and free to use with no per-image cost |
| Web screenshots |
Layer-based
Composes images from individual layers rather than capturing web pages |
Pixel-perfect
Captures pixel-perfect screenshots of any web page as Chrome renders it |
| JS interaction |
Static
Static layer composition without JavaScript execution |
Full JS
Can interact with JavaScript-rendered pages including SPAs and dynamic content |
| EU hosting |
EU only
All processing happens exclusively on EU-hosted servers |
Your choice
Runs on your infrastructure, so data residency depends on where you deploy |
| Pricing |
$0.066
2 credits per action |
Compute only
Self-hosted OSS |
| Infrastructure required |
None
Fully managed API with no binaries, containers, or infrastructure to manage |
Chromium
Requires Node.js and a Chromium instance consuming 200-300 MB per screenshot process |
| GDPR / Data privacy |
Zero retention
No files or results stored beyond temporary 90-day logs |
Your responsibility
Data privacy depends entirely on your deployment and infrastructure choices |
Pricing
Start usage-based. Switch to a subscription when your volume becomes predictable.
Usage-based
Graduated pricing. Your effective rate decreases automatically as monthly usage grows.
- No monthly commitment
- Pay only for credits used
- Automatic volume discounts as usage grows
Predictable volume
Fixed recurring credit packs with lower effective credit prices for steady usage.
- Lower effective per-credit prices
- Fixed recurring credit packs
- Predictable monthly budget
Still evaluating?
See how we compare — and where the competition still wins. Choosing the right tool shouldn't require a week of research.
Start building in minutes
Free trial credits included.