RUEN
Link preview guide · 6 min read

Link without a preview: why the image is missing and how to fix it

You sent a link to Telegram or posted it on a social network, and instead of a nice card with a picture and a title you got a bare URL. Here are the seven reasons and a 2-minute checklist.

A classic problem

The page has an image and a title, yet the messenger acts as if it saw nothing. The good news: in 90% of cases the cause is found in two minutes. The bad news: there are seven causes and they stack. For example, you have an og:image, but the image is served through a redirect, and before that you managed to cache an “empty” version of the link. Below are all seven, each with a check and a fix.

How a social network decides whether to show a preview

When a link first lands in a chat or a post, the network sends a crawler to the page. It does not render the site like a browser: it just downloads the HTML and reads the meta tags og:image, og:title and og:description. If the tags are there, a card is drawn. If they are missing or the crawler could not read them, there is no card and the messenger honestly shows the bare link.

It follows that the preview is built not from what a person sees in the browser, but from what the crawler sees in the raw HTML. The page design, a picture inside the text, a JS gallery: the crawler does not care. “But my site has a header with a logo” is not an argument: you need a separate picture set in og:image.

Reason 1: there is no og:image tag at all

The most common case. Site builders and hand-written landing pages often do not add og:image by default, and it is easy to delete it while cleaning up meta tags. Check: open the page, press Ctrl+U (view source) and search for og:image. No tag, or an empty one, is your cause.

Fix: add three lines to <head>: og:title, og:description and og:image. Make the picture 1200×630, the size Telegram, VK, Facebook* and LinkedIn show without cropping. You can build one quickly in the OG Studio editor, with no Photoshop and no fiddling with sizes. On WordPress, the OGImg Covers plugin can make a cover for every post automatically.

Reason 2: relative image URL

Social networks cannot guess addresses. If og:image says /images/cover.png instead of https://site.com/images/cover.png, the crawler does not know which domain to download from, will not find the file and will quietly show the link without a preview. A browser copes with a relative address because it knows which site you are on. A crawler does not.

Fix: always put the full address in og:image, starting with https://. Also make sure the protocol really is https: messengers dislike mixed content (an https page with an http image).

Reason 3: robots.txt keeps the crawler out

Sometimes og:image is in place, but robots.txt contains something like Disallow: / “for the development period”, and nobody removed it. A social crawler respects robots.txt: if it is not allowed in, it does not read the page at all and never learns about your meta tags.

A subtle point that confuses everyone: a noindex meta tag does not stop a social crawler, but a block in robots.txt does. A page with <meta name="robots" content="noindex"> still gets a preview, because the crawler downloads the HTML and reads the tags. A hard Disallow closes the door in its face. Check site.com/robots.txt: if whole sections that hold your images are blocked, the crawler cannot download them either.

To hide from search but not from social networks, allow the messenger crawlers explicitly in robots.txt: User-agent: TelegramBot, Twitterbot, facebookexternalhit, LinkedInBot, Discordbot, each with Allow: /.

Reason 4: the image itself does not open

The crawler downloads not the page but the image at a separate address, and this step breaks more often than you would think. Open the og:image URL in incognito mode: instead of a picture you may find a 404 (not found), a 403 (access denied: hotlink protection or file permissions), a hosting placeholder, or an HTML “file not found” page returned with code 200 (success). Site builders love that last one, and the crawler honestly tries to build a preview from the HTML.

Check hotlink protection separately: some hosts serve images only when the request comes from your own domain. A browser passes, the Telegram crawler does not. Also look at the server response: redirects like “image → HTML” or an endless redirect break loading too.

Reason 5: the file is too heavy or exotic

The crawler waits a couple of seconds for the picture, does not get a multi-megabyte PNG in time and shows the link without a preview. This is especially common with photos straight from a camera, 5–8 MB each. The format matters too: everyone understands JPG and PNG, while more exotic ones are hit and miss. If in doubt, use JPG.

The fix is simple: keep the OG image within reasonable weight. A couple of hundred kilobytes is more than enough for 1200×630. Exports from OG Studio are optimized for social networks: a light PNG without multi-megabyte layers. Also make sure your CDN does not swap the file for something else on the first request.

Reason 6: a chain of redirects

The page answers with a 301 (permanent redirect) to another address, that one to yet another, and somewhere at the end the crawler loses the path or hits its redirect limit. A single short redirect is fine for almost every messenger, but trouble starts at the third or fourth hop, especially when http and https or www and non-www domains are mixed in the chain.

Check: any HTTP header checker (or curl in a terminal) shows the whole chain of responses for your link. Fix: cut it down to one step, with the final address in og:image, a single canonical domain and https everywhere.

Reason 7: the network remembered an “empty” card

The tricky one: you posted the link when og:image did not exist yet, the network downloaded the page, saw nothing and cached exactly that. Then you fixed everything, send the link again, and it still shows no picture. It is the same preview cache, only now it has cached “nothing”.

This is where our cache article starts: in Telegram use @WebpageBot, Facebook* and LinkedIn have official debuggers, and where there is no reset a version parameter in the URL helps. The full breakdown is in “Replaced the OG image but social networks show the old one?”.

Checklist: diagnose it in 2 minutes

  • 1. Page source — Press Ctrl+U and search for og:image. No tag → reason 1.
  • 2. Image address — Is it a full URL with https:// and a domain? Relative → reason 2.
  • 3. robots.txt — Are the page or the images blocked by Disallow? → reason 3.
  • 4. Image URL in incognito — Does the image itself open, with no 404/403 or redirect to HTML? → reasons 4 and 6.
  • 5. File size and format — Hundreds of kilobytes, JPG/PNG → reason 5.
  • 6. Was the link posted before? — Before og:image appeared? Reset the cache → reason 7.
  • 7. Final check — Send the link to your Saved Messages in Telegram and see what comes out.

The first three steps are usually enough: a missing tag, a relative address or a blocked robots.txt cover the vast majority of cases. If all seven points are fine and there is still no preview, run the link through the network’s debugger: it shows exactly what the crawler sees, and that narrows the search at once.

Make a preview that will definitely show

To avoid diagnosing at all, just follow the rules from the start: a 1200×630 picture, JPG or PNG, a light file, an absolute https address. The sizes each network needs are in the OG image size guide.

In OG Studio a card is built in 30 seconds: AI suggests the headline, the gallery gives you the template and the size for the chosen network is set automatically. All that is left is to export the PNG, put it on your site and check the link once in a messenger. After that the preview works on its own.

FAQ

Why does my link show no preview in Telegram?

Most often there is no og:image tag, the image address is relative instead of a full https:// URL, robots.txt blocks the crawler, or Telegram cached an empty card earlier. Reset the cache with @WebpageBot after fixing it.

Does noindex stop the link preview?

No. A noindex meta tag does not stop social crawlers: they still download the HTML and read the tags. A Disallow rule in robots.txt does stop them.

How big should the OG image file be?

A couple of hundred kilobytes is plenty for 1200×630. Heavy files, such as 5–8 MB camera photos, may be skipped because the crawler waits only a few seconds. Stick to JPG or PNG.

Make your OG image in 30 seconds

Type a headline, pick a template, download a 1200×630 PNG. Free, no sign-up required.
← All blog articles

*Meta Platforms Inc. is recognized as extremist and banned in Russia.