ua-diff.crawler-richer
Crawler's copy differs from the browser's. Level: Tip.
When it is raised
The API requests the page twice at the same time: with the API's crawler (user agent PolymorphismOGPreview/1.0, or the one chosen with ?ua=) and with a desktop Chrome user agent. Each request follows at most 7 redirects (8 requests). The comparison runs only when both requests get a 2xx response, and never for ?ua=browser. Three values are read from each copy, in the first 300,000 characters of the HTML, outside comments, and compared after trimming whitespace: the title (og:title, then twitter:title, then <title>), the description (og:description, then twitter:description, then <meta name="description">) and the image URL (the first of og:image, og:image:url, twitter:image and twitter:image:src, resolved against that copy's final URL, after redirects; a value that does not resolve to an http or https URL counts as empty). Raised when at least one value differs and, among the values that differ, the crawler's copy has at least as many non-empty values as the browser's. This includes a value that is non-empty in both copies but different.
What it does to a shared link
The rest of the result reads the crawler's copy. One cause is a single-page app that renders its tags on the server for crawlers and fills them in with JavaScript for browsers. When the title differs, the message shows the title in the crawler's copy.
How to fix it
- Check that the crawler's values for the fields named in the message are the ones you want shared.
- If the crawler's copy is out of date or generic, fix the server-side template that produces it.
- No change is needed if the crawler's copy is the one you intend.