LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Blog Overview /Digital Marketing/Tutorials / Link Previews with Images and Titles: Checking...
Read this article in other languages:

Link Previews with Images and Titles: Checking Open Graph Metadata

Link Previews with Images and Titles: Checking Open Graph MetadataLink Previews with Images and Titles: Checking Open Graph Metadata

Management Summary

A shared website link can appear as a preview card with a title, picture and short description in social networks or messaging apps. Open Graph supplies the page information used to build many of these cards. This helps communicate what the linked content offers before it is opened. The article explains why clear information and suitable images matter, while each platform still controls the final appearance. Checking page information alone cannot confirm the actual preview or refresh a card already stored elsewhere.

Contents
  1. Metadata and platform rules are different layers
  2. What the historical responses contained
  3. Eight image sizes, no universal crop
  4. Dimensions and image descriptions
  5. The historical finding on this blog
  6. A reproducible first check
  7. Questions and answers
  8. Sources

A shared link can become a preview with an image, title and description. The receiving platform chooses the layout and data sources. Open Graph tags are entries in the page’s HTML source that specify information such as its title and image. These tags help describe a page; the tags do not guarantee a particular card on every service.

A saved measurement from 5 September 2026 covers eighteen URLs. The findings below describe the responses received by that checker at that time, not current screenshots from eighteen social platforms.

Historical check, 5 September 2026: response metadata does not prove the final platform preview.
Historical check, 5 September 2026: response metadata does not prove the final platform preview.

Metadata and platform rules are different layers

The Open Graph protocol requires og:title, og:type, og:image and og:url. The recommended og:description adds a short description. The URL identifies the object, while the type distinguishes, for example, a website from an article.

Platforms may also use twitter: tags, oEmbed or other information. Slack explicitly documents several such sources. There is no universal rule that a missing Open Graph title always becomes the HTML title or that a missing Open Graph image always produces a text-only card. Explicit, consistent metadata reduces reliance on platform-specific choices.

What the historical responses contained

Five of the eighteen responses contained no detected Open Graph tags; thirteen included an image. The saved findings also record two non-success responses and a redirected response among those five. Missing tags in such a response do not establish what a permitted crawler or a normal browser would receive. The dataset does not contain complete response bodies, so assertions about unreadable page content cannot be verified from this record.

Nine responses had no twitter:card. Two wide images were paired with summary; a third summary declaration accompanied a square image. These are observed declarations, not proof of the final card size or of an accidental design choice.

Eight image sizes, no universal crop

The thirteen downloaded images used eight dimension pairs:

  • 1200 × 630: six images.
  • 2400 × 1350, 1300 × 731, 1280 × 686 and 1024 × 576: one each.
  • 585 × 368, 500 × 500 and 1024 × 1024: one each.

The ratio of 1200 × 630 is approximately 1.90:1. That is a useful wide format, not an Open Graph requirement. LinkedIn recommends 1.91:1 for customized Page-post previews, while its guidance also describes mobile display without cropping. The claim that every service crops every image to the same frame is therefore too broad. Neither 585 × 368 nor 500 × 500 proves that a service must switch to a small card.

Important content benefits from room around the edges, with the result checked on the intended platform. A local schematic preview cannot certify that crop.

Dimensions and image descriptions

Eight of the thirteen image responses lacked declared width or height. One saved checker finding flags a mismatch between declared and downloaded dimensions on the Wikipedia HTTP page. The summary does not preserve the original declared numbers.

og:image:width and og:image:height should describe the actual file. These optional fields can help consumers interpret an image; omission alone does not prove a timeout or explain a missing picture. Image access, response time, file type and the receiving service also matter.

Only two image entries contained og:image:alt, on MDN and BBC News. The protocol recommends an image description rather than a caption. Whether a service exposes that text to assistive technology depends on its implementation; titles and descriptions can also convey accessible information.

The historical finding on this blog

The recorded German blog index had a title, a 1200 × 630 image and summary_large_image, but no og:description. The checker recorded an available meta description. That supports a possible fallback in the checker, not proof that every platform displayed the correct wording. It is a dated finding, not a claim about the current index.

A reproducible first check

The following Bash example requires curl 8.4 or later and Python 3. It fetches one HTTPS page with limits, then lists Open Graph and Twitter metadata from an explicit HTML head. The parser handles multiline tags and several tags on one line. The example assumes UTF-8, does not run JavaScript and does not fetch images or reproduce a platform crawler.

Shell
set -eu
sample=$(mktemp)
trap 'rm -f "$sample"' EXIT
curl --fail --silent --show-error --location --max-redirs 5 \
  --connect-timeout 5 --max-time 20 --max-filesize 2097152 \
  --proto '=https' --proto-redir '=https' \
  --output "$sample" 'https://example.com/'
python3 - "$sample" <<'PY'
from html.parser import HTMLParser
from pathlib import Path
import sys

class HeadMeta(HTMLParser):
    def __init__(self):
        super().__init__()
        self.in_head = False

    def handle_starttag(self, tag, attrs):
        if tag == 'head':
            self.in_head = True
        if tag == 'meta' and self.in_head:
            fields = dict(attrs)
            name = (fields.get('property') or fields.get('name') or '').lower()
            if name.startswith(('og:', 'twitter:')):
                print(name, '=', fields.get('content', ''))

    def handle_endtag(self, tag):
        if tag == 'head':
            self.in_head = False

parser = HeadMeta()
parser.feed(Path(sys.argv[1]).read_text(encoding='utf-8', errors='replace'))
parser.close()
PY

The Open Graph and Social Card Checker also measures a downloaded image and supplies a local preview. Its fallback order and size warnings are checker rules, not a guarantee of a platform result. The embedded image preview avoids a direct image request from the visitor’s browser; the checker’s server still requests the page and image from the destination servers, which can observe those requests.

Questions and answers

Do changes update existing shared cards?

The platform determines caching and updates. Slack documents an approximately thirty-minute cache for link-expansion responses. LinkedIn’s Post Inspector can refresh information for new posts, while existing posts retain their previews. A new image filename cannot help until the platform has fetched metadata pointing to that filename.

Why can an image be missing despite an image tag?

Possible causes include an inaccessible URL, a login or bot challenge, an unsupported image or a platform-specific limit. An absolute HTTPS image URL and a successful unauthenticated fetch are useful checks. A random user agent does not reproduce a real platform’s IP address, access rules or cache. The intended service’s inspection tool and server logs provide further evidence.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in touch

A question or an idea for a web project? Tell me a little about it. This form uses reCAPTCHA and formconfirmed to protect against spam.

Write a comment

Practical experience and questions about the implementation are welcome here.

The email address is not published. Required fields are marked with an asterisk.

LUKASWOJCIK.COM · NEWSLETTER

Fresh ideas in your inbox

New articles, practical tools and updates from the projects.

Choose topics (optional)
No selection: all topics.

Subscription starts after confirmation by email. · Privacy

Privacy · Newsletter

Email address, language, selected topics and subscription/confirmation dates are stored to deliver the newsletter. Double opt-in is required. Every issue includes an immediate unsubscribe link. Formconfirmed checks the signup for spam. No email open or click tracking.

Read the full privacy policy ↗