Skip to main content
SEO Auditor — validates that the page declares the Open Graph tags social platforms need to render a rich link preview.

Social sharing

Facebook, LinkedIn, Slack, WhatsApp and most chat apps build link previews from og:* tags.

Click-through

A title, description and reachable preview image make shared links stand out and get clicked.
The Open Graph protocol turns a web page into a rich object in a social graph through <meta property="og:…"> tags. This auditor fetches the page with jsoup, collects every og:, article:, music:, video: and book: meta tag, verifies the four required properties, checks that og:url and og:image are absolute and consistent with the page, and probes the og:image URL to confirm it serves a supported image type.

How it works

  1. Fetch — requests the HTML with jsoup (including HTTP Basic Auth when provided). A fetch failure produces an ERROR response.
  2. Collect — reads every <meta> whose property (or name) starts with og:, article:, music:, video: or book:, keeping document order and repeated values.
  3. Probe — when og:image is an absolute URL, sends a HEAD request (falling back to GET on 405) with a 5 second timeout and records the HTTP status and Content-Type.
  4. Rules — missing og:title, og:type, og:image and og:url are separate FAILs. Empty optional tags, duplicated non-array properties, relative or off-host og:url, relative, unreachable or non-image og:image, and articles without article:published_time are WARNINGs.
  5. Aggregate — ERROR wins, then FAIL, then WARNING; if every rule passes, the audit is SUCCESS.
  6. Specification pin — every run emits 37A-OpengraphAuditor-100 (INFORMATION) naming the Open Graph protocol pinned to https://ogp.me/. That check does not change overall status.

What it audits

Every row maps to one checkRule* method and one CheckCode. 37A-OpengraphAuditor-100 is emitted on every run, including fetch errors. Image rules 305 and 306 only run when og:image is absolute, and 306 is skipped when 305 fires. CheckCode suffixes use status ranges: 100 information, 200 success, 300–399 warning, 400–499 fail, 500–599 error.

Output documentation

Risks and considerations

Missing required tags

  • Without og:title, og:image and og:url, platforms scrape the <title>, the first large image and the shared URL, which often produces a wrong or empty preview.
  • og:type tells consumers how to treat the object (website, article, product, …); a missing type is treated as website by some scrapers and rejected by others.

URLs and canonicalisation

  • og:url is the canonical identity of the object in the social graph. A relative value or a value on a different host splits share counts and can point previews at the wrong site.
  • Relative og:image values are not resolved by every scraper; use an absolute https:// URL.

Preview image

  • The image must be publicly fetchable without cookies or authentication; a 403, 404 or timeout leaves the preview blank.
  • Serve JPEG, PNG, GIF or WebP with the matching Content-Type. HTML error pages or SVG returned under an image URL are ignored by most platforms.
  • The auditor probes with HEAD first and retries with GET on 405; servers that block HEAD with other status codes will warn.

Repeated and empty tags

  • The protocol allows arrays only for specific properties (og:image, og:video, og:audio, og:locale:alternate, article:tag, …). Repeating og:title or og:description is ambiguous; crawlers use the first value.
  • An optional tag with an empty content is a leftover from a template and should be filled or removed.

Articles

  • article:published_time lets platforms and search engines show a date and order content; it is expected whenever og:type is article.