Self-host OG image generator

Social cards from a URL — on your own Cloudflare account, not someone else's invoice

Every blog post and product page needs a 1200×630 card. Hosted APIs bill per render, forever. Vercel OG is free but wants satori, JSX and a build pipeline. This kit is simpler: one Worker you deploy once — a URL goes in, a finished PNG comes out — with 6 editable templates, 5 themes and Thai + Latin fonts baked in. One payment of ฿1,490 — no monthly bill.

Get the kit — ฿1,490
One-time payment · ≈ US$42 · free updates for v1.x · instant download
GET https://og.yoursite.dev/og?template=post&theme=night&title=How%20we%20cut%20churn%2031%25
A 1200×630 blog-card OG image with a category pill, headline, byline and site name — rendered by this kit's code

The card above is real output from the shipped code — not a mockup.

What's inside the kit

One zip, 16 files, no database and nothing to babysit — the generator is a single Cloudflare Worker plus a plain-SVG template file you can actually read.

The endpoint

GET /og → 1200×630 PNG (or SVG)

Title, tagline, tag, byline, site and URL come in as query params; a cacheable image comes out. Long titles auto-wrap, shrink and truncate — including Thai text, which never breaks a line on a combining vowel or tone mark.

6 templates × 5 themes

gradient · minimal · post · quote · product · brand

Every template is a plain function returning SVG markup in one readable file — no satori, no JSX, no build step. Themes are eight named colors each; add your own theme key and it works immediately.

Fonts bundled

Public Sans + Noto Sans Thai (OFL)

Latin reads sharp, Thai renders correctly, mixed-script headlines work in one line. All four weights ship inside the Worker — and fonts/OFL.txt gives you the right to swap in any SIL-licensed face.

Free-tier first

Runs on your Cloudflare free plan

100,000 requests/day on the Workers free tier, edge-cached responses, and a $5/mo flat paid plan as the documented escape hatch if your traffic grows — no per-render billing anywhere.

50 automated checks

A test suite that renders real images

npm run test renders all 30 template×theme combos to actual PNGs, feeds hostile titles through the XML escaper, and checks wrapping, size clamping and SVG mode — in plain Node, no network.

Guides + license

SETUP · CUSTOMIZE · playground · LICENSE

Zero-to-deployed in about ten minutes, every parameter documented, a double-click playground for previews, and a commercial license for one buyer with no limits on your own projects.

# from the zip — three commands to your own URL cd worker && npm install npx wrangler dev # try it at localhost:8787, playground.html included npx wrangler deploy # → https://my-og-image.your-subdomain.workers.dev

What this kit is — and what it isn't

It is a text-to-image generator. Your titles, taglines and brand lines become finished social cards: blog cards, quotes, product badges, brand frames. Deterministic, cacheable, fast — the hero card above is its real output.

It is not a screenshot API. /og never fetches or photographs other web pages — which also means there is no SSRF or abuse surface to defend. If you need screenshots of arbitrary URLs, that's a different (and heavier) product.

The free plan has one trade. Cloudflare's Workers free tier allows roughly 10 ms of CPU per request; a fresh render takes more, so sustained uncached traffic can hit error 1102. The built-in mitigations ship in the kit: edge caching on a custom domain (repeat views cost zero CPU), long Cache-Control, and a documented $5/mo Workers Paid option — still far below per-render API pricing. SETUP.md explains all three.

Platform limits are Cloudflare's, not ours. Request volumes, CPU policy and pricing are governed by Cloudflare's own terms and can change; the kit's job is to make those limits easy to live with.

How it works

Three steps from zip to cards on every page you ship.

1
Step 1

Deploy once

npm install, wrangler login, wrangler deploy. You get a workers.dev URL (or attach og.yoursite.dev in the dashboard) — on your account, under your rules.

2
Step 2

Point og:image at it

One meta tag per page with the title and template you want. Copy-paste recipes for Hugo, Eleventy, Astro, Next and plain HTML are in CUSTOMIZE.md.

3
Step 3

Tune it to your brand

Change two vars for your brand defaults, pick a theme — or edit templates.js directly: it's annotated plain SVG, and the test suite verifies every change you make.

Why a self-host kit

The market's pricing pages tell the story: images-as-a-service rent forever; the generator itself is a one-time problem.

Hosted APIs

$7–17 per 1,000–2,000 renders

Typical published pricing across popular screenshot/OG APIs. Every viral post costs again. The kit's endpoint is yours: free tier first, $5/mo flat if you grow.

satori / Vercel OG

Free — if you speak JSX

Vercel's OG engine renders only a flexbox subset through satori and wants React-style markup plus a build pipeline. The kit's templates are plain SVG you edit like HTML.

Privacy

Your titles stay yours

A third-party render API sees every headline you publish — sometimes before it's public. Self-hosted, the only log that grows is the one on your own account.

One-time purchase
฿1,490
≈ US$42 · pay once, deploy forever
  • The complete kit: Worker, 6 templates, 5 themes, fonts, tests, guides
  • Commercial license for one buyer — any number of your own projects
  • Free updates for every v1.x release
  • 14-day money-back refund, no interrogation

Secure checkout via Stripe · cards accepted · taxes calculated at checkout · instant download

Questions, answered straight

What exactly do I get, and what can I do with it?
A 16-file zip: the Worker (endpoint, caching, optional key gate), 6 templates × 5 themes as plain SVG code, four bundled font files, a double-click playground, a 50-check test suite, and SETUP/CUSTOMIZE guides. The license covers one buyer — you, running it on any number of your own projects and client work. You can't resell or redistribute the kit itself.
What will it cost me to run?
The Workers free tier (100,000 requests/day) covers most sites. Heavy uncached traffic can hit the free plan's ~10 ms CPU allowance — the kit's docs give you three fixes in order: put it on a custom domain so edge caching absorbs repeat views, keep the long Cache-Control, or move to Workers Paid at a flat $5/month. Either way it's a fixed cost, not per-render rent.
Do I need to know how to code?
You need to be comfortable running three commands in a terminal (npm install, wrangler login, wrangler deploy) and pasting one meta tag into your pages. That's enough for everything out of the box. Editing templates is optional — but they're plain annotated SVG functions with a guide, not a framework.
How is this different from just using Vercel OG or a free tool?
Vercel OG is genuinely good — and genuinely satori: flexbox-only CSS, JSX-style element trees, a build step, and no screenshots of URLs. This kit trades that machinery for plain SVG templates that run anywhere Workers run, with fonts bundled and Thai text handled properly. Different tool, different trade — pick the one that matches your stack.
What about updates and support?
All v1.x updates are free re-downloads from your buyer download page. If anything in SETUP or CUSTOMIZE doesn't work as documented, email [email protected] from your purchase email and you'll get a real answer — bug fixes ship as updates.
What's the refund policy?
Fourteen days, full refund, one email. If the kit doesn't fit how you work, write to [email protected] within 14 days of purchase — you keep the zip, we ask for an optional reason only. One refund per purchase.

Your next post already has a card waiting

฿1,490 one-time · ≈ US$42 · free v1.x updates · 14-day refund

Get OG Image Kit — ฿1,490