ScreenshotNeo

BlogHow-to

Why Does X Show a Summary Card Instead of a Large Image?

X link previews and photos attached to posts follow different rules. Here’s how to check your page’s card metadata and image access.

By the ScreenshotNeo team4 October 20265 min read

Short answer: If you shared a webpage URL, X is rendering a link preview based on the page’s card metadata and what it can fetch. Check the page’s twitter:card value and the image it references, but understand that X controls the final card. If you attached a photo directly to the post, link-card metadata is not the cause: uploaded photos and webpage previews are different formats.

1. First identify what you posted

What is in the post? What controls the display?
A photo uploaded as post media The uploaded image and X’s photo display behavior.
A webpage URL that generates a preview The linked page’s metadata, referenced image availability, and X’s rendering decision.
A Website Card in an X ad The ad creative format. X describes this as a compact image with a call-to-action button; it is distinct from an organic URL preview.

X says a single photo attached to a post with an aspect ratio between 2:1 and 3:4 displays in full. That guidance applies to an uploaded photo; it does not guarantee a large image for a shared webpage link. See X’s photo posting guidance and its separate website traffic ad formats.

2. Diagnose a webpage preview

  1. Copy the exact URL from the post. Include the same scheme, host, path, and query string; redirects or alternate page versions can return different metadata.
  2. Fetch the page’s HTML and inspect its metadata, especially twitter:card. A current third-party technical guide describes summary_large_image as the large-image card value and summary as the smaller summary format. This is a useful troubleshooting check, not a guarantee: X decides what it renders. See the guide’s Twitter Cards metadata and troubleshooting overview.
  3. Check that the intended image is actually referenced in the page metadata and that its URL can be fetched. Confirm the response is an image and that the image is not blocked by access controls or a failing redirect.
  4. After correcting the page or image response, check the exact URL in X again. Do not infer that a metadata change has worked until you observe the resulting preview.

Inspect the page with command-line tools

These commands help you see the response and search the returned HTML. Replace the example URL with the precise URL you posted.

curl -L -sS -D /tmp/x-page-headers.txt 'https://example.com/page' -o /tmp/x-page.html
cat /tmp/x-page-headers.txt
rg -in 'twitter:card|twitter:image|og:image' /tmp/x-page.html

Look for a card value and image reference, then request the image URL separately:

curl -L -sS -D /tmp/x-image-headers.txt 'https://example.com/card-image.jpg' -o /tmp/x-card-image.jpg
cat /tmp/x-image-headers.txt
file /tmp/x-card-image.jpg

A successful request from your machine is a useful check, but it does not prove X can fetch the same resource. If the page is personalized, protected, or served differently to automated fetchers, compare the public response with the response X receives only through observed results; do not assume a crawler-specific behavior without evidence.

3. If you attached a photo instead

Check that the media upload completed and that the photo is attached to the post, rather than relying on a URL preview. X’s photo help says one attached photo in the stated aspect-ratio range displays in full. For photo-upload failures, X Ads help suggests checking whether AdBlock is installed and disabling it on X’s domain before retrying. That advice concerns an upload that fails to load; it does not explain why an organic webpage URL displays a summary card. General posting failures may also warrant updating the browser or official app, per X’s posting help.

4. Common causes and fixes

Symptom What to check Next step
A link appears as a small summary The linked page’s twitter:card value. Check whether the page specifies summary_large_image; then retest the exact URL in X.
The preview has no image or the wrong image The page’s image metadata and whether the referenced image URL can be fetched. Correct the reference or image delivery, then observe the preview again.
You expected the uploaded-photo display rule to apply Whether the post contains uploaded media or only a webpage URL. Use the photo guidance for attached media; troubleshoot metadata for a webpage link.
An attached photo fails to load Browser or app behavior and, as X Ads help suggests, whether AdBlock is interfering on X. Retry with the blocker disabled on X or update the official app/browser if posting fails generally.
An ad shows a compact image and button Whether the post is an X Website Card ad. Review the ad format separately; it is not evidence of organic link-preview behavior.

5. Preview the page and image yourself

A screenshot can help you inspect the page and the image it serves, but it cannot reveal X’s internal card decision. For a quick visual check, capture the exact URL and compare it with the metadata and image responses you inspected above.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/page -o page.webp

More capture options are in the ScreenshotNeo API documentation. ScreenshotNeo is a website screenshot API and MCP server for developers. Its clean capture can accept consent banners and remove known consent platforms, newsletter popups, and chat widgets before the shot. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed as clean shots; response headers say the page verdict and billing status. AI agents can use its MCP server tools to take screenshots, get page information, and capture PDFs. The free plan includes 1,000 shots each month with no card; paid plans start at $5 for 3,000.

Or skip the browser setup

Make one request to capture the page:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://example.com/page"}, timeout=90)
open("page.webp", "wb").write(r.content)

See the ScreenshotNeo docs for the API options. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. You get 1,000 screenshots a month free with no card, and paid plans start at $5 for 3,000. A screenshot helps inspect a page visually; it does not guarantee how X will render its link card.

Sign up for 1,000 free screenshots a month, with no card required.

Frequently asked questions

Does changing twitter:card force X to show a large image?

No. It is a relevant metadata check, but X controls the final rendering. Verify the exact URL after making a change.

No. X’s stated rule is for a single photo attached to a post, not a webpage URL preview.

No. X documents Website Cards as an advertising format with a compact image and call-to-action button.