When someone shares your page on LinkedIn, Facebook or Slack, the preview is built from a handful of og: meta tags. Enter one URL and this free check reads all six core tags from the served HTML, shows the value of each, marks the four the protocol requires, and names the ones that are missing.
6 tags and 1 image check, one URL. One GET of the page as VerandBot/1.0, redirects followed, 12 second timeout, the served HTML only. Every <meta> whose key starts og: is read, from property= or name=, and the first value for each key wins. og:url is compared with the address the fetch landed on.
og:title, og:type, og:image and og:url are the four properties ogp.me lists as required, so a missing one is a fail, and so is an og:image that is not an absolute URL. og:description and og:site_name are optional in the protocol and a missing one is a warn. An og:url naming another address is a warn too: only you know whether that is deliberate.
The image is not fetched, so its size, format and whether it loads are not checked; the OG Image Checker renders the card. Tags added by JavaScript are invisible, only the first 100,000 characters of the HTML are read, and a second, conflicting copy of a tag goes unreported. twitter: tags are counted, not audited. What a platform has cached is visible only in its own debugger.
One fetch, one pass over the meta tags, six questions. The card is the tool in motion on an example page, looped, and each step lights up while the card is doing it.
<meta property="og:image" content="https://IMAGE-URL">
The tool fetches the URL you typed, identifying itself as VerandBot, following redirects and giving up after twelve seconds. It reads the HTML the server sends, which is what a platform's link scraper receives too; nothing is rendered.
Each <meta> tag is matched on its property or name attribute. Any key that starts with og: is kept with its value, entities decoded, first copy winning, including extras such as og:locale.
The four required properties fail when absent, the two optional ones warn. The image URL must be absolute, and og:url is compared with the page that was actually fetched.
The card assembles the lines you would add, filled from the page's own title, description and URL where it can, with a placeholder where only you know the answer, such as which image to share.
A shared link is often the first thing a reader sees of a page, and it is built from tags most sites never look at. Here is what those tags are, which ones matter, how platforms cache them, and the mistakes that leave a link sharing with no image or the wrong words.
The Open Graph protocol is a set of <meta> tags that describe a web page as an object: what it is called, what kind of thing it is, which image represents it and what its permanent address is. Facebook introduced it in 2010 so that any page could appear in its feed as a tidy card rather than a bare URL, and published the spec at ogp.me. It spread well beyond Facebook. LinkedIn, Slack, Discord, WhatsApp, iMessage and most chat and social apps build their link previews from the same tags, which is why the preview for one URL tends to look alike wherever it is pasted.
The tags live in the page's <head>. Each one names a property in a property attribute and gives its value in content:
<!-- the four the protocol requires --> <meta property="og:title" content="How to Read a K-1"> <meta property="og:type" content="article"> <meta property="og:image" content="https://yourdomain.com/img/k1.png"> <meta property="og:url" content="https://yourdomain.com/blog/k1/"> <!-- optional, and used by nearly every card --> <meta property="og:description" content="What each box means."> <meta property="og:site_name" content="Your Firm">
A platform's scraper fetches the page when a link is first shared, reads these tags from the served HTML and stores what it found. It does not run the page's JavaScript in any reliable way, so a tag injected by a script after load may as well not exist. That is also why this checker reads the served HTML rather than the rendered page.
ogp.me lists four properties as required for every page and a longer list as optional. The checker reads all four required ones and the two optional ones that nearly every card displays:
| Tag | In the spec | What it sets, and what happens without it |
|---|---|---|
| og:title | Required | The headline of the card. Without it, platforms fall back to the <title> element or whatever text they can find, which may carry a site-name suffix you would not choose for a share. |
| og:type | Required | What kind of object the page is: website for most pages, article for posts. Facebook treats a page without it as a website. |
| og:image | Required | The picture on the card, and the largest part of it. Without it the link shares with no image, or with one the platform chose from the page on its own. |
| og:url | Required | The canonical address of the object, its permanent ID in the graph. Platforms attribute the share to this URL, so it should name the page itself. |
| og:description | Optional | The one or two lines under the title. Without it, platforms use the meta description, pull text from the page, or show nothing. |
| og:site_name | Optional | The name of the site as a whole, shown above or beside the title on several platforms. |
Other properties are worth knowing even though they are not scored. og:image:alt describes the image for people who cannot see it, and ogp.me says a page that specifies an og:image should specify it too. og:image:width and og:image:height let a scraper lay out the card before the image has downloaded. og:locale declares the language. The checker lists any of these it finds under "other og: tags", so you can see what the page carries beyond the core six.
Each platform publishes its own image guidance, and it changes, so the platform's own page is the source to trust. Facebook's current sharing documentation asks for images of at least 1200 x 630 pixels for high-resolution screens, an aspect ratio as close to 1.91:1 as possible so the image is not cropped in the feed, a floor of 600 x 315 pixels for the large link card, and a file no bigger than 8 MB. An image that meets those numbers generally works well on LinkedIn and Slack too, but check their documentation before you rely on it.
Two rules hold everywhere. The URL has to be absolute, starting with https://, because the scraper reads the tag with no knowledge of the page it came from, so a relative path such as /img/card.png resolves to nothing; this checker fails a relative image for that reason. And the image has to be publicly fetchable: an image behind a login, a bot wall or a robots.txt rule is invisible to the scraper even when it loads fine in your browser. The checker does not fetch the image, so it cannot tell you either of those things about the file itself. The OG Image Checker is the tool for the image and the card it produces.
Platforms do not scrape a page every time it is shared. They scrape it once, store the title, description and image, and reuse them. Fix a missing og:image today and a link you share an hour from now can still appear without one, because the platform is showing you its stored copy. This is the single most common reason people believe their tags are broken after they have fixed them.
The remedy is to ask the platform to scrape again. Facebook's Sharing Debugger shows exactly what Facebook read from a URL and has a button to scrape it again. LinkedIn's Post Inspector does the same for LinkedIn. Chat apps rarely expose a tool; a changed query string on the URL usually forces a fresh fetch there. Run this checker first to confirm the tags in the served HTML are right, then refresh each platform's copy.
They are not a ranking signal that anyone has documented, and a page that claims otherwise is guessing. Google does read two of them for display, though. Its title-link documentation lists content in og:title tags among the sources Google may use to write the blue link in a result, alongside the <title> element and the page's headings. Its site-name documentation says the system that picks the name shown beside a result considers og:site_name on the home page. So a careless og:title can surface in Google as well as on LinkedIn, and a missing og:site_name removes one of the inputs Google uses to name your site.
A link preview leaves the page behind. When an advisor, attorney or practice shares an article on LinkedIn, the card carries the og:title, the og:description and the image, and none of the disclosures, qualifications or context around them on the page. If the description was filled in automatically from the first paragraph, or copied from a meta description written to win clicks, a performance claim or an outcome can end up standing on its own in a colleague's feed, with the firm's name above it.
For firms whose marketing is reviewed before it goes out, that makes the preview text marketing copy in its own right. Write the og:title and og:description on purpose, read them as a reader of the card would, with no page around them, and review them with the page rather than leaving them to a plugin's defaults. Choose the image the same way. This checker shows every value in one place, which makes the text easy to read over; it flags what is missing, not whether the words are appropriate, and that judgement stays with whoever reviews your marketing. None of the ranking pages we reviewed for this checker raise it.
/img/card.png works in the page and fails in the scraper. Always the full https:// address.og:url tells platforms every page is the home page. Shares can pick up the home page's card, and share counts pool on the wrong URL. The checker compares og:url with the page it fetched and warns when they differ.og:title values. Platforms pick one, not always the same one. This checker reads the first copy of each tag, so view the page source if the values look wrong.property. Many scrapers accept name as well, and so does this checker, but property is the form every platform documents.On every page: an og:title written for the card rather than copied from a title tag with a site-name suffix, a one-sentence og:description that reads well with nothing around it, an absolute og:image at the platform's recommended size with an og:image:alt beside it, an og:url that names the page itself, the right og:type, and the site's name in og:site_name. X reads Open Graph values when its own tags are missing, but the card type is set only by twitter:card; the Twitter Card Validator audits those. Then check the page again after every template or plugin change, because Open Graph tags are generated in one place and break everywhere at once.
Six things that are true of this tool, each one backed by a line in the code that runs it.
The request carries a URL and nothing else. There is no account, no session and no database behind the tool, so there is nothing for us to keep about you.
The response carries each og: value in full, so the card shows what a platform will read, word for word, beside the verdict. Missing tags come back as a list, with markup assembled on the page.
The tags are read by a fixed pattern and checked against a fixed list of six keys. No model reads the page, so the same HTML gives the same answer every time.
The page goes through the same fetcher and page audit Verand's deep crawl runs on customer sites, with the render fallback switched off. The per-tag read is added on top for this page, because the audit only records whether any tag is present.
The image is not fetched, scripts are not run, and duplicate tags are not compared. The card says so beside the result rather than in a footnote.
Each run is one page fetch, so it costs nothing and is never metered. The one limit is a courtesy to the sites being fetched: 20 checks a minute per visitor.
What the tags are, which ones a page needs, and why a fixed preview can still look broken.
They are meta tags in a page's head, each with a property such as og:title or og:image and a value, that describe the page for any app that builds a link preview. Facebook introduced the protocol in 2010 and published it at ogp.me; LinkedIn, Slack, Discord, WhatsApp, iMessage and most other apps now read the same tags. When a link is shared, the platform fetches the page, reads those tags and draws the card from them.
ogp.me lists four as required for every page: og:title, og:type, og:image and og:url. og:description and og:site_name are optional in the spec but shown by nearly every card, which is why this checker reports all six, failing a missing required tag and warning on a missing optional one. If the page has an og:image, ogp.me also says it should carry og:image:alt.
Facebook's sharing documentation asks for at least 1200 x 630 pixels, as close to a 1.91:1 aspect ratio as possible, at least 600 x 315 for the large link card, and a file under 8 MB. Other platforms publish their own guidance, so check it for the ones you care about. Whatever the size, the URL must be absolute and publicly fetchable. This checker confirms the tag is present and absolute; it does not download the image, so the OG Image Checker is the place to see how it renders.
Because they stored it. Platforms scrape a URL when it is first shared and reuse that copy, so a fix does not appear until they scrape again. Confirm the served HTML is right with this checker, then ask each platform to refresh: the Facebook Sharing Debugger has a button to scrape the URL again, and LinkedIn's Post Inspector does the same for LinkedIn. Neither needs to be used on a page you have not changed.
Not as a documented ranking signal. Google does read two of them for display: its title-link documentation lists og:title among the sources it may use for the title shown in a result, and its site-name documentation says og:site_name on the home page is one input to the site name shown beside results. Their main job is the preview people see when your page is shared.
X falls back to the Open Graph values for the title, description and image when the matching twitter: tags are absent. The card type has no Open Graph equivalent: it is set only by twitter:card. This checker counts the twitter: tags a page carries and says when X will fall back to og:, and the Twitter Card Validator audits them one by one.
Six tags decide how a link looks; what it says is the page behind them. Verand writes articles from your own expertise and credentials, so the page is worth sharing and worth finding on Google and in ChatGPT, Gemini, Perplexity, Claude and Google's AI answers. It then tracks where you rank and where those answers name you, and gates every draft so a claim your regulator would not allow never publishes.
Content built to rank in
Google and get cited by
ChatGPT
Perplexity
Gemini
Claude, with every claim checked before it goes live.