Open Graph image resolves
og:image is absolute, returns 200 and is at least 1200 by 630.
- Severity
- medium
- Tier
- Passive: runs on any URL
- Category
- SEO
- Fix
- Summary below; full runbook in the Fix Kit, Module 02: Be found
- Id
- og-image
What this means
Your home page names an og:image with an absolute URL, that URL returns 200 with an image content type, and the image is 1200 by 630 pixels. This is the card every social platform and chat app shows when someone shares your link. Failing means the tag is missing or relative, or the image URL does not return an image; a wrong size is a warning.
How we test it
We fetch your home page, following at most 3 redirects, and read the content of the <meta property="og:image"> tag. We send a HEAD request to that URL and require a 200 status with an image content type. A resolving image of 1200 by 630 passes; a resolving image of another size warns; a missing tag, a relative URL, a non-200 status, or a non-image content type fails.
Why it matters
Every share on every platform shows this image or a blank. Platforms fetch the card once and cache it for days, so a broken image at the moment someone first shares your link is the card that everyone sees. In one case from the kit, an Open Graph route could throw mid-render on unusual data and return an empty 200, every platform cached the broken card, and even after the fix each one kept showing the old preview until it was told to re-scrape. The Fix Kit therefore requires og:image with explicit width and height, a fallback card for generated images, and a re-scrape after any change.
The fix
Set <meta property="og:image" content="https://YOUR_DOMAIN/PATH.png"> to an absolute URL of a 1200 by 630 PNG in the public directory, with og:image:width and og:image:height tags beside it (Next.js: openGraph.images as objects with url, width 1200, height 630 and alt), and if the image is generated at request time wrap the generator in try/catch and return a static brand card on any error. Then re-scrape the URL on each platform's share debugger, because the cached card does not refresh on its own.
The full runbook is in the Fix Kit, Module 02.
Prompt for your AI
Paste this into the coding agent that built the app. It reproduces the finding and stops before changing anything; the fix steps are in the kit.
Do not change anything yet. This is a verification pass only. Run: curl -s https://YOUR_DOMAIN/ | grep -oE '<meta property="og:image[^>]*>' Print every og:image, og:image:width and og:image:height tag you find. Run: curl -sI "$(curl -s https://YOUR_DOMAIN/ | grep -oE 'og:image" content="[^"]+' | cut -d'"' -f3)" | grep -iE "^(HTTP|content-type|content-length)" Tell me whether the URL is absolute, the status is 200, and the content type is an image. Find where the og:image is set in the code and whether it is a static file or a generated route; show me the lines. If it is generated, tell me whether the generator has a fallback on error. List what it would take to make the image resolve at 1200 by 630, without editing anything. Verify: the HEAD request shows HTTP 200 and an image content type; if not, report the status and stop.
Grade your own URL
Every grade lists this check with its evidence for your site. Two free grades a day.