Twitter card validates, but image does not show up


You have not specified a twitter:image tag in your page. Please ensure you have followed the troubleshooting steps before posting here.


I am having a similar issue…I have adjusted the image and it reflects the correct image on the website, however, it is still pulling a different image than I specified in Twitter.



You’ll need to share a link to a page which demonstrates this issue.


@andypiper all of my twittercards are not showing from my blog posts. Please help


You have no twitter:image or og:image tag in your page so there is no way for an image to be displayed in a card.


Hey @andypiper I sent you our blog category page which does not contain the tags(sorry I thought you would click through to an article). Our blog posts which are not being displayed have the tags implemented. Currently we are using Yoast plugin but have previously used the twitter plugin and it had no affect on the image so disabled it.

$ curl
User-agent: *
Disallow: /wp-content/uploads/

This says that Twitterbot (and other robots) should not be able to access /wp-content/uploads/ which is where your images are stored. This is covered in the pinned FAQ post.


@andypiper i changed my robots.txt allowing twitter to access images but am still not having any result


The robots.txt file still shows the same content for me. I noticed that it is on Cloudflare, is there any chance that it is cached somewhere and not yet updated?


@andypiper I have a similar problem.
My robots.txt is fine and I see the image in the validator, but I cannot see it when I post it on my site.

What is my problem?

I use this code on my share button:

var url = $($this).closest(“html”).find(“head”).find(“meta[name=‘twitter:url’]”).attr(“content”),
image = $($this).closest(“html”).find(“head”).find(“meta[name=‘twitter:image’]”).attr(“content”),
text = $($this).closest(“html”).find(“head”).find(“meta[name=‘twitter:title’]”).attr(“content”),//document.title,
shareURL = “”, //url base
full_url = shareURL +
“?url=” + encodeURIComponent(url) +
“&text=” + encodeURIComponent(text) +
“&image=” + encodeURIComponent(image),
params = “status=1,width=” + screen_width +
“,height=” + screen_height +
“,top=” + screen_top +
“,left=” + screen_left +
“,personalbar=0,toolbar=0,scrollbars=0,resizable=0”;, "twitter", params);

Thank you!

Edit: the solution is to insert only the “text” with the “url” parameter. The preview not show the image, but the post have all the card info.


Unfortunately it’s impossible to check if you don’t provide a live URL. If the card shows in the validator, the chances are it will render fine when you post the URL in a Tweet. Cards do not show in the web share dialog.