Open Graph image API
One URL in, a beautiful link preview out. OGMint renders Open Graph images on Cloudflare's edge in about 100 ms — no Puppeteer, no image pipeline, no build step. Change the query string, get a new card.
This is not a screenshot. It's the API, rendering live on this page.
Template gallery
Designed for the feeds your links actually land in. Click any card to open it in the playground.
every image on this page is being rendered by the API, right now
Playground
Every field maps to a URL parameter. What you see is exactly what crawlers get.
Free beta key: removes the corner badge and lifts the anonymous limit. No credit card, 10 seconds.
Integration
If your stack can print a string, it can use OGMint.
<!-- in <head> — that's the whole integration --> <meta property="og:image" content="https://ogmint.dev/api/og?template=gradient&title=Hello%20world&site=you.dev" /> <meta name="twitter:card" content="summary_large_image" />
// app/blog/[slug]/page.tsx — App Router metadata export async function generateMetadata({ params }) { const post = await getPost(params.slug); return { openGraph: { images: [`https://ogmint.dev/api/og?template=editorial&title=${encodeURIComponent(post.title)}&site=you.dev`], }, twitter: { card: "summary_large_image" }, }; }
--- // src/layouts/Post.astro const og = `https://ogmint.dev/api/og?template=minimal&title=${encodeURIComponent(frontmatter.title)}&site=you.dev`; --- <meta property="og:image" content={og} /> <meta name="twitter:card" content="summary_large_image" />
<!-- Ghost: Settings → Code injection → Site header --> <!-- Webflow: Page settings → Custom code → Head --> <meta property="og:image" content="https://ogmint.dev/api/og?template=editorial&title={{post.title}}&site=yoursite.com" /> <!-- use your CMS's template variable where {{post.title}} is -->
Crawlers request the image URL, we mint the card in ~100 ms at the nearest of 300+ edge locations. No pre-generation, no queue.
Identical URLs are cached at the edge — the second request is instant, and your card survives traffic spikes without warming anything.
If a render ever fails, we serve a clean fallback card with your title instead of a broken image. Your share links stay dressed.
Pricing
Simple tiers at launch. Beta users keep free Pro features for 3 months after we flip the switch.
Why free? We're in public beta and optimizing for feedback, not invoices. Grab a key now and you'll keep Pro features free for 3 months after general availability — we'll email you well before anything changes.
Questions
@vercel/og is a library you run — you write JSX templates, manage fonts, and deploy it inside your own app. OGMint is finished infrastructure: designed templates, fonts, caching, and a fallback path behind one URL. It works from any stack, including places you can't run code at all — Ghost, Webflow, Shopify, plain HTML.
A cold render takes roughly 100–300 ms at the edge location nearest the crawler. After that, the exact URL is cached at Cloudflare's 300+ locations and returns in single-digit milliseconds. Social crawlers typically fetch a card once and cache it themselves, so your readers never wait on us.
No. The image renders the first time anyone (usually a crawler) requests it. Publish a post, share the link, done. This also means one template change updates every past card — no rebuilds.
Anonymous renders carry a small "ogmint.dev" pill in the corner — that's how free usage pays for itself. A free beta key removes it instantly. At launch, badge-free rendering is part of Pro ($9/month), and beta users keep it free for 3 months.
Today you control template, text, accent color, and theme. Custom fonts and fully custom templates ship with the Scale tier at launch — tell us what you need and we'll likely build it during beta for free.
The API never returns a broken image for a card URL. If anything goes wrong mid-render, we serve a clean fallback card with your title and mark the response with an x-ogmint-degraded header so you can spot it. Meta tags are a promise; we keep it.