Use Case

Generate OG Images with a Single API Call

Stop building og:image infrastructure. Send HTML, get a pixel-perfect Open Graph image back. Works with Twitter, Facebook, LinkedIn, Discord.

Start Free — 100 images/mo View API Docs
The Problem

OG images are a pain to generate at scale

Self-hosting Puppeteer/Playwright
You spin up a headless browser, manage memory leaks, handle crashes, and babysit a Chromium process — all for a 1200×630 PNG. Your DevOps bill grows faster than your blog.
renderpix handles it
One POST request with your HTML template. We run Chromium, render the image, and return it in ~1 second. No infrastructure, no babysitting, no surprises on your AWS bill.
@vercel/og limitations
Only supports flexbox, a subset of CSS, and limited fonts. No grid, no advanced layouts, no full CSS support. Your designs are constrained by Satori's rendering engine.
Full CSS/HTML support
renderpix renders with real Chromium — the same engine your users' browsers use. Grid, flexbox, custom fonts, animations frozen at the right frame. If Chrome can render it, we can capture it.
How It Works

Three steps to dynamic OG images

01
Design your template
Write an HTML/CSS template for your OG image. Use any CSS you want — gradients, custom fonts, images, grid layouts. 1200×630px is the standard OG size.
02
Call the API
POST your HTML to /v1/render with width=1200 and height=630. Inject dynamic data (title, author, date) into your template before sending.
03
Serve the image
Get back a PNG/JPEG/WebP. Cache it on your CDN, serve it via og:image meta tag. Every blog post, product page, or tweet gets a unique social card.
og-image.js
// Generate a dynamic OG image for a blog post
const response = await fetch('https://renderpix.dev/v1/render', {
  method: 'POST',
  headers: {
    'X-API-Key': 'rpx_your_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    html: `
      <div style="width:1200px;height:630px;background:linear-gradient(135deg,#0f172a,#1e293b);
        display:flex;flex-direction:column;justify-content:center;padding:80px;font-family:sans-serif">
        <div style="color:#22d3ee;font-size:18px;margin-bottom:16px">renderpix.dev</div>
        <div style="color:white;font-size:52px;font-weight:bold;line-height:1.2">
          ${post.title}
        </div>
        <div style="color:#94a3b8;font-size:20px;margin-top:24px">
          ${post.author} · ${post.date}
        </div>
      </div>
    `,
    width: 1200,
    height: 630,
    format: 'png'
  })
});

const image = await response.arrayBuffer();
// Save to /public/og/my-blog-post.png or serve directly
Platform Support

Perfect OG images for every platform

𝕏
Twitter / X
1200 × 628 px
f
Facebook
1200 × 630 px
in
LinkedIn
1200 × 627 px
Discord
1200 × 630 px
Pricing

60% cheaper than htmlcsstoimage

$9/mo
2,000 OG images/month · Free tier: 100 images/month forever
Get Your API Key — Free
New in June 2026

Now with batch rendering & template variables

Automate at scale without writing a loop.

Batch Rendering

Render up to 50 images in a single API call (Pro plan). Generate an entire week's content in one request.

Generate OG images for 50 blog posts in one API call instead of 50 sequential requests.

Template Variables

Use {{placeholders}} in your HTML. Inject names, dates, titles dynamically — no string manipulation in your code.

Pass {{title}}, {{author}}, {{date}} — one HTML template serves every post on your site.

Async Callbacks

Fire-and-forget rendering with callback_url. Your app doesn't wait — RenderPix calls you back when the image is ready. (Pro+)

On publish webhook, fire render request and return 200 immediately. Image is ready in your callback before the CDN cache warms.

og-image-vars.js
// With template variables — one template, infinite posts
const response = await fetch('https://renderpix.dev/v1/render', {
  method: 'POST',
  headers: { 'X-API-Key': 'rpx_your_key', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    html: `<div style="width:1200px;height:630px;background:#0f172a;
      display:flex;flex-direction:column;justify-content:center;
      padding:80px;font-family:sans-serif">
      <div style="color:#22d3ee;font-size:18px;margin-bottom:16px">{{domain}}</div>
      <div style="color:white;font-size:52px;font-weight:bold;line-height:1.2">{{title}}</div>
      <div style="color:#94a3b8;font-size:20px;margin-top:24px">{{author}} · {{date}}</div>
    </div>`,
    vars: { title: post.title, author: post.author, date: post.publishedAt, domain: 'myblog.com' },
    width: 1200, height: 630, format: 'png'
  })
});
Related Guides
→ Auto-generate OG images for every blog post with n8n → How to generate OG images in Next.js → Auto-generate social cards with GitHub Actions
More Use Cases

More ways to use RenderPix

Invoices & Receipts

Invoices & Receipts

Generate pixel-perfect invoice images from your billing data.

Certificates

Certificates

Generate thousands of personalized certificates automatically.

Social Media Automation

Social Media Automation

Automate social media image generation at scale with any HTML.

Full-Page Screenshots

Full-Page Screenshots

Screenshot any URL — live sites, staging, or archived pages.