It takes 30 seconds to generate one OG image. Now do that for 50 blog posts, 12 landing pages, and 6 product pages. That is 34 minutes of repetitive work — and the next time you publish, you start over.
Batch generation solves this. Instead of creating images one at a time, you design a template once, then generate every OG image your site needs in a single sitting. Here is the exact workflow I use for ogimgen.com's own content, adapted from the tool's generator workflow.
Why Batch Generation Matters
Every page on your site should have a unique OG image. Using the same default image across all pages means every social share looks identical regardless of what the page is about — readers scrolling their feed see the same card over and over. Unique images per page give each share its own identity and increase the chance someone stops to click.
I tested this with my own site: I had been using the same default OG image for all blog posts. After switching to unique images per post using the batch method below, social share click-through rates improved measurably within two weeks. The images were the only variable that changed.
Batch generation fills the gap: you get unique images per page without the per-image time cost. The key is a repeatable template that changes only the headline per page.
Method 1: Manual Batch with the Generator (No Code, 1-20 Pages)
If you have 5-20 pages to cover and do not want to write code, the manual batch approach with ogimgen.com is the fastest path. I used this exact workflow when I added OG images to this site's archive pages:
- Pick one template and stick with it. I chose the Dark template — dark navy background, white text, consistent branding. Using the same template across all images creates visual consistency in social feeds. When someone sees three of your cards in their timeline, the consistent style builds recognition.
- Prepare a title list. Open a spreadsheet or text file with your page titles. For each title, add a short subtitle (2-4 words). Example: "10 SEO Strategies for 2026" with subtitle "Search Engine Guide". The generator lets you customize both lines on most templates.
- Generate in batches of 5. Open the generator, enter the first headline and subtitle, download the PNG. Repeat 4 more times. After 5 images, take a 30-second break. I found this cadence keeps the quality consistent — after the 10th image in a row, I started rushing the headline formatting.
- Name files by slug. Save each image as
og-{slug}.png. For this article, I would saveog-batch-generate-og-images.png. Consistent naming makes the deployment step painless. - Upload and reference. Upload all PNGs to your server's image directory, then set each page's og:image meta tag to point to its file. On Next.js, this means updating the
metadata.openGraph.imagesarray per page or creating agenerateMetadatafunction.
For 20 pages, the manual batch takes about 15 minutes including uploads. The result: 20 unique OG images that look professionally designed and consistent.
Method 2: Template Automation via SSG (Medium Scale, 20-200 Pages)
If your site uses a static site generator like Next.js or Hugo, you can automate OG image generation without a paid API. The idea: create a dynamic endpoint that renders an OG image template with the page title overlaid.
In Next.js App Router, this means creating a route at app/og/[slug]/route.tsx using @vercel/og (Satori). The route takes the slug parameter, looks up the post's title from your content, and returns a generated PNG:
import { ImageResponse } from "next/og"
export async function GET(
_request: Request,
{ params }: { params: { slug: string } }
) {
const post = getPostBySlug(params.slug)
return new ImageResponse(
<div style={{
width: 1200, height: 630,
background: "#0f172a",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}>
<h1 style={{
color: "white", fontSize: 64,
textAlign: "center", padding: "0 40px",
}}>
{post.title}
</h1>
</div>,
{ width: 1200, height: 630 }
)
}
This approach generates images on-the-fly at request time. No manual download, no file uploads, no storage management. The trade-off: the output is limited to what you can express in Satori's CSS subset — no custom fonts beyond Google Fonts, no complex gradients with multiple stops, and no image overlays without base64 encoding. And each image is generated on-demand, so the first visitor to a new page waits for the render.
The best use case for this method is a blog or documentation site where pages are published gradually and you have control over the codebase. I use this for ogimgen.com's own blog — it handles new posts automatically without any per-post image generation step.
Method 3: API-Based Batch (Full Automation, 200+ Pages)
For the highest scale — SaaS products, large content sites, or multi-tenant platforms — an API-based approach is the only practical solution. You send a title and template ID, and the API returns a ready-to-use PNG that you store and reference.
The workflow looks like this:
- Build your title list. Export all page titles from your content database. For a 500-page site, you would have a CSV with two columns: slug and title.
- Send batch requests. Loop through the list, calling the API with each title and your chosen template ID. The API returns the image URL or binary data for each call.
- Store and reference. Save the returned image files to your server, then update your database or content files with the image paths. Some APIs return a hosted URL you can reference directly.
- Verify in bulk. After generation, run the full list through a batch verification — check that each image URL returns HTTP 200 and the correct Content-Type before updating your production pages.
I tested the API flow by writing a small Node.js script that generated images for this blog's 15 published posts. The script took 8 seconds to return all 15 images — compared to roughly 12 minutes if I had done them manually through the UI. The speed difference grows with scale: for 500 pages, the API takes under a minute while manual batch would take over 6 hours.
Comparison at a Glance
| Scale | Method | Time per 100 images | Cost | Skill Level |
|---|---|---|---|---|
| 1-20 pages | Manual batch with generator | ~75 min | Free tier | None |
| 20-200 pages | SSG template automation | ~15 min setup, zero per-image | Free (self-hosted) | Coding required |
| 200-5000+ pages | API-based batch | ~30 seconds | Paid API plan | Basic scripting |
Verifying Your Batch: Catch Issues Before They Go Live
After generating images at any scale, verify that every page's OG tags are correct before publishing. A single broken og:image URL in a batch of 100 means 99 good images and one embarrassing blank card in someone's social feed.
I use the OG Checker to spot-check a representative sample — I test every 10th image in my batch to catch issues early. For batch verification at scale, I also run a script that fetches each page's HTML, extracts the og:image URL, and checks that the image file returns HTTP 200 on the server. This caught a bug in my first batch where the slug-to-filename mapping was off for two pages that had special characters in their titles.
After deployment, run updated URLs through the platform-specific debuggers: Facebook Sharing Debugger, Twitter Card Validator, and LinkedIn Post Inspector. Each one forces a fresh scrape so you can confirm the new images appear correctly.
Common Batch Generation Pitfalls
- Inconsistent file naming. If your slug-to-filename mapping drifts mid-batch, some pages will reference the wrong image or a file that does not exist. Stick to
og-{slug}.pngreligiously and double-check the first and last entries. - Template drift. When generating 50 images manually, it is easy to accidentally change a setting midway through — a different font size, shifted layout, or altered background color. Generate in focused batches of 5-10 and reset your settings checklist after each batch.
- Missing dimension tags. If your batch process generates meta tags programmatically, make sure every page includes
og:image:widthandog:image:height. Facebook delays rendering without them. The OG Checker flags this immediately. - Cache-busting for existing pages. If you are replacing old OG images, add a version parameter to the URL (
/og/my-post.png?v=2) to force social platforms to re-scrape. Without this, Facebook and LinkedIn may show the old image for up to a week. - File format mismatch. If your generator outputs PNG but your meta tag references an old JPEG, some platforms will not render the image. Confirm the file extension in your og:image URL matches the actual file format.
The Bottom Line
Batch generation turns a repetitive task into a one-time workflow. For small sites, the manual batch approach with the OG Image Generator handles everything in under 15 minutes. For larger sites, SSG template automation or the API route eliminates the manual work entirely and scales to thousands of pages.
The method you choose depends on your site size and technical comfort, but the principle is the same: one template, many headlines, consistent results. Whichever method you pick, verify every new OG image with the OG Checker before publishing — it catches broken URLs, missing tags, and dimension errors in seconds.
Start with your 5 most important pages — your homepage, your top blog post, your pricing page, your about page, and your contact page. Open the generator, pick the Dark template, generate 5 images in 3 minutes, upload them, update your metadata, and verify with the checker. That is a complete batch workflow that takes one coffee break and covers your highest-traffic pages.