@vercel/og is a code library for generating Open Graph images dynamically per URL from inside a deployed Next.js or Edge Function — it's the right pick when every page on your site needs its own auto-generated social card. TinyTools' OG image generator is a no-code, browser-based tool that gives you one finished PNG in under a minute. They aren't substitutes. If you're shipping a blog or product where each page deserves a unique card and you're already on Vercel (or Cloudflare Pages), use @vercel/og. If you just need one OG card for a landing page or repo and don't want to write JSX, deploy code, or learn Satori, TinyTools is faster and stays free without an account.
ImageResponse API. It's built on Satori, which converts a subset of HTML and CSS into SVG that the runtime rasterizes into PNG. You write a card layout as JSX, expose it as a Route Handler or Edge Function, and it returns a fresh image per request — cached aggressively at the CDN. The library is free; the cost is whatever your hosting costs: Vercel's Hobby plan (personal use) or Pro at $20/user/month for commercial sites.
| Feature | TinyTools | @vercel/og |
|---|---|---|
| Price (core features) | Free, forever | Library is free; hosting cost varies |
| Account / signup required | No | Vercel/Cloudflare account to deploy |
| Code required | No | JSX or HTML+CSS required |
| Dynamic per-URL generation | No (one-shot PNG) | Yes (any query param drives layout) |
| Visual / WYSIWYG editor | Yes | No — code only |
| Custom fonts | Built-in font picker | Load any TTF/OTF |
| Background images | Upload or pattern | Any URL or local asset |
| CSS Grid layout | N/A — visual layout | Not supported (Satori limit) |
| Flexbox layout | N/A — visual layout | Yes (primary layout model) |
| Output format | PNG download | PNG (or SVG via Satori directly) |
| Output size | 1200×630 (Twitter / OG default) | Configurable per response |
| Bundle / asset size limit | No limit | 500 KB max bundle (Edge) |
| CDN caching of output | Static page itself is cached | Auto cache headers added |
| Works without deploying | Yes | No — must deploy a function |
| Image stays on your device | Generated locally in browser | Rendered on your server / Vercel edge |
| Maintenance burden | None — open URL, get file | Code, deploys, font assets, function caps |
| Open source | Source-visible static site | MIT-licensed npm package |
Pricing here is unusual: @vercel/og the library is free — what costs money is the hosting it runs on. TinyTools has one price: zero.
| Plan / cost | TinyTools | @vercel/og (on Vercel, 2026) |
|---|---|---|
| Library / tool itself | Free, all features | Free (open source, MIT) |
| Free hosting tier | n/a — already free | Hobby: $0, 100 GB bandwidth, 1M edge requests, personal use only |
| First commercial tier | n/a | Pro: $20/developer/mo, $20 included usage credit, 10M edge requests |
| Cost beyond included usage | n/a | ~$2 per additional 1M edge requests |
| Self-host alternative | n/a | Yes — npm package runs anywhere Node or Workers runs |
Two nuances. Vercel's Hobby plan forbids commercial use, so a SaaS using @vercel/og on Vercel needs Pro. And OG images cache extremely well at the CDN — most sites generate each unique card once, so real edge-function consumption is tiny. Pricing rarely decides this; the real question is whether you want to write and maintain code.
@vercel/og is a serious tool for the right job, and we won't pretend otherwise. Pick it when:
The honest case for TinyTools is narrower but real:
@vercel/og means learning a stack you don't otherwise need. The TinyTools OG image generator skips it.:hover, limited transforms, 500 KB bundle cap. TinyTools renders in a real browser with no such constraints./public has none of those failure modes.You need a favicon, an OG card, and SEO meta tags for one URL. Recommendation: use TinyTools for the OG card, the favicon set, and the meta tags. You'll be done in five minutes and can drop the PNG into /public.
You want each post to have a unique card with the post title, author, and category. Recommendation: @vercel/og, no contest. You write one JSX template, point the route handler at your post metadata, and every existing and future post gets a card automatically. TinyTools would mean generating 100+ PNGs by hand and re-doing them every time a title changes.
Recurring asset work, but low volume and not deeply integrated with code. Recommendation: mixed. If a developer is already maintaining the Next.js site, having them stand up an @vercel/og template once is probably the right long-term move. If marketing wants self-service and the dev team is busy, TinyTools' OG generator will get a card shipped today without a ticket.
Both options score well. @vercel/og is open source and runs anywhere Node or Workers does — Cloudflare Pages even ships an official compatible plugin, so leaving Vercel is realistic. TinyTools has nothing to leave: every output is a PNG on your hard drive, no account, no migration. The real "lock-in" with @vercel/og is the time you put into the template — which pays for itself the first time you update 200 cards at once.
@vercel/og and TinyTools sit at opposite ends of the OG-image problem. @vercel/og is the answer when "OG image" is a feature of your platform — scaled, data-integrated, requires real engineering. TinyTools is the answer when "OG image" is a one-off task you want off your plate in five minutes. Plenty of teams use both: @vercel/og for the per-post cards on the main site, TinyTools for the pitch deck cover or the conference talk slide.
If you came here looking for a no-code, no-deploy alternative to writing a Satori template, that's exactly what TinyTools is. If you need a tool that generates 10,000 unique cards from your CMS, TinyTools isn't one — and we'd rather say that than pretend otherwise.