Features Full Page Screenshot Wait for Selector & Delay Block Cookie Banners Custom Viewport & Device Website to PDF HTML to Image Dark Mode Image Format & Quality MCP Server Webhook Pricing Docs Blog Log In Sign Up

Blog

Latest news, tutorials, and updates from our team.

Fix "Could Not Find Expected Browser (Chrome) Locally" in Puppeteer

Fix "Could Not Find Expected Browser (Chrome) Locally" in Puppeteer

Puppeteer cannot find Chrome? Fix the "could not find expected browser locally" error in Docker, CI/CD, serverless, monorepos, and local development.

Read more →
Fix Puppeteer "Browser Has Disconnected" Error (All Causes)

Fix Puppeteer "Browser Has Disconnected" Error (All Causes)

Read more →
Why Instagram Breaks Your Screenshots (And How to Fix It with Playwright)

Why Instagram Breaks Your Screenshots (And How to Fix It with Playwright)

Instagram shows two login popups, triggers React re-renders when you hide them wrong, and locks scrollHeight to the viewport. Three problems, three fixes for Playwright and Puppeteer.

Read more →
Fix Failed to Launch the Browser Process in Puppeteer

Fix Failed to Launch the Browser Process in Puppeteer

Every cause of Puppeteer browser launch failures with tested fixes for each environment.

Read more →
Fix "Page Crashed!" in Puppeteer — Memory, Docker, /dev/shm

Fix "Page Crashed!" in Puppeteer — Memory, Docker, /dev/shm

Puppeteer throwing "Page crashed!" errors? Trace it to /dev/shm limits, OOM kills, or heavy pages. Concrete fixes for Docker and bare-metal.

Read more →
Fix Puppeteer net::ERR_ABORTED: causes and solutions

Fix Puppeteer net::ERR_ABORTED: causes and solutions

Puppeteer throws net::ERR_ABORTED on downloads, 204 responses, and aborted requests. These are the real causes and code fixes that work in production.

Read more →
How to handle screenshot API responses in production

How to handle screenshot API responses in production

A 200 OK from a screenshot API doesn't mean you got a screenshot — the transport and render layers fail independently. Which status codes to retry and which not, backoff with jitter, respecting Retry-After, catching blank images that pass as a 200, and a circuit breaker. Node.js code throughout.

Read more →
Screenshot API rate limiting strategies in production

Screenshot API rate limiting strategies in production

Most rate limiting guides only cover retry strategies. That's only half the problem. Five concrete strategies — proactive (token bucket, queue) and reactive (Retry-After, exponential backoff, circuit breaker) — with Node.js code.

Read more →
Headless Chrome "net::ERR_CONNECTION_REFUSED" in Docker: causes and fixes

Headless Chrome "net::ERR_CONNECTION_REFUSED" in Docker: causes and fixes

ERR_CONNECTION_REFUSED in headless Chrome inside Docker isn't one error — it's five different network problems sharing the same message. Diagnose with one curl from inside the container, then fix per cause.

Read more →
How to take screenshots of pages with infinite scroll feeds

How to take screenshots of pages with infinite scroll feeds

Infinite scroll pages don't have a bottom — so "scroll to the end, then screenshot" doesn't work by definition. Five strategies for deciding when to stop, with code for Puppeteer and Playwright.

Read more →
Why your Puppeteer and Playwright screenshots come out blank or white

Why your Puppeteer and Playwright screenshots come out blank or white

"Blank screenshot" isn't one problem — it's at least five different ones. Compare your image against five visual patterns to find the right cause and the right fix.

Read more →
How to take screenshots of single-page applications (SPAs) correctly

How to take screenshots of single-page applications (SPAs) correctly

SPAs break screenshot tools in their own way — content rendering across several phases, networkidle that never settles, hydration mismatches. Here are the five common problems and how to fix each.

Read more →