A link with no image and a broken preview looks unfinished, and a shrinking number of people click something that looks unfinished.
What actually controls a shared link’s preview
When someone pastes your URL into Facebook, LinkedIn, Slack, or Discord, that platform’s crawler fetches the page and reads a specific set of <meta> tags in the <head>, the og: prefixed Open Graph tags. It doesn’t guess from your visible page content or grab a random image, it reads exactly what these tags say, and shows nothing useful if they’re missing or wrong.
Why Twitter needs its own separate set
Twitter/X reads its own twitter: prefixed tags rather than the Open Graph ones, though it falls back to Open Graph tags for anything it can’t find in its own set. That’s why most sites, and this generator, output both: full coverage for Twitter’s card renderer and everyone else’s Open Graph reader, from one set of fields.
The image mistake that breaks the whole preview
The single most common reason a link preview shows no image at all is a relative image path where an absolute one is required. A normal <img src="/photo.jpg"> works because the browser resolves it against the page it’s already loaded. A crawler reading your og:image tag has no such context, it needs the complete, absolute URL starting with https://, exactly as it would look pasted directly into an address bar.
If you’re already running an SEO plugin
Yoast, RankMath and most other WordPress SEO plugins generate these tags automatically once you fill in a page’s title, meta description and featured image in their own interface, no manual tag-pasting required. This tool earns its keep for pages outside that flow: a landing page built without WordPress, a one-off campaign page, or simply checking exactly what tags a page is (or should be) sending before you trust a plugin’s defaults.