ScreenshotNeo

BlogHow-to

How to Fix Website Thumbnails That Show the Wrong Language for Indian Visitors

Find out whether a wrong-language thumbnail comes from a social card, Google Search, or the image itself, then fix the right metadata or localized asset.

By the ScreenshotNeo team4 October 20269 min read

Start by identifying where the wrong thumbnail appears. A social or messaging link card, a Google Search result, and another website may each use different signals. Then check whether the language is part of the image pixels or comes from the page metadata. If the image contains text in the wrong language, use a localized image asset; metadata cannot translate text already baked into the file.

For a social share card, serve the intended page language and image in the public HTML response, and set an absolute, publicly accessible og:image URL. For multilingual pages, use distinct URLs for each language and reciprocal hreflang annotations. Google uses visible page content to determine page language; lang and hreflang alone do not tell it what language the content is in. See Google’s multilingual site guidance and the Open Graph Protocol.

1. Identify the preview surface and reproduce it

Record the exact URL being shared or searched, the platform or search surface, the intended language, and the language shown in the thumbnail. A preview in a chat app is not necessarily controlled by the same mechanism as a Google Search image result.

  • Social or messaging card: inspect Open Graph metadata in the HTML and the image URL it names. Validate the exact URL with the affected service’s official preview debugger, if available.
  • Google Search result: inspect the indexed page and its visible language, localized URL, and associated images. Google chooses image previews algorithmically; publishers can improve signals but cannot guarantee a particular thumbnail.
  • Other surface: determine whether it reads Open Graph metadata, page content, a feed, or a separate image field. Follow that surface’s current documentation.

Check the thumbnail file itself. Open the image URL directly. If it shows Hindi, Tamil, Bengali, or another language in its pixels, correct the asset selection or generate a language-neutral image. Changing og:locale, HTML lang, or page text will not change pixels in an image file.

2. Inspect what an unauthenticated crawler receives

Do not rely only on a browser session that has cookies, a selected language, or client-side scripts already run. Check the public response for the canonical page URL, language-specific metadata, and the selected image. This is a practical way to diagnose crawler-visible metadata; platform crawlers can differ in how they request and process pages.

curl -sS -L -D headers.txt https://example.com/hi-in/product/ -o page.html

# Inspect the response headers and relevant markup.
cat headers.txt
rg -i 'canonical|og:(title|url|image|locale)|hreflang|<html' page.html

Replace the sample URL with the exact page that produces the bad preview. Confirm the final response is successful, not a login page, challenge, generic redirect, or error document. Make sure metadata appears in the returned HTML and does not depend on JavaScript being executed.

For a visual check of the public page, ScreenshotNeo can render the URL and return an image; its capture does not replace checking the raw HTML or the image file itself. See the ScreenshotNeo API documentation.

3. Set Open Graph metadata for social previews

The Open Graph Protocol defines og:image as the representative image URL and includes locale properties. Its core page properties include og:title, og:type, og:image, and og:url. Keep the title, description, and image consistent with the language of the page represented by that URL.

<!doctype html>
<html lang="hi-IN">
<head>
  <link rel="canonical" href="https://example.com/hi-in/product/">

  <meta property="og:title" content="उत्पाद का नाम">
  <meta property="og:type" content="website">
  <meta property="og:url" content="https://example.com/hi-in/product/">
  <meta property="og:image" content="https://example.com/images/product-hi-IN.jpg">
  <meta property="og:image:alt" content="उत्पाद का चित्र">
  <meta property="og:locale" content="hi_IN">
  <meta property="og:locale:alternate" content="en_IN">
  <meta property="og:description" content="उत्पाद का हिंदी विवरण">
</head>
<body>
  <h1>उत्पाद का नाम</h1>
</body>
</html>

Use the actual language of the page for the metadata values and locale. The example illustrates Hindi for India; for an English page, use English copy and a suitable locale such as en_IN. Open Graph locale spelling uses language and territory separated by an underscore. An alternate locale can describe another available version, but it does not substitute for a distinct page URL, a correct image URL, or translated page content.

Use an absolute HTTPS image URL that resolves publicly to the intended file. Verify its response and content type, and make sure access controls, hotlink protection, or redirects do not send a crawler to a different image. Open Graph also defines structured image properties such as dimensions and alternative text; provide accurate values when useful and supported by the image.

4. Give each language version a stable URL

For discoverability, Google recommends different URLs for different language versions rather than changing one URL according to cookies or browser settings. Link equivalent pages with a complete, reciprocal hreflang set, including each page itself. Use a language code, optionally followed by a region code; a country code by itself is not a language code.

<!-- Put the equivalent set on both localized pages. -->
<link rel="alternate" hreflang="en-IN"
      href="https://example.com/en-in/product/">
<link rel="alternate" hreflang="hi-IN"
      href="https://example.com/hi-in/product/">
<link rel="alternate" hreflang="x-default"
      href="https://example.com/product/">

Repeat the same set on each equivalent page and ensure every URL returns the intended language. x-default can identify a fallback page when appropriate. Keep each page’s canonical URL consistent with the page itself; do not canonicalize every translation to one language version if each is intended to stand as a localized page.

Google says its crawlers commonly request pages without an Accept-Language header, and may not discover every locale-adaptive response. Avoid forcing visitors to a guessed language based only on IP address or browser preference. Provide a visible language selector so people can choose. Google’s language determination relies on visible page content, not solely the lang attribute or hreflang.

5. Serve the matching image for each language

If text is embedded in the artwork, maintain separate assets and reference the correct one from each localized page’s og:image. If the thumbnail should work across languages, use an image without language-dependent text. Check the actual bytes returned by the image URL, not only its filename.

  • Use a stable, absolute URL to the correct image, not a relative path that resolves unexpectedly.
  • Check for redirects, authentication, geographic routing, and CDN rules that could return a generic or wrong-language file.
  • Ensure the image is accessible to the preview crawler and returns an image response, rather than an HTML error or challenge page.
  • For the same image reused across pages, Google recommends using a consistent image URL.

6. Validate and refresh the affected preview

After publishing the metadata or asset fix, fetch the page again and confirm the public response contains the intended values. Then validate the exact URL using the affected platform’s official debugger when available. LinkedIn documents its Post Inspector for inspecting and refreshing the preview used by new posts. Its help page notes that refreshing the URL affects new posts; existing posts can retain their old preview.

There is no universal refresh or cache procedure for every social network. A page edit may not immediately change a previously cached card. Use the debugger for that specific service, and verify the preview again before sharing. For Google Search, use its current Search Console inspection and indexing workflows as appropriate; a corrected page does not guarantee Google’s automated thumbnail choice.

7. Troubleshooting wrong-language thumbnails

Symptom Likely cause What to fix
Social card consistently shows the wrong language image og:image names the wrong locale asset, or the asset contains embedded text. Set the language-specific absolute image URL, or choose a language-neutral asset; open the URL and verify its actual image.
Browser shows the right page but crawler sees another language Language choice depends on cookies, a logged-in state, browser headers, or client-side rendering. Serve a stable public localized URL with its own metadata and visible content. Check the unauthenticated response.
Tags look correct in source but the card remains old The service may have cached an earlier preview. Use the affected service’s official preview debugger if available. Do not assume this changes already published cards.
Preview has no image or falls back to an unrelated image The image URL is inaccessible, relative, redirected, blocked, or not an image response. Use a public absolute URL; check redirects, status, response type, and crawler access.
Google shows a thumbnail different from og:image Google Search chooses image previews automatically and may use other page images. Improve page and image signals and ensure relevant images are crawlable. The selected result image cannot be guaranteed.
One language version is missing or points to a different version hreflang URLs are missing, invalid, or not reciprocal. Include all equivalent URLs, including self references, on each variant and verify each URL serves its named language.
og:locale is correct but the image language is wrong Locale describes the metadata locale; it does not translate or select the image by itself. Correct og:image and the image asset directly.

8. Performance, reliability, and cost

The metadata and URL fixes are ordinary page configuration and need no paid service. Keep image assets reasonably sized and served from a reliable public URL; excessive redirects or dependencies on client-side rendering add failure points for preview crawlers. Test a representative set of language URLs and image URLs after deployment, and repeat after changing CDN or localization rules.

A screenshot is useful for checking what a rendered page looks like, but it cannot establish which image a social platform cached or which image Google will choose. ScreenshotNeo is a website screenshot API and MCP server. Its response distinguishes clean shots from bot checks, blank pages, timeouts, failed loads, and cache hits; only clean shots are billed. Use screenshots as a visual diagnostic alongside HTML, image-response, and platform-preview checks.

Or skip the browser setup

Send one GET request with the page URL to ScreenshotNeo to receive a PNG, JPEG, WebP, or PDF screenshot. Cookie and consent banners, newsletter popups, and chat widgets are removed before the shot; each step can be turned off. Bot checks, blank pages, and failed loads are never billed, and response headers say the page verdict and whether the request was billed. An MCP server gives AI agents tools to take screenshots, inspect page information, and capture PDFs. One thousand screenshots per month are free with no card; paid plans start at $5 for 3,000 screenshots. Every feature is available on every plan. See the API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/hi-in/product/ -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://example.com/hi-in/product/"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com/hi-in/product/' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);

Replace YOUR_API_KEY with your key. The Node.js example uses fetch and Bun’s file writer; in Node.js, save the response with await import('node:fs/promises').then(({writeFile}) => writeFile('shot.webp', Buffer.from(await res.arrayBuffer()))) (or use a separate import and call) after checking the response status.

Create a free ScreenshotNeo account: 1,000 screenshots a month, no card required.

FAQ

Does adding lang="hi-IN" make Google show a Hindi thumbnail?

No. It labels the document for general language-aware software, but Google says visible page content determines its language. It also does not translate image text.

Should every Indian visitor receive the same language?

No. India has multiple language audiences. Offer explicit language choices and stable URLs for the language versions you publish rather than assuming location identifies an individual’s preference.

Will correct Open Graph tags guarantee Google’s thumbnail?

No. Open Graph is useful for social previews; Google’s image selection in Search is automated and has no guaranteed publisher-selected thumbnail.

Can a screenshot API tell me what LinkedIn or Google cached?

No. A screenshot captures a rendered page. Use the platform’s preview or search tools to inspect its own representation of the URL.