OG Image Debugger Checklist: Why Your Preview Is Blank

Published October 15, 2026 by Balaji

Uncategorized

This OG image debugger checklist works from the crawler’s side, because that is where a blank preview is decided. A social network fetches your page, reads the tags, fetches the image URL once, and caches whatever came back. Work through the steps in order and stop at the first failure.

1. Check the tags in the raw HTML

Run curl -s https://example.com/post | grep og:. If the tags are missing, they are being added after the page loads. The Open Graph protocol places them in the <head> of the served document, so render them on the server. In Next.js, generateMetadata does this.

2. Check the image URL is absolute

og:image should be a full https URL, not /images/card.png. Duplicate tags are allowed, but ogp.me states that the first tag from top to bottom wins on conflict, so a leftover tag from an SEO plugin can override yours.

3. Fetch the image the way a crawler does

curl -sI "https://app.jsontoimg.com/api/v1/img/<design-id>?headline=Hello&version=1&sig=..."

You want 200 and an image Content-Type (MDN reference). Anything else maps to a row in the table below.

4. Read the status code

Status Meaning for a signed jsontoimg URL Fix
200 Image served Problem is cache or tags; go to step 6
503 with Retry-After First render still running Request it again; crawlers retry, but warm the URL after publishing
401 Signature does not match the query string A proxy or CMS re-encoded a parameter; use the minted url verbatim
400 Duplicate query key, such as two headline parameters Remove the duplicate before the URL reaches the page
402 Workspace is out of image quota Buy a prepaid pack or upgrade; renders stop at quota

5. Rule out blocked crawlers

If the page or image sits behind a login, a staging password, or a robots.txt rule that disallows the crawler, the fetch fails before it reaches the image. Test from a network outside your VPN.

6. Re-scrape and bust the cache

Networks cache previews. After a fix, re-fetch in the Facebook Sharing Debugger or the LinkedIn Post Inspector. If the old image persists, change the image URL itself. A signed jsontoimg URL changes whenever the title or version changes.

7. Add the alt text

The protocol asks for og:image:alt next to og:image. It does not fix a blank card, but it is on the same checklist for a reason.

The end-to-end design of the flow is in the Open Graph image generator guide.

FAQ

Why is my OG image not showing?

The most common causes are tags added after page load, a relative image URL, an image URL that returns a non-200 status to the crawler, or a cached preview from before the fix.

What does a 503 on a signed jsontoimg URL mean?

The first render of that exact URL is still running. The response carries a Retry-After header, and crawlers and the Sheets and Airtable add-ons retry on it.

Why does a signed URL return 401?

The signature covers the query string. If anything re-encodes, reorders, or edits a parameter, verification fails with 401 and no render happens.

How do I refresh a cached share preview?

Re-scrape the page in the Facebook Sharing Debugger or LinkedIn Post Inspector. If the cached image sticks, change the image URL, for example by bumping the template version.

Related Resources