Open Graph image generator

Generate share-perfect Open Graph and Twitter-card images automatically — render an HTML template to a crisp 1200×630 PNG with one API call, or preview how any URL's og:image looks when shared.

1200×630 PNG Render from HTML Same /v1/capture API
og image · 1200×630 · cURL
curl "https://screenshotink.com/v1/capture" \
  -H "Authorization: Bearer sk_live_…" \
  --data-urlencode html="<div class='card'>…</div>" \
  -d width=1200 -d height=630 \
  -d full_size=false -d format=png
200 · exact 1200×630done
{ "image_url": "…/og-7f3a.png", "width": 1200, "height": 630 }

full_size=false + fixed width/height = exact OG dimensions · no stitching

The basics

What Open Graph images are

An Open Graph image is the picture that shows up when a link gets shared — in a tweet, a LinkedIn post, a Slack channel, an iMessage, a Discord embed. It's the single biggest factor in whether anyone clicks the link.

Each page declares its card with two meta tags in the <head>: og:image (the Open Graph standard, used by Facebook, LinkedIn, Slack and most platforms) and twitter:image (X's Twitter-card variant). Both point at a hosted image URL — and that image is what you generate here.

page <head> · meta tags
<meta property="og:image" content="…/og/post-42.png">
<meta name="twitter:image" content="…/og/post-42.png">
<meta name="twitter:card" content="summary_large_image">
Validate

Preview a page's OG render

Paste any URL to see how its page renders before it lands in a share card. Useful for spotting a broken layout, missing image or low-contrast text before you ship the meta tags.

Preview an OG render

Live

Your capture renders here — stamped and ready.

For a true 1200×630 card, call the API with width=1200 height=630 full_size=false

Generate them automatically

One template, a card for every page

Hand-designing a share image for every blog post, product page or changelog entry doesn't scale. Build one HTML template with placeholders — title, author, date, gradient — and let the API stamp out a unique 1200×630 PNG per page, at build time or on the fly per request.

1 · Design one HTML template

A 1200×630 <div> with your fonts, brand gradient and slots for the page title, author and date. Plain HTML and CSS — no headless-Chrome setup of your own.

2 · Fill it & POST to the API

Interpolate each page's data into the template, then --data-urlencode html=… with width=1200 height=630 full_size=false. Hosted Chromium renders the exact card.

3 · Cache the PNG, point the meta tag

Save the returned image to your CDN and reference it from og:image. Identical requests are cached 24h, so repeat builds of the same card cost nothing.

We dogfood this: every ScreenshotInk page renders its own OG card through the same HTML-to-image path you'd use.

The canonical size

Why 1200×630

1200×630 is the size every major platform agrees on for a large summary card — a 1.91:1 aspect ratio. Facebook, LinkedIn, Slack and X all crop to it, so a card built at exactly these dimensions shows edge-to-edge without letterboxing or an awkward center-crop.

The trick is telling the API to take a fixed-size shot, not a full-page one. Set full_size=false with an explicit width=1200 and height=630 — the capture is clipped to exactly that viewport instead of scrolling. See every option in the request parameters reference.

Large summary card 1200 × 630

Rendered at 1.91:1 — fills the share card edge to edge on every platform.

Built for scale

Generate one card or ten thousand

The preview tool above and the OG generator are the same capture engine behind the ScreenshotInk API. When you're ready to wire share cards into your build pipeline or generate them per request, the API takes the same parameters you see here.

EU-hosted rendering, identical requests cached for 24 hours, and every plan includes bulk capture, visual diff, Lighthouse audits and an MCP server for AI agents.

og card · per page · cURL
curl "https://screenshotink.com/v1/capture" \
  -H "Authorization: Bearer sk_live_…" \
  --data-urlencode html="<div class='og'>Post title</div>" \
  -d width=1200 -d height=630 \
  -d full_size=false -d format=png
200 · cache it & point og:image at itdone
{ "image_url": "…/og-post-42.png", "width": 1200, "height": 630 }

Open Graph image FAQ

1200×630 pixels is the canonical Open Graph and Twitter-card size. Capture with width=1200, height=630 and full_size=false for exact dimensions.

Render an HTML template to a 1200×630 PNG via /v1/capture — per post, per product, per page — at build time or on the fly. ScreenshotInk generates its own OG cards this way.

Yes — capture the page and check how it renders, or generate a fresh card from your own template when the existing one is missing or stale.

A free API key includes 100 captures a month, no card. Identical requests are cached for 24 hours, so regenerating the same card is free.