
Paste a URL into Twitter/X, Slack, Notion, a blog, or a docs site and the expanded preview image often decides the click. That image usually comes from Open Graph (og:image) or Twitter Card meta tags. Indie developers ship the feature, then leave the default browser screenshot—or a blurry 1200×630 logo collage—as the preview. The card looks unfinished the moment it unfolds in someone's timeline, and the click never happens.
An OG / Twitter share image has one job: in about three seconds, say what this is, who it is for, and what result they get. It is not a feature dump and not a miniature landing page. Generating the card locally in the browser turns "edit headline → export PNG → update meta" into a repeatable checklist, and unreleased product UI never has to hit a third-party design host. For a solo founder, that checklist is the difference between posting on ship day and "we'll make a proper card next week."
1200×630 (about 1.91:1) remains the safe default for OG and large Twitter summary cards:
| Context | Recommendation | Notes |
|---|---|---|
| Blog / docs / product OG | 1200×630 | Friendly to most crawlers and IM unfurls |
| Twitter/X large image card | Prefer the same ratio | Extreme crops get clipped |
| Small summary card | Keep a separate square | Do not reuse the large-card layout blindly |
Put the title and any critical icon in the center safe area. Leave margin so rounded corners and platform chrome do not eat your headline. High-contrast type beats thin ornaments that vanish after compression. Dark backgrounds want light type; light backgrounds want the reverse. Treat decorative lines as optional, not load-bearing. If you need a logo, keep it small and secondary—people are deciding whether to open the link, not memorizing your wordmark.
Lock four layers and delete anything else:
A common indie mistake is cramming five store-screenshot selling points into one OG image. The share card only needs to win the click; the landing page and store shots handle depth. Keep the headline aligned with the page H1 and the tweet's main sentence so the tap does not feel like bait. If your store hero says "export App Store screenshots in minutes," the OG image should say a close cousin of that sentence—not a new slogan invented for Twitter.
Open the Twitter / OG share image tool and stay in the browser:
public folder or CDN; update og:image and twitter:image.Local image processing is the privacy story: grayscale builds, NDA betas, and pre-store screens stay on your machine. When store creatives and social promotion share one selling-point table, the OG card should reuse the first-store-screen claim and only change ratio and tone. That single source of truth also keeps contractors and future-you from inventing conflicting headlines in Figma files nobody owns.
If you also make portrait social cards for other networks, keep the same fact order. Channels can change voice; they should not invent conflicting claims. The cheapest consistency system is a three-row spreadsheet everyone copies from before opening any design tool.
?v=./og-default.png.Link previews are how your product shows up in the social graph. Use the local og-share tool to lock size and hierarchy, keep sensitive screenshots in the browser, and point og:image at a real asset every release. For most utility apps, a clear outcome line plus honest UI beats cinematic backgrounds. Indies win by making "good enough share art" cheap to repeat—not by waiting for a perfect brand photoshoot that never lands on the calendar.