crop.detail-at-edge
Image has detail outside the square crop. Level: Tip.
When it is raised
Raised when the image's header gives it a width at least 1.5 times its height, twitter:card is absent or any value other than summary_large_image, player and app, and the API decoded the pixels. The decode takes the centred square the full height of the image and compares the strip to its left and right with it; a strip counts as detail when its measured edge and contrast energy is at least 5 and at least 30% of the centre square's. It is raised when at least one side strip counts as detail; when both are flat, crop.safe is reported instead. The message names the left side, the right side or both, and gives the share of the width cut as (1 − height ÷ width) using the width and height of the decoded image, rounded to a whole percent.
What it does to a shared link
X's Cards documentation, since withdrawn, described the summary card as cropping to about 1:1, so the side strips named in the message would be cut from that card. The energy measure found edges or contrast in those strips, the kind text, faces or objects produce. A page with no twitter:card is judged here as a summary card.
How to fix it
- Move the subject, text and logo into the centred square whose width equals the image's height, leaving the side strips as plain background.
- Or set twitter:card to summary_large_image so the card keeps the full width.
- If you set summary_large_image, export the image at 1200×630 px to meet that card's 1.91:1 target.
Related checks
Sources
- X: https://developer.x.com/en/docs/x-for-websites/cards/guides/getting-started, read 2026-09-13 (since withdrawn).