Vercel OG vs OGMagic: Which Open Graph Solution Should You Choose?
Both generate Open Graph images for Next.js. But they take completely different approaches. Here's how to pick the right one for your project.
If you're building a Next.js app and need dynamic Open Graph images, you've probably encountered @vercel/og — the official solution from Vercel. But there's another option: OGMagic, an API-first alternative.
Both solve the same problem. But they have very different philosophies. This comparison will help you pick the right tool for your needs.
Quick Verdict
Choose Vercel OG if...
- ✅ You want pixel-perfect control over every element
- ✅ You're comfortable writing JSX/React code for designs
- ✅ You need custom fonts loaded dynamically
- ✅ You want images generated at build time (static)
- ✅ You don't mind 2-5 second build times per page
Choose OGMagic if...
- ✅ You want a simple API URL (no code per design)
- ✅ You need images generated at request time (dynamic)
- ✅ You want ~200ms render time (no build impact)
- ✅ You prefer visual design over JSX coding
- ✅ You want 55+ pre-built templates to choose from
Fundamental Difference: Code vs API
Vercel OG: Code-First
With @vercel/og, you write React/JSX code to define each OG image design:
import { ImageResponse } from '@vercel/og';
export const config = { runtime: 'edge' };
export default function GET(request: Request) {
const { searchParams } = new URL(request.url);
const title = searchParams.get('title');
return new ImageResponse(
<div
style={{
width: '100%',
height: '100%',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
background: 'linear-gradient(to bottom, #1a1a2e, #16213e)',
color: 'white',
fontSize: 60,
}}
>
{title}
</div>,
{ width: 1200, height: 630 }
);
}Every design variation requires code changes. Want a different background? Edit the JSX. Want to add an author name? Add a new prop and update the layout.
OGMagic: API-First
With OGMagic, you construct a URL. That's it:
https://ogmagic.dev/api/og?template=vercel-style&title=My+Post&domain=myblog.devNo API routes to create. No JSX to write. No build step. Just drop the URL in yourog:image meta tag and you're done.
Head-to-Head Comparison
| Feature | Vercel OG | OGMagic |
|---|---|---|
| Setup | Create API route, write JSX | Use URL directly |
| Design changes | Edit code, redeploy | Pick different template |
| Render time | 2-5s (build time) | ~200ms (request time) |
| Templates | Build your own | 55+ pre-built |
| Customization | Unlimited (code anything) | Template params + accent color |
| Framework support | Next.js only | Any framework (it's just a URL) |
| Cost | Free (included with Vercel) | Free tier + $12 one-time Pro |
The Build Time Problem
Here's something Vercel OG doesn't tell you: if you generate OG images at build time (which you probably should for static sites), each image adds 2-5 seconds to your build.
Got 100 blog posts? That's 3-8 minutes of build time just for OG images. On every deploy.
OGMagic generates images at request time — when someone shares your link. Your build stays fast. The OG image is generated in ~200ms by our servers, not yours.
When Vercel OG Wins
Vercel OG is the right choice when you need:
- Pixel-perfect custom designs — If your brand has very specific requirements that don't fit templates, coding gives you unlimited control.
- Dynamic data from your CMS — Pulling author avatars, custom badges, or complex layouts based on content? Vercel OG can fetch and render anything.
- Multiple fonts with specific loading — While OGMagic supports fonts, Vercel OG gives you more control over font loading and fallbacks.
When OGMagic Wins
OGMagic is the right choice when you want:
- Zero setup — No API routes, no dependencies, no build configuration. Just use a URL.
- Fast builds — Your CI/CD stays fast because OG images aren't blocking deploys.
- Beautiful defaults — 55 professionally designed templates. No design skills needed.
- Framework flexibility — Works with Astro, Nuxt, SvelteKit, Hugo, Jekyll, plain HTML — anything that can output a meta tag.
- One-time pricing — $12 once vs. Vercel's usage-based pricing (which can add up at scale).
Real-World Example
Let's say you're building a Next.js blog. Here's how you'd add OG images with each:
With Vercel OG
// 1. Create API route: app/api/og/route.tsx
import { ImageResponse } from '@vercel/og';
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const title = searchParams.get('title');
const author = searchParams.get('author');
return new ImageResponse(
<div style={{/* 200+ lines of JSX styling */}}>
{/* Your custom layout */}
</div>
);
}
// 2. Use in your blog posts: app/blog/[slug]/page.tsx
export async function generateMetadata({ params }): Promise<Metadata> {
const post = await getPost(params.slug);
return {
openGraph: {
images: [{
url: `/api/og?title=${encodeURIComponent(post.title)}&author=${post.author}`,
width: 1200,
height: 630,
}],
},
};
}With OGMagic
// 1. No API route needed!
// 2. Use directly in your blog posts: app/blog/[slug]/page.tsx
export async function generateMetadata({ params }): Promise<Metadata> {
const post = await getPost(params.slug);
return {
openGraph: {
images: [{
url: `https://ogmagic.dev/api/og?template=minimal-dark&title=${encodeURIComponent(post.title)}&domain=myblog.dev`,
width: 1200,
height: 630,
}],
},
};
}OGMagic: 5 lines of code. No API route. No JSX. No build impact.
Pricing Comparison
Vercel OG
Free with Vercel — but Vercel's usage limits apply. At scale (100k+ images/month), you'll hit Vercel's Function Execution limits and need to upgrade to Pro ($20/month) or Enterprise.
OGMagic
Free tier: 50 API calls/month, no signup needed
Pro: $12 one-time (not monthly), 5,000 calls/month
For most personal blogs and side projects, the free tier is enough. For production apps, $12 once beats $20/month.
Conclusion
Both tools are solid. The choice comes down to your priorities:
Want maximum control and don't mind coding? Vercel OG is great. You'll spend more time upfront but get unlimited flexibility.
Want it to just work? OGMagic gets you beautiful OG images in minutes, not hours. No code, no build time, no maintenance.
And hey — you can always try both. Use OGMagic for your blog posts (fast, beautiful templates) and Vercel OG for highly customized pages (pricing pages, landing pages). They're not mutually exclusive.
Have questions? This comparison is based on our experience using both tools in production. If you think we missed something or got something wrong, reach out at support@ogmagic.dev.