Puppeteer Emoji on Linux: Fonts, Docker and Fixes
Fix missing or black-and-white emoji in Puppeteer on Linux: tested Dockerfile lines for Noto Color Emoji, the DejaVu glyph trap, and Twemoji via @font-face.
Updates, tutorials, and insights from the RenderScreenshot team.
Fix missing or black-and-white emoji in Puppeteer on Linux: tested Dockerfile lines for Noto Color Emoji, the DejaVu glyph trap, and Twemoji via @font-face.
Render Chart.js and ECharts charts to PNG on the server for emails and PDFs: animation off, a ready signal, no-browser options and measured timings.
Every Puppeteer screenshot recipe re-run on Puppeteer 25.14 and Chrome 155: viewport, full page, element, clip, waits, formats, auth, blocking and fonts.
Set up Playwright visual comparisons with toHaveScreenshot: thresholds that mean something, OS font drift, Docker baselines and CI artifacts. Measured diffs.
Turn code into a PNG or WebP image from a script: Shiki highlighting, a window frame, element capture and light and dark themes. Sizes and timings measured.
Dynamic OG images in Next.js 16: opengraph-image.tsx, the tags it emits, measured static vs per-request timings, fonts, and when a screenshot route wins.
Run Playwright on AWS Lambda with @sparticuz/chromium: handler code, package size vs Lambda limits, missing fonts, local testing with the runtime emulator.
Turn any URL into clean Markdown for LLMs with Readability and Turndown in Node, or Python. Scored on 20 real pages, with four fixes that raised the score.
Convert Markdown to PNG or WebP with marked + Puppeteer, Python-Markdown + Playwright, or one API request. Tested scripts, measured timings and file sizes.
The right OG image size is 1200×630 (1.91:1). Platform limits with sources, how many pixels each preview shape crops, and measured file sizes at 1x and 2x.
Render an HTML email to PNG for previews and archives: why 640 px beats 600, scripts and tracking pixels off, dark mode set on purpose, Outlook caveats.
chrome --headless --screenshot and --print-to-pdf flag by flag: window size, scale, WebP, PDF paper, old vs new headless, and the Linux sandbox error.
Wait for the preview deployment to serve the PR's commit, render key pages next to production, and post a before/after table in the PR. Tested scripts.
Render HTML to PNG with a browser library, satori, headless Chrome or an API. We scored 19 CSS features per renderer with pixel probes. Code and results.
Eight ways to generate Open Graph images compared: HTML renderers, Satori, template editors, Cloudinary and Puppeteer. Scored checklist and October 2026 prices.
Playwright, BackstopJS, Percy, Chromatic, Applitools, Argos and DIY pixelmatch compared, with a flake test we ran and prices checked in October 2026.
HTML to PDF in Node.js with Puppeteer, Playwright, PDFKit or an API, tested on an invoice and a chart report: times, file sizes, page numbers and pitfalls.
Run Puppeteer on AWS Lambda with @sparticuz/chromium: version matching, a container-image handler tested in the Lambda emulator, and warm reuse.
Convert a webpage to a PNG, JPEG or WebP five ways, from a DevTools command to an API. Effort, cost and timings for each, plus the settings that matter.
X card image sizes: 1200×600 (2:1) for summary_large_image, a square for summary. What 1200×630 and 1200×628 lose to the crop, and the tags that pick the card.
Puppeteer screenshot blank or white? We reproduced the common causes on Puppeteer 25, counted white pixels in each capture, and show the wait that fixes them.
Convert an HTML string to PNG in C# on .NET 8: PuppeteerSharp with SetContentAsync, a browser pool we measured, and the same render with HttpClient.
Take a screenshot with Selenium in Python: save_screenshot, headless Chrome, exact window size, WebP output and failure screenshots in pytest. Tested code.
Capture a website as an image in Python with Selenium, Playwright or an API: measured setup and per-shot time, async batches, and fixes for common failures.
Dynamic Open Graph images in Rails 8: an ERB card route, the meta-tags gem, a signed og:image helper, Minitest tests and what allow_browser does to crawlers.
Navigation timeout of 30000 ms exceeded in Puppeteer has four common causes. We reproduced three on Puppeteer 25 and show a tested fix for all four.
Generate PDFs with Puppeteer page.pdf(): paper size, margins, header and footer templates, page breaks and print CSS, with measured sizes and timings.
DocRaptor, PDFShift, Api2Pdf, PDFMonkey, Gotenberg, Browserless and RenderScreenshot compared: engines, prices at three volumes, code and an engine test.
Generate PDFs in Rails 8: wicked_pdf, Grover, Prawn or an API. Measured speed and size on one invoice, Active Storage code, and when each choice fits.
Convert a URL to PDF in Node.js and Python: print media, cookie banners that repeat on every page, lazy images that never load, with tested scripts.
DevToolsActivePort file doesn't exist in Selenium? New ChromeDriver hides it behind other messages. Reproduced on Chrome 128 to 155 in Docker, with fixes.
Take a screenshot with Selenium 4 in Python, Java and C#: page, element, exact viewport and PDF. Same test in three languages, timed, with the fixes.
Render Tailwind HTML to PNG without the Play CDN: compile the classes at build time or per request, inline the CSS, and capture. Timings measured.
Turn a React component into a PNG with renderToStaticMarkup and a browser, or with satori. 24 probes show which React and CSS features each path keeps.
Puppeteer waitUntil on a test SPA: load, domcontentloaded, networkidle0, networkidle2, selectors and functions, with timings and a reusable ready helper.
Remove cookie banners, consent iframes, shadow-DOM dialogs and chat widgets from Puppeteer screenshots: a tested module and what each method misses.
The best HTML to image APIs compared: rendering engine, ready signals, fonts, delivery, public links and prices at three volumes, from each vendor's own docs.
Screenshot one element in Puppeteer with locators: padding around box-shadows, shadow DOM with >>>, transparent corners, and the negative-clip bug we hit.
Failed to launch the browser process in Puppeteer, step by step: we hit four different launch errors in one Docker image on Puppeteer 25 and fixed each one.
Take website screenshots in Node.js 22 with TypeScript and ESM: Puppeteer, Playwright or one fetch call to an API, with measured install cost and tested code.
Generate PDFs from Blade views in Laravel: dompdf, Browsershot, spatie/laravel-pdf and an API, measured on one invoice, with queued jobs, Storage and tests.
Take screenshots with Playwright for Python: sync vs async API side by side, full-page and element captures, pytest failure shots, measured timings.
Website screenshots in Ruby with Ferrum, Grover or an API: tested code for viewport, full page, dark mode and cookies, measured file sizes, troubleshooting.
How to make Playwright wait for a page to load before a screenshot: load states, why networkidle is discouraged, locator auto-waiting, and timed results.
We crawled the top 10,000 home pages for og:image and Twitter card tags: adoption, sizes, formats, file weight and broken image URLs, with our method.
Zombie processes, leaked sessions, missing fonts, sandbox errors, hung pages and silent exits in headless Chrome, each reproduced in Docker with the fix.
HTML to PDF in Python with WeasyPrint, pdfkit (wkhtmltopdf), Playwright or an API, tested on an invoice and a chart report: CSS support, timings, pitfalls.
Take a screenshot of a website programmatically: DevTools, the Chrome CLI, Puppeteer, Playwright, Selenium or an API. Timed runs and code for each.
Fix 'session not created: this version of ChromeDriver only supports Chrome version N' in Selenium 4, reproduced in Docker with a tested Python fix.
A non-root Puppeteer Dockerfile with Chromium, CJK and emoji fonts and dumb-init, plus the sandbox error it hits, measured image sizes and launch times.
OG image not showing in Slack, LinkedIn or X? Twelve causes in the order to check them, a tested Node script that finds each one, and the fix for every case.
Block requests in Puppeteer with your own interception code: by resource type or host, with measured bytes and load time saved per type, and a CDP option.
Take viewport, full-page, element, annotated and retina screenshots with Vercel's agent-browser CLI. Tested commands, file sizes, timings and fixes.
Playwright MCP, Chrome DevTools MCP, agent-browser, Browserbase and Cloudflare compared on the same tasks, with timings, token costs, CSV and script.
How take_screenshot in Chrome DevTools MCP works, tested on v1.10.1. Formats, full page, element uids, the 2 MB inline limit, resize flags and a script.
We measured what 26 real web pages cost an LLM agent as raw HTML, cleaned HTML, text, accessibility tree and screenshot. Data, script and method included.
OpenClaw, Hermes Agent, NanoClaw and NemoClaw compared on how they reach the web, built-in browser, MCP or HTTP tool, with measured context costs.
How browser_take_screenshot in Playwright MCP works, where files go, and what each capture costs in model tokens. Measured on @playwright/mcp 0.0.83.
Which hidden-text tricks reach an AI agent through screenshots, page text and accessibility snapshots? We tested 11 payloads and a detector you can run.
Free website screenshot tools tested on the same URL: browser built-ins, Chrome and Playwright CLIs, Microlink, thum.io and free API tiers, with timings.
The architecture of RenderScreenshot: a Rails 8 API, a Cloudflare Worker that drives the browser, R2 storage, and the bugs and fixes that shaped it.
How our block.cookie_banners option clicks or hides consent banners in headless Chrome, the code behind it, and eight fixtures that show where it breaks.
Take a screenshot in Python: mss, PyAutoGUI and DXcam for the desktop, Playwright or an API for web pages. Tested code, measured timings and fixes.
Take a full page screenshot in Chrome with the DevTools command, the command line or a Console snippet. Tested limits, lazy images and fixed headers.
Playwright full page screenshot guide: fullPage limits measured per engine, a wheel-scroll helper for lazy images and the style option for sticky headers.
Turn a website into a scrolling GIF with Playwright and an ffmpeg palette. File sizes measured for 13 settings, and when MP4 or WebP is the better choice.
Take a screenshot of a web page with JavaScript: Screen Capture API, html2canvas or a server render. Measured fidelity on 17 CSS features, timings and fixes.
How complete is a full-page screenshot of a lazy-loading page? Five capture strategies tested on four lazy-load patterns, with data and scripts.
Take a full page screenshot in Safari: Web Inspector on Mac, Export as PDF, and Full Page on iPhone. WebKit limits measured, lazy images and fixed bars.
What runs at the edge in our screenshot API today, what stays in Rails, and tested Worker code to verify HMAC-signed URLs with Web Crypto before the origin.
k6 scripts to load test any screenshot API: step the arrival rate, separate fresh renders from cache hits, count 429s, and read the latency curve. Tested.
Browserless, Browserbase, Cloudflare Browser Rendering, Steel and ScrapingBee compared for capture work, with connection code and a benchmark harness.
Why full page screenshots repeat sticky headers, stretch 100vh heroes and put cookie bars mid-page. Each bug reproduced per tool, with a tested CSS fix.
Screenshot API pricing compared at 1,000, 10,000 and 100,000 shots a month for 10 vendors, with cost per 1,000, billing-unit traps and a calculator.
Why full page screenshots miss lazy-loaded images, and which scroll strategy fixes it. Five strategies measured in Chromium, Firefox and WebKit, with code.
Why our presets (og_card, twitter_card, link_preview) use the sizes and defaults they do, how they merge with your parameters, and measured file sizes.
Take a full page screenshot in Selenium: Firefox's native call, Chrome via CDP Page.captureScreenshot, or scroll and stitch. Measured limits, times and code.
A build-vs-buy cost model for screenshots: servers, Cloudflare browser time, engineering hours and API plans, with a calculator and a capacity script.
Take a full page screenshot in Firefox with the built-in screenshot tool, the :screenshot command or the command line. Height limits measured, plus fixes.
HTML to image in Node.js with Puppeteer, node-html-to-image, satori and an API, run on the same six templates. Measured times, what broke, and code that works.
How to take a full page screenshot with DevTools, Puppeteer, Playwright, Selenium or an API. Each method tested on one 20,000 px page, with times and failures.
Why the same page renders with different fonts on different machines, measured with pixel diffs, and how to make fonts deterministic on a managed renderer.
Take a full page screenshot in Microsoft Edge with the built-in Screenshot tool, DevTools or a script. Steps, known limits and a tested Playwright example.
Build a remote MCP server for screenshots, page text and PDFs on Cloudflare Browser Run with createMcpHandler. Tested code, timings and SSRF guards.
A practical tutorial on running Playwright inside Cloudflare Workers using the Browser Rendering API — installation, locators, auto-waiting, session reuse, and gotchas from running it in production.
Screenshots with Cloudflare Browser Rendering (now Browser Run): REST Quick Actions, the Workers binding, session reuse, limits and cost. Tested code.
Render an HTML string to PNG with Puppeteer setContent: fonts that really loaded, transparent backgrounds, escaping user input, batching, and measured timings.
How we designed signed screenshot URLs: an HMAC-SHA256 key pair, a canonical query string, required expiry, and tested signing code in Node, Python and Ruby.
HTML to image in the browser with html2canvas, html-to-image, modern-screenshot and dom-to-image-more, tested on 16 CSS edge cases, and when to go server-side.
We loaded the top 200 Tranco domains in three headless Chrome profiles. 15% of sites blocked or challenged default Puppeteer. Raw data and script.
How to choose a screenshot API: a weighted checklist, a scoring sheet, and a Node script that tests any vendor on your own URLs before you commit.
Convert HTML to an image in Python with html2image, Playwright or an API, compared on five templates with timings and renders, and why imgkit is a dead end.
Where the seconds go in a web page screenshot: launch, DNS, TLS, load, wait, capture, encode and upload. A script that times each phase and a method to measure.
Take a website screenshot from the command line with headless Chrome, shot-scraper, capture-website or the rs CLI. Timed runs, exit codes and flag maps.
Screenshot an infinite scroll page without hanging: stop after N items, at a max height or when the feed stops growing. Tested Playwright code and timings.
Bulk Puppeteer screenshots with a browser pool and job queue: measured throughput at 1, 4, 8 and 16 concurrent pages, memory per browser, and crash recovery.
A comprehensive debugging guide for Puppeteer screenshot issues — covering navigation timeouts, memory leaks, zombie Chrome processes, and production error handling patterns.
Learn how to capture dark mode screenshots with Puppeteer and Playwright — including prefers-color-scheme emulation, class-based dark mode, dual-mode capture, and edge cases with images and third-party embeds.
Learn how to capture reliable screenshots of React, Vue, and Angular apps with Puppeteer — including wait strategies for dynamic content, client-side routing, and common SPA rendering pitfalls.
Take screenshots with Playwright: page.screenshot options, deviceScaleFactor, locators, masks, measured format sizes, auth, Linux fonts and production setup.
Puppeteer full page screenshot guide: the 16,384 px limit we measured, captureBeyondViewport, lazy-load scrolling, sticky headers and a tested script.
Puppeteer vs Playwright for screenshots: timings and memory measured on the same pages, the API differences that matter, and a decision table with tested code.
The best screenshot APIs of 2026 compared: 10 services plus self-hosted Chrome, with a scored checklist, prices checked in October 2026 and a test script.
Install the renderscreenshot npm package and take screenshots with Client and TakeOptions. Tested examples, error handling and the known issues in 1.1.0.
Generate Open Graph images from an HTML template: platform size limits, escaping, signed URLs without redirects, cache-safe expiry and a Next.js example.
RenderScreenshot is a screenshot API: send a URL or HTML, get a PNG, JPEG, WebP or PDF from real Chrome. What it does today, how it works, and how to start.
Fix missing or black-and-white emoji in Puppeteer on Linux: tested Dockerfile lines for Noto Color Emoji, the DejaVu glyph trap, and Twemoji via @font-face.
Read moreRender Chart.js and ECharts charts to PNG on the server for emails and PDFs: animation off, a ready signal, no-browser options and measured timings.
Read more
Every Puppeteer screenshot recipe re-run on Puppeteer 25.14 and Chrome 155: viewport, full page, element, clip, waits, formats, auth, blocking and fonts.
Read moreSet up Playwright visual comparisons with toHaveScreenshot: thresholds that mean something, OS font drift, Docker baselines and CI artifacts. Measured diffs.
Read moreTurn code into a PNG or WebP image from a script: Shiki highlighting, a window frame, element capture and light and dark themes. Sizes and timings measured.
Read moreDynamic OG images in Next.js 16: opengraph-image.tsx, the tags it emits, measured static vs per-request timings, fonts, and when a screenshot route wins.
Read moreRun Playwright on AWS Lambda with @sparticuz/chromium: handler code, package size vs Lambda limits, missing fonts, local testing with the runtime emulator.
Read moreTurn any URL into clean Markdown for LLMs with Readability and Turndown in Node, or Python. Scored on 20 real pages, with four fixes that raised the score.
Read moreConvert Markdown to PNG or WebP with marked + Puppeteer, Python-Markdown + Playwright, or one API request. Tested scripts, measured timings and file sizes.
Read moreThe right OG image size is 1200×630 (1.91:1). Platform limits with sources, how many pixels each preview shape crops, and measured file sizes at 1x and 2x.
Read moreRender an HTML email to PNG for previews and archives: why 640 px beats 600, scripts and tracking pixels off, dark mode set on purpose, Outlook caveats.
Read morechrome --headless --screenshot and --print-to-pdf flag by flag: window size, scale, WebP, PDF paper, old vs new headless, and the Linux sandbox error.
Read moreWait for the preview deployment to serve the PR's commit, render key pages next to production, and post a before/after table in the PR. Tested scripts.
Read moreRender HTML to PNG with a browser library, satori, headless Chrome or an API. We scored 19 CSS features per renderer with pixel probes. Code and results.
Read moreEight ways to generate Open Graph images compared: HTML renderers, Satori, template editors, Cloudinary and Puppeteer. Scored checklist and October 2026 prices.
Read morePlaywright, BackstopJS, Percy, Chromatic, Applitools, Argos and DIY pixelmatch compared, with a flake test we ran and prices checked in October 2026.
Read moreHTML to PDF in Node.js with Puppeteer, Playwright, PDFKit or an API, tested on an invoice and a chart report: times, file sizes, page numbers and pitfalls.
Read moreRun Puppeteer on AWS Lambda with @sparticuz/chromium: version matching, a container-image handler tested in the Lambda emulator, and warm reuse.
Read moreConvert a webpage to a PNG, JPEG or WebP five ways, from a DevTools command to an API. Effort, cost and timings for each, plus the settings that matter.
Read moreX card image sizes: 1200×600 (2:1) for summary_large_image, a square for summary. What 1200×630 and 1200×628 lose to the crop, and the tags that pick the card.
Read morePuppeteer screenshot blank or white? We reproduced the common causes on Puppeteer 25, counted white pixels in each capture, and show the wait that fixes them.
Read moreConvert an HTML string to PNG in C# on .NET 8: PuppeteerSharp with SetContentAsync, a browser pool we measured, and the same render with HttpClient.
Read moreTake a screenshot with Selenium in Python: save_screenshot, headless Chrome, exact window size, WebP output and failure screenshots in pytest. Tested code.
Read moreCapture a website as an image in Python with Selenium, Playwright or an API: measured setup and per-shot time, async batches, and fixes for common failures.
Read moreDynamic Open Graph images in Rails 8: an ERB card route, the meta-tags gem, a signed og:image helper, Minitest tests and what allow_browser does to crawlers.
Read moreNavigation timeout of 30000 ms exceeded in Puppeteer has four common causes. We reproduced three on Puppeteer 25 and show a tested fix for all four.
Read moreGenerate PDFs with Puppeteer page.pdf(): paper size, margins, header and footer templates, page breaks and print CSS, with measured sizes and timings.
Read moreDocRaptor, PDFShift, Api2Pdf, PDFMonkey, Gotenberg, Browserless and RenderScreenshot compared: engines, prices at three volumes, code and an engine test.
Read moreGenerate PDFs in Rails 8: wicked_pdf, Grover, Prawn or an API. Measured speed and size on one invoice, Active Storage code, and when each choice fits.
Read moreConvert a URL to PDF in Node.js and Python: print media, cookie banners that repeat on every page, lazy images that never load, with tested scripts.
Read moreDevToolsActivePort file doesn't exist in Selenium? New ChromeDriver hides it behind other messages. Reproduced on Chrome 128 to 155 in Docker, with fixes.
Read moreTake a screenshot with Selenium 4 in Python, Java and C#: page, element, exact viewport and PDF. Same test in three languages, timed, with the fixes.
Read moreRender Tailwind HTML to PNG without the Play CDN: compile the classes at build time or per request, inline the CSS, and capture. Timings measured.
Read moreTurn a React component into a PNG with renderToStaticMarkup and a browser, or with satori. 24 probes show which React and CSS features each path keeps.
Read morePuppeteer waitUntil on a test SPA: load, domcontentloaded, networkidle0, networkidle2, selectors and functions, with timings and a reusable ready helper.
Read moreRemove cookie banners, consent iframes, shadow-DOM dialogs and chat widgets from Puppeteer screenshots: a tested module and what each method misses.
Read moreThe best HTML to image APIs compared: rendering engine, ready signals, fonts, delivery, public links and prices at three volumes, from each vendor's own docs.
Read moreScreenshot one element in Puppeteer with locators: padding around box-shadows, shadow DOM with >>>, transparent corners, and the negative-clip bug we hit.
Read moreFailed to launch the browser process in Puppeteer, step by step: we hit four different launch errors in one Docker image on Puppeteer 25 and fixed each one.
Read moreTake website screenshots in Node.js 22 with TypeScript and ESM: Puppeteer, Playwright or one fetch call to an API, with measured install cost and tested code.
Read moreGenerate PDFs from Blade views in Laravel: dompdf, Browsershot, spatie/laravel-pdf and an API, measured on one invoice, with queued jobs, Storage and tests.
Read moreTake screenshots with Playwright for Python: sync vs async API side by side, full-page and element captures, pytest failure shots, measured timings.
Read moreWebsite screenshots in Ruby with Ferrum, Grover or an API: tested code for viewport, full page, dark mode and cookies, measured file sizes, troubleshooting.
Read moreHow to make Playwright wait for a page to load before a screenshot: load states, why networkidle is discouraged, locator auto-waiting, and timed results.
Read moreWe crawled the top 10,000 home pages for og:image and Twitter card tags: adoption, sizes, formats, file weight and broken image URLs, with our method.
Read moreZombie processes, leaked sessions, missing fonts, sandbox errors, hung pages and silent exits in headless Chrome, each reproduced in Docker with the fix.
Read moreHTML to PDF in Python with WeasyPrint, pdfkit (wkhtmltopdf), Playwright or an API, tested on an invoice and a chart report: CSS support, timings, pitfalls.
Read moreTake a screenshot of a website programmatically: DevTools, the Chrome CLI, Puppeteer, Playwright, Selenium or an API. Timed runs and code for each.
Read moreFix 'session not created: this version of ChromeDriver only supports Chrome version N' in Selenium 4, reproduced in Docker with a tested Python fix.
Read moreA non-root Puppeteer Dockerfile with Chromium, CJK and emoji fonts and dumb-init, plus the sandbox error it hits, measured image sizes and launch times.
Read moreOG image not showing in Slack, LinkedIn or X? Twelve causes in the order to check them, a tested Node script that finds each one, and the fix for every case.
Read moreBlock requests in Puppeteer with your own interception code: by resource type or host, with measured bytes and load time saved per type, and a CDP option.
Read more
Take viewport, full-page, element, annotated and retina screenshots with Vercel's agent-browser CLI. Tested commands, file sizes, timings and fixes.
Read more
Playwright MCP, Chrome DevTools MCP, agent-browser, Browserbase and Cloudflare compared on the same tasks, with timings, token costs, CSV and script.
Read more
How take_screenshot in Chrome DevTools MCP works, tested on v1.10.1. Formats, full page, element uids, the 2 MB inline limit, resize flags and a script.
Read more
We measured what 26 real web pages cost an LLM agent as raw HTML, cleaned HTML, text, accessibility tree and screenshot. Data, script and method included.
Read more
OpenClaw, Hermes Agent, NanoClaw and NemoClaw compared on how they reach the web, built-in browser, MCP or HTTP tool, with measured context costs.
Read more
How browser_take_screenshot in Playwright MCP works, where files go, and what each capture costs in model tokens. Measured on @playwright/mcp 0.0.83.
Read more
Which hidden-text tricks reach an AI agent through screenshots, page text and accessibility snapshots? We tested 11 payloads and a detector you can run.
Read more
Free website screenshot tools tested on the same URL: browser built-ins, Chrome and Playwright CLIs, Microlink, thum.io and free API tiers, with timings.
Read more
The architecture of RenderScreenshot: a Rails 8 API, a Cloudflare Worker that drives the browser, R2 storage, and the bugs and fixes that shaped it.
Read more
How our block.cookie_banners option clicks or hides consent banners in headless Chrome, the code behind it, and eight fixtures that show where it breaks.
Read more
Take a screenshot in Python: mss, PyAutoGUI and DXcam for the desktop, Playwright or an API for web pages. Tested code, measured timings and fixes.
Read more
Take a full page screenshot in Chrome with the DevTools command, the command line or a Console snippet. Tested limits, lazy images and fixed headers.
Read more
Playwright full page screenshot guide: fullPage limits measured per engine, a wheel-scroll helper for lazy images and the style option for sticky headers.
Read more
Turn a website into a scrolling GIF with Playwright and an ffmpeg palette. File sizes measured for 13 settings, and when MP4 or WebP is the better choice.
Read more
Take a screenshot of a web page with JavaScript: Screen Capture API, html2canvas or a server render. Measured fidelity on 17 CSS features, timings and fixes.
Read more
How complete is a full-page screenshot of a lazy-loading page? Five capture strategies tested on four lazy-load patterns, with data and scripts.
Read more
Take a full page screenshot in Safari: Web Inspector on Mac, Export as PDF, and Full Page on iPhone. WebKit limits measured, lazy images and fixed bars.
Read more
What runs at the edge in our screenshot API today, what stays in Rails, and tested Worker code to verify HMAC-signed URLs with Web Crypto before the origin.
Read more
k6 scripts to load test any screenshot API: step the arrival rate, separate fresh renders from cache hits, count 429s, and read the latency curve. Tested.
Read more
Browserless, Browserbase, Cloudflare Browser Rendering, Steel and ScrapingBee compared for capture work, with connection code and a benchmark harness.
Read more
Why full page screenshots repeat sticky headers, stretch 100vh heroes and put cookie bars mid-page. Each bug reproduced per tool, with a tested CSS fix.
Read more
Screenshot API pricing compared at 1,000, 10,000 and 100,000 shots a month for 10 vendors, with cost per 1,000, billing-unit traps and a calculator.
Read more
Why full page screenshots miss lazy-loaded images, and which scroll strategy fixes it. Five strategies measured in Chromium, Firefox and WebKit, with code.
Read more
Why our presets (og_card, twitter_card, link_preview) use the sizes and defaults they do, how they merge with your parameters, and measured file sizes.
Read more
Take a full page screenshot in Selenium: Firefox's native call, Chrome via CDP Page.captureScreenshot, or scroll and stitch. Measured limits, times and code.
Read more
A build-vs-buy cost model for screenshots: servers, Cloudflare browser time, engineering hours and API plans, with a calculator and a capacity script.
Read more
Take a full page screenshot in Firefox with the built-in screenshot tool, the :screenshot command or the command line. Height limits measured, plus fixes.
Read more
HTML to image in Node.js with Puppeteer, node-html-to-image, satori and an API, run on the same six templates. Measured times, what broke, and code that works.
Read more
How to take a full page screenshot with DevTools, Puppeteer, Playwright, Selenium or an API. Each method tested on one 20,000 px page, with times and failures.
Read more
Why the same page renders with different fonts on different machines, measured with pixel diffs, and how to make fonts deterministic on a managed renderer.
Read more
Take a full page screenshot in Microsoft Edge with the built-in Screenshot tool, DevTools or a script. Steps, known limits and a tested Playwright example.
Read more
Build a remote MCP server for screenshots, page text and PDFs on Cloudflare Browser Run with createMcpHandler. Tested code, timings and SSRF guards.
Read more
A practical tutorial on running Playwright inside Cloudflare Workers using the Browser Rendering API — installation, locators, auto-waiting, session reuse, and gotchas from running it in production.
Read more
Screenshots with Cloudflare Browser Rendering (now Browser Run): REST Quick Actions, the Workers binding, session reuse, limits and cost. Tested code.
Read more
Render an HTML string to PNG with Puppeteer setContent: fonts that really loaded, transparent backgrounds, escaping user input, batching, and measured timings.
Read more
How we designed signed screenshot URLs: an HMAC-SHA256 key pair, a canonical query string, required expiry, and tested signing code in Node, Python and Ruby.
Read more
HTML to image in the browser with html2canvas, html-to-image, modern-screenshot and dom-to-image-more, tested on 16 CSS edge cases, and when to go server-side.
Read more
We loaded the top 200 Tranco domains in three headless Chrome profiles. 15% of sites blocked or challenged default Puppeteer. Raw data and script.
Read more
How to choose a screenshot API: a weighted checklist, a scoring sheet, and a Node script that tests any vendor on your own URLs before you commit.
Read more
Convert HTML to an image in Python with html2image, Playwright or an API, compared on five templates with timings and renders, and why imgkit is a dead end.
Read more
Where the seconds go in a web page screenshot: launch, DNS, TLS, load, wait, capture, encode and upload. A script that times each phase and a method to measure.
Read more
Take a website screenshot from the command line with headless Chrome, shot-scraper, capture-website or the rs CLI. Timed runs, exit codes and flag maps.
Read more
Screenshot an infinite scroll page without hanging: stop after N items, at a max height or when the feed stops growing. Tested Playwright code and timings.
Read more
Bulk Puppeteer screenshots with a browser pool and job queue: measured throughput at 1, 4, 8 and 16 concurrent pages, memory per browser, and crash recovery.
Read more
A comprehensive debugging guide for Puppeteer screenshot issues — covering navigation timeouts, memory leaks, zombie Chrome processes, and production error handling patterns.
Read more
Learn how to capture dark mode screenshots with Puppeteer and Playwright — including prefers-color-scheme emulation, class-based dark mode, dual-mode capture, and edge cases with images and third-party embeds.
Read more
Learn how to capture reliable screenshots of React, Vue, and Angular apps with Puppeteer — including wait strategies for dynamic content, client-side routing, and common SPA rendering pitfalls.
Read more
Take screenshots with Playwright: page.screenshot options, deviceScaleFactor, locators, masks, measured format sizes, auth, Linux fonts and production setup.
Read more
Puppeteer full page screenshot guide: the 16,384 px limit we measured, captureBeyondViewport, lazy-load scrolling, sticky headers and a tested script.
Read more
Puppeteer vs Playwright for screenshots: timings and memory measured on the same pages, the API differences that matter, and a decision table with tested code.
Read more
The best screenshot APIs of 2026 compared: 10 services plus self-hosted Chrome, with a scored checklist, prices checked in October 2026 and a test script.
Read more
Install the renderscreenshot npm package and take screenshots with Client and TakeOptions. Tested examples, error handling and the known issues in 1.1.0.
Read more
Generate Open Graph images from an HTML template: platform size limits, escaping, signed URLs without redirects, cache-safe expiry and a Next.js example.
Read more
RenderScreenshot is a screenshot API: send a URL or HTML, get a PNG, JPEG, WebP or PDF from real Chrome. What it does today, how it works, and how to start.
Read more