Free tools / open-graph-checker
FREE TOOL · RUNS ON OUR SERVER
Open Graph Checker
Reads a page the way a link-preview crawler does, with no JavaScript run, and shows every og: and twitter: tag on it, what the og:image really is, and the card those tags add up to.
Classic SEO and social sharing, not AI visibility. Nothing on this page measures whether an assistant mentions or cites you.
Check a page
example output
not measured · nothing has been checked yet
| Level | About | Checked against | Finding |
|---|---|---|---|
| warning | og | ogp.me | og:type is absent. The Open Graph protocol lists it as one of the four required properties for every page. |
| warning | og | ogp.me | og:image is "/img/trail-card.png", not an absolute URL. The protocol calls it "an image URL"; it was resolved against the page for this read, and crawlers vary on whether they do the same. |
| warning | og | mechanical | og:image:width/height say 1200×630; the image is 600×315. Crawlers that trust the declared size will lay the card out wrong. |
| note | mechanical | No twitter:card. Without it X chooses the card type itself; the og:* tags are still read as fallbacks. |
This check runs on our server, and it has to: a browser cannot read another site’s HTML. The address you type goes to api.answermend.com, which fetches that page, the first 64 KB of its og:image (enough to read the pixel size), and the status of up to three addresses its canonical tags name. Nothing else is fetched, and no script on your page is run. What our server keeps of a run is set out on the privacy page.
WHAT IT READS
The HTML your server sends, before any script runs
Apple says Messages runs no JavaScript and follows no meta redirects when it builds a link preview. This checker reads a page the same way, so a tag that a script adds after load shows up here as absent.
In the order it is read
- ogEvery
og:*tag, raw, in page order. Repeats are kept, becauseog:imagemay legitimately appear more than once. A tag written withname=instead ofproperty=is noted: the protocol’s own examples useproperty. - requiredThe four properties ogp.me calls required for every page:
og:title,og:type,og:imageandog:url. A missing one is named, never left blank. - og:imageFetched for real. You get its HTTP status, its content type, and its pixel size read from the file’s own header (PNG, JPEG, GIF, WebP). An SVG, or a header we could not read, says not read with the reason.
og:image:widthandog:image:heightare shown as what the page declares and are never passed off as the measurement. - twitterEvery
twitter:*tag, and whethertwitter:cardis set. - fallbacksThe
<title>and the meta description, which previews tend to reach for when theog:tags are missing. - redirectsEvery hop, with its status. Everything is then read from the address where the redirects stop.
What it does not do, said out loud
It does not render the page, log in, or ask any platform what it has cached. The preview card is ours and generic: it shows what your tags contain, not what one particular app will draw. Each platform crops, truncates and falls back in its own way.
An image or page that could not be fetched comes back as not measured, with the reason. A timeout from our server tells you about our server, not about your page, so it is never reported as a broken image and never as a good one.
WHO WROTE THE RULES
Each platform’s own page, and where there is none
The protocol is one page at ogp.me. Everything past it is set platform by platform, and some platforms publish nothing. Each card links the page it comes from. Where there is no page, the card says so and stops.
The protocol
Four properties are required on every page: og:title, og:type, og:image, og:url. og:url is defined as “the canonical URL of your object”, which is why the canonical checker compares the two.
Its webmaster guide says images are cached by URL and are not updated unless the URL changes; its Sharing Debugger triggers a fresh scrape. og:url should be the plain address, without session or tracking parameters.
Its best-practices page asks for images at least 1080 pixels wide for high-resolution screens, and says declaring og:image:width and og:image:height lets the crawler render the image without downloading it first.
Its help page lists og:title, og:image, og:description and og:url, and gives a minimum image size of 1200×627 pixels, a recommended ratio of 1.91:1, and a 5 MB file limit.
Apple Messages
Reads og:title, og:image, og:description, og:site_name and og:video. Images should be at least 900 pixels wide, and ones under 150 pixels wide may be ignored or shown as an icon. The linked page itself is capped at 1 MB. No JavaScript is run and meta redirects are not followed.
Slack
Its robot looks for oEmbed and Twitter Card / Open Graph tags when it unfurls a link, fetches the media those tags point at, and caches the result for about 30 minutes.
api.slack.com/robotsX (Twitter)
X’s card documentation could not be reached when this page was written: the old developer.twitter.com address redirects to the front of the new docs site, and the card pages we tried there were not found. We do not restate its rules from memory. The twitter:* tags are listed above as your page writes them.
Discord and WhatsApp
We found no publisher documentation from either to cite. What they do with your tags is observed behaviour that can change without notice, so it is not stated here as a rule.
Every page above was read on 2026-09-13.
QUESTIONS
What people ask before they run it
Why does my preview still show the old image?
Facebook says images are cached by URL and are not updated unless the URL changes, and its Sharing Debugger triggers a fresh scrape. Slack says it caches an unfurl for about 30 minutes. Other platforms keep their own caches, so a corrected tag can take time to show, and renaming the image file is the one change every cache notices.
Why does it say the image size was not read?
The size is read from the image file’s own header, not guessed. An SVG has no pixel size, some formats keep it past the first 64 KB we fetch, and a server can refuse or fail. In each case you get the reason. og:image:width and og:image:height are shown separately, as what your page declares.
Does it see tags added by JavaScript?
No, on purpose. It reads the HTML your server sends, which is what a link-preview crawler that runs no scripts receives. Apple says Messages runs no JavaScript when it builds a preview. A tag that only exists after a script runs shows here as absent, and that is the finding.
Is this an AI visibility check?
No. Open Graph tags are classic SEO and social-sharing metadata, and nothing on this page measures whether an AI assistant mentions or cites your site. That is a separate question, answered by a separate free check.
THE OTHER KIND OF VISIBILITY
Tags decide the card.
An answer is a different question.
Whether an AI assistant names you when someone asks about your category is not something any tag on this page can show. The AI Visibility Checker asks.