| What you add | opengraph-image or twitter-image in the route segment | JSX returned from ImageResponse (next/og or @vercel/og) | A CDN URL from generateMetadata / openGraph.images |
|---|
| Who writes the meta tags | Next.js writes og:image, type, width, height, and alt | The file convention writes them. A custom route does not. | You set openGraph.images and twitter.images |
|---|
| Dynamic per URL | A static image is one card per segment. A code file can read params. | Yes, from params, fetch, or query string | Yes. Pass template, title, description, and path per page. |
|---|
| Where it runs | Your Next.js build or server | Your Next.js route, or @vercel/og on another framework on Vercel | OG Pilot CDN. The signing app can be anywhere. |
|---|
| How you design the card | A finished PNG/JPG, or JSX inside opengraph-image.tsx | JSX plus a flexbox CSS subset | Named templates such as page, blog_post, and product |
|---|
| CSS and size limits | Static opengraph-image max 8MB. twitter-image max 5MB. Code files share the ImageResponse limits. | No display:grid. Bundle max 500KB including JSX, CSS, fonts, and images. | Template fields. You do not author per-request CSS. |
|---|
| Fonts | Baked into a static image, or ttf / otf / woff inside ImageResponse | ttf, otf, and woff. ttf or otf is preferred. | Handled by the template |
|---|
| Caching | Generated images are statically optimized unless they use request-time APIs or uncached data. | Production @vercel/og sets cache-control: public, immutable, no-transform, max-age=31536000. | CDN URL. Optional iat refreshes the cache for 24 hours from that timestamp. |
|---|
| Other frameworks and agents | Next.js App Router only | Vercel documents @vercel/og for any framework deployed on Vercel. MCP is yours to build. | JS, Ruby, Python, PHP, WordPress, and MCP at https://ogpilot.com/mcp |
|---|
| Latency | NEED VERIFY | NEED VERIFY | NEED VERIFY |
|---|
| Cost | NEED CITE from your host | NEED CITE from your function and bandwidth plan | NEED CITE. Current plans are in billing after signup. |
|---|