Design once. Render everywhere.
Every page deserves a great OG image.
Craft polished 1200×630 previews with a visual editor, then feed them live titles, authors, images, and themes through a render URL.
- 1200×630
- native OG size
- URL params
- dynamic fields
- PNG/API
- ready to paste
What you get
The OG image stack you wish you'd built yourself.
An editor, a hosted render API, and templates that don't embarrass you.
- Coming soon
Build once, reuse everywhere
Build a template, map any text or image field to a URL parameter, then reuse it across every blog post, doc, or changelog entry.
- Coming soon
Hosted render URL
A single endpoint returns a 1200×630 PNG. Drop it in your og:image tag. The result is cached at the edge.
Templates that pass review
A dozen starting points that look like real product design, not stock template work.
- Coming soon
Yours to export
Your drafts live in your browser, never on our server. You can export any design to React JSX when you want to move.
Templates
Start from a template that already looks shipped.
Each one designed to look like real product work, not stock templates.
How it works
Three steps.
About four minutes.
- 01
Pick a template
Open the template gallery and pick one, or start with a blank canvas.
- 02Coming soon
Map fields to URL params
Drop placeholders like {title} and {description} into your text or image fields. The editor wires them up as URL parameters.
- 03Coming soon
Paste the render URL
Paste the hosted render URL into your og:image meta tag. Every page now has its own image.
Drop-in
Coming soonOne URL, infinite per-page images.
No more hand-rendering OG images and checking them into git. You give the URL params, it returns a PNG.
- Works with Next.js metadata, Remix loaders, and Astro frontmatter.
- Edge-cached PNGs with sub-100ms responses on cache hits.
- Type-safe schemas so Twitter, Slack, and Discord know what to render.
export async function generateMetadata({ params }) {
const { title, author } = await getPost(params.slug);
return {
openGraph: {
images: [
`https://ogcanvas.app/api/og/4kp9m2x8` +
`?title=${title}&byline=${author}`,
],
},
};
}Make every shared link look like you meant it.
Pick a template, connect your fields, and paste the render URL into your meta tags.