twitter:card is not set to summary_large_image
Your twitter:card is set to something other than summary_large_image, so X renders a small thumbnail instead of a full-width image. Here is when that is the right call and when it is not.
What you are seeing: On X your link shows a small square image to the left of the text rather than a large image above it.
The difference on the timeline
summary_large_image renders your image across the full width of the card with the title and description underneath. summary renders a small square thumbnail beside the text, taking up a fraction of the vertical space.
In a scrolling timeline that difference is substantial. The large card is several times the visual footprint and the image is legible; on the small card the image is decoration at best and often unreadable.
When summary is right
Rarely, but not never. If your image is genuinely incidental — a generic avatar, a directory listing, a profile page where the text is the content — the small card is honest about that and the large layout would just stretch a weak image across the timeline.
For articles, landing pages, products, documentation and essentially anything with a designed social image, summary_large_image is the right choice.
Check the image fits the layout
summary_large_image expects a 1.91:1 image, the same ratio as the Open Graph recommendation. If you are switching from summary, check the image is 1200 × 630 rather than the square asset the small card was fine with — a square image in a large card gets centre-cropped and loses roughly half its height.
Frequently asked
Does changing twitter:card update posts I have already shared?
No. X caches card metadata per URL. Existing posts keep the old layout. Update the tag, then confirm the new card renders before sharing the URL again.
What image size does summary_large_image need?
1200 × 630 at a 1.91:1 ratio, the same as the Open Graph recommendation, with a hard minimum around 300 × 157. One image serves both if you build it at 1200 × 630.
Check your page
Run your URL through the checker to confirm the fix is live and see how the card renders on every platform.
Test a URL