Articles

Tutorials, framework guides, comparisons, and deep dives on rendering HTML to images at scale. Worked examples in PHP, Laravel, Rails, Python, JavaScript, React and Vue.

How to Migrate from htmlcsstoimage to HTML to Image
Tutorials

How to Migrate from htmlcsstoimage to HTML to Image

Migrating from htmlcsstoimage? Map every hcti.io parameter to its HTML to Image equivalent, keep output pixel-identical with dpi 2 and cut over safely.

How to Choose an HTML to Image API (and When You Don't Need One)
Tutorials

How to Choose an HTML to Image API (and When You Don't Need One)

How to choose an HTML to image API: the rendering engine, pricing model and production details that separate a dozen near-identical services.

The Real Cost of Generating OG Images Yourself
Tutorials

The Real Cost of Generating OG Images Yourself

OG image generation looks free with Puppeteer. Price the build, the Chrome upkeep and the silent failures and the maths points the other way.

How to Control Page Breaks in HTML to PDF Output
Tutorials

How to Control Page Breaks in HTML to PDF Output

Page breaks in HTML to PDF output are a CSS problem. Use break-inside, break-before and break-after to stop tables, invoices and cards splitting across pages.

Open Graph Images in Statamic: From Meta Tags to Automatic Generation
Tutorials

Open Graph Images in Statamic: From Meta Tags to Automatic Generation

Statamic Open Graph images from first field to full automation: meta tags, the SEO Pro cascade and a branded og:image generated for every entry.

WeasyPrint Alternative: HTML to PDF in Python
Comparisons

WeasyPrint Alternative: HTML to PDF in Python

WeasyPrint alternative for HTML to PDF in Python: a real browser engine over one API call, with working JavaScript and no Pango or Chromium to manage.

Why HTML to PDF with Puppeteer Keeps Breaking on Serverless (and the Fix)
Deep dives

Why HTML to PDF with Puppeteer Keeps Breaking on Serverless (and the Fix)

HTML to PDF with Puppeteer works locally then breaks on Lambda: binaries, fonts, memory and cold starts. Why it happens and the one-parameter fix.

How to Migrate from ApiFlash to HTML to Image
Tutorials

How to Migrate from ApiFlash to HTML to Image

Migrating from ApiFlash? Map every urltoimage parameter to its HTML to Image equivalent, move your key out of the query string and cut over safely.

dompdf Alternatives: HTML to PDF in Laravel Without a Headless Browser
Comparisons

dompdf Alternatives: HTML to PDF in Laravel Without a Headless Browser

dompdf alternatives for Laravel: render Blade views to real vector PDFs with modern CSS. No abandoned wkhtmltopdf binary, no Chrome on your server.

Browsershot Alternatives: HTML to Image in Laravel Without Puppeteer
Comparisons

Browsershot Alternatives: HTML to Image in Laravel Without Puppeteer

Browsershot alternatives for Laravel: render HTML to images without Node, Puppeteer or Chrome on your server. One composer install, real Chrome renders.

Dynamic OG Images in Nuxt Without nuxt-og-image
Comparisons

Dynamic OG Images in Nuxt Without nuxt-og-image

nuxt-og-image leans on Satori's limited CSS or a heavy Chromium binary. Render Nuxt OG images from a Nitro route with one API call instead, no browser to ship.

How to Screenshot a Single Element From a Live URL
Tutorials

How to Screenshot a Single Element From a Live URL

Screenshot one element from a live URL as a PNG in one API call. Pass a CSS selector to crop to a pricing table, chart or hero, no headless browser to run.

Satori's CSS limits: what it can and can't render
Tutorials

Satori's CSS limits: what it can and can't render

Satori, the engine behind @vercel/og, renders a flexbox-only subset of CSS: no grid, no pseudo-elements, no media queries. Here are the limits and the fix.

wkhtmltopdf and wkhtmltoimage are dead, use this instead
Comparisons

wkhtmltopdf and wkhtmltoimage are dead, use this instead

wkhtmltopdf and wkhtmltoimage are dead and unpatched. Replace them with a real Chromium renderer: a drop-in API call, modern CSS and no binary to maintain.

Images in email that render everywhere
Tutorials

Images in email that render everywhere

Email clients render HTML inconsistently. Render the parts that carry your design to a PNG so your email images look the same in every inbox.

WordPress dynamic OG and social images
Tutorials

WordPress dynamic OG and social images

Generate branded WordPress Open Graph and social images automatically. Render per-post cards from HTML with one API call, no headless Chrome needed.

How to create a code screenshot for social media
Tutorials

How to create a code screenshot for social media

Code screenshots for social media, done properly: set the theme, background and line numbers with one API call, or automate the lot in your build.

Dynamic OG Images in Rails
Framework guides

Dynamic OG Images in Rails

Generate dynamic Open Graph images in Rails by rendering ERB templates to PNGs over HTTP. No headless Chrome on your server, no MiniMagick pixel maths.

How to Generate Signed Digital Certificates at Scale
Tutorials

How to Generate Signed Digital Certificates at Scale

Generate course-completion certificates with a verifiable ID, signature image and consistent branding. Three approaches with code, plus when each falls short.

Dynamic OG Images in Astro, Hugo and Eleventy
Framework guides

Dynamic OG Images in Astro, Hugo and Eleventy

Pre-generate per-page Open Graph images at build time across three popular static site generators. Working code, caching, and meta-tag wiring covered for each.

How to Generate Dynamic Open Graph Images in Laravel
Framework guides

How to Generate Dynamic Open Graph Images in Laravel

Generate per-page Open Graph images in Laravel with Browsershot, Puppeteer Lambda or an API. Working code, queue handling and storage covered for each.

Why `@vercel/og` fails on emoji (and how to fix it)
Deep dives

Why `@vercel/og` fails on emoji (and how to fix it)

@vercel/og renders emoji as empty boxes by default because Satori does not bundle a color font. Three fixes, with code, and one production-ready alternative.

Chart.js Server-Side Rendering as Images (Python Guide)
Tutorials

Chart.js Server-Side Rendering as Images (Python Guide)

Render Chart.js charts on the server and get back a PNG. A cleaner alternative to chartjs-node-canvas or wrestling with matplotlib in Python.

HTML Invoice to Image in Laravel: A Working Setup
Framework guides

HTML Invoice to Image in Laravel: A Working Setup

Rendering invoices as PNGs that actually look professional. Laravel Blade templates, a clean API call, and no Puppeteer to maintain.

Replacing Puppeteer on AWS Lambda for Screenshots
Comparisons

Replacing Puppeteer on AWS Lambda for Screenshots

Tired of chrome-aws-lambda breaking on every Chrome update? Here's a cleaner way to run screenshot workloads without managing Chromium yourself.

 Dynamic OG Images in Next.js Without @vercel/og (1,200×630)
Framework guides

Dynamic OG Images in Next.js Without @vercel/og (1,200×630)

Hit a wall with Satori's CSS limits? Here's how to generate dynamic OG images in Next.js using a real browser renderer, with full working code.

Generate a screenshot using cURL
Tutorials

Generate a screenshot using cURL

Learn how to generate a screenshot using cURL using the HTML to Image API. With full examples, including dimensions and webhook usage.