Troubleshooting Guide

English | 日本語

We created this troubleshooting guide to help you identify and resolve commonly encountered issues during Cards development.

We’ve tried to make this guide as useful and comprehensive as possible. If there’s something wrong, or you feel something should be added, please reach out to us via the Twitter Cards Discussion.

  1. Card Validator
    1. When I validate, I get the message, “exceeded 15.seconds to pink-floyd while waiting for a response for the request, including retries (if applicable)”
    2. When I validate, I get the message, “Failed to get a proxied URL for the image.”
    3. When I validate, I get the message, “Invalid Image. This image cannot be fetched.”
    4. When I validate my App Card, I get the message, “Caught Exception in App Proxy Service…”
    5. When I validate my App Card, I get the message, “Invalid card type.”
    6. The validator can’t reach my testing/staging environment.
  2. Player Card Whitelisting
    1. How do I get my Player Card approved?
    2. My Player Card hasn’t been approved for whitelisting. What does that mean?
    3. I’ve re-submitted my Player Card for approval. What happens next?
  3. Card Display Issues
    1. My tweet is missing the image/video/summary text.
    2. My Card doesn’t appear in the timeline.
    3. My tweet shows an outdated version of my Card.
  4. Refreshing a Card in a Tweet
    1. I updated my site meta tags, but my tweet shows the old Card. How do I refresh the Card?
    2. My Card information now refreshes, but images are not updating. How do I get the images to refresh?
  5. Debugging Player Cards
    1. How do I test my Player Card experience?
    2. My Player Card shows summary information instead.
    3. My video isn’t playing properly in the Player Card.
    4. My Player Card does not render properly on mobile.
    5. My Player Card is having SSL/mixed content issues. What do I do?
  6. Debugging App Cards

Card Validator

When I validate, I get the message, “exceeded 15.seconds to pink-floyd while waiting for a response for the request, including retries (if applicable)”

This error often looks like:

There are a couple possible explanations for this:

  • Your CMS site is configured to block web crawlers. If you are using Wordpress, Blogger or another hosted CMS provider, your settings may inadvertently blocking crawler access from our servers. You can read our CMS integration page to see how to enable web crawler access to your CMS site.
  • Your website has a robots.txt that is blocking us from getting your Card metadata. To learn how to diagnose this case, click here.
  • Your Apache .htaccess file is denying requests.You can check this by opening your .htaccess file and looking for something like the following:

     
    deny from 199.59.149.* 
    

    Be sure to remove any deny directives from your .htaccess file.
  • An image you are providing is too large for our web crawler to download. Our web crawler will typically download 2MB images. If you are seeing this issue, you may want to scale down the size of the image significantly and try again.
  • A network lag is causing a delay in fetching your site/images. If your server is in a remote location and/or has unreliable network access, our web crawlers may have difficulty downloading your meta tags and/or images. Please retry as necessary.
  • Your web host may be blocking web crawler access to your site. You should contact your hosting provider and ask them to ensure they are not blocking Twitter access by either IP or ASNUM. The following are Twitter’s IPs:
    • 199.59.148.209
    • 199.59.148.210
    • 199.59.148.211
    • 199.16.156.124
    • 199.16.156.125
    • 199.16.156.126

    Also, Twitter’s ASNUM is AS13414.

As a side note, we’re working to improve error messages in the Card validator. Please be patient as we make updates.

When I validate, I get the message, “Failed to get a proxied URL for the image.”

This error often looks like:

The most common cause is that the image specified via the twitter:image tag isn’t publicly accessible on the web. This often happens when testing against a staging/internal-only network. To resolve, make sure your image can be accessed via the public internet.

If you want to make your private network accessible to the validator, click here to see some options.

When I validate, I get the message, “Invalid Image. This image cannot be fetched.”

This error often looks like:

There are a couple possible explanations for this:

  • The dimensions of the image are smaller than the recommended size. We suggest that Product Card images (among others) are a minimum of 160 x 160 pixels in size.
  • A network lag is causing a delay in fetching your images. If your server is in a remote location and/or has unreliable network access, our web crawlers may have difficulty downloading your meta tags and/or images. Please retry as necessary.

As a side note, we’re working to improve error messages in the Card validator. Please be patient as we make updates.

When I validate my App Card, I get the message, “Caught Exception in App Proxy Service…”

This error often looks like:

The most common cause is that the ID specified for the twitter:app:id.* tag is prefixed with “id”. Try removing the prefix (so it only has an integer value) and re-submitting to the validator.

When I validate my App Card, I get the message, “Invalid card type.”

This error often looks like:

The most common cause is that the page is missing a content-type META directive. It might look something like the following

 
<meta content="text/html; charset=UTF-8" name="Content-Type" />

The validator can’t reach my testing/staging environment.

Many developers run their testing/staging environments under restricted access. As a result, our validator can’t access these servers to read the Card tags.

Below are a couple of solutions that other developers have found helpful:

  • Run your web server on a different, publicly-accessible port.
  • Configure your firewall to route port-specific requests to your test/staging environment.
  • Configure your web servers to allow Twitter access via the robots.txt file. Twitter uses the User-Agent of Twitterbot (with version, such as Twitterbot/1.0), which can be used to create an exception in your robots.txt file.

     
    User-agent: Twitterbot 
    Disallow: 

Cards Whitelisting

How do I get my Player Card approved?

We review each Player Card implementation to make sure it fits the guidelines for publishing to our platform. Although we strive for a quick turnaround, this process sometimes takes longer than expected.

To help make this process as smooth and quick as possible, please verify the following:

  • You’ve added the proper Cards mark-up to your page, and your page is publicly accessible.
  • You’ve tested your site through the Cards validator.
  • You’ve submitted your Card for approval by clicking on the “Request Approval” button.
  • The twitter:player URL opens and plays properly in a browser.

Doing the above (as well as reading the issues throughout this page) will help make you’re approval as quick as possible.

My Player Card hasn’t been approved for whitelisting. What does that mean?

If your Player Card was rejected, please read through the documentation again, test your Player Card in our validator, and then resubmit.

The Player Card has the most guidelines, which you can read on the Player Cards Do’s & Don’ts section.

For other issues not covered there, please continue reading below.

I’ve re-submitted my Player Card for approval. What happens next?

We will review your Player Card and respond within three weeks. If you have problems blocking you from testing, please reach out to us via the Twitter Cards Discussion.

Card Display Issues

My tweet is missing the image/video/summary text.

There are a number of possible reasons for this. Here are some suggestions and ways to troubleshoot:

  • Your Player Card has yet to be whitelisted. Please run your example URL through the Card Validator, and click the Request Approval button to begin the whitelist process.
  • Your website has a robots.txt that is blocking us from getting your Card metadata. To learn how to diagnose this case, click here.
  • The video format is not supported. For steps to debug your video, click here.

My Card doesn’t appear in the timeline.

Twitter Cards generated from developer meta tags only appear when a Tweet is either expanded in the timeline (on web) or viewed on the Tweet’s individual permalink page (by clicking on the date from the timeline, either on web or on mobile).

In limited circumstances, Cards may appear in the timeline, such as in images posted to Twitter, Ad formats and Twitter-run experiments.

If you are looking to bring media (photos, videos and Cards) into the timeline, please consider one of the following options:

  • Accounts can pin a tweet to the top of their timeline, which auto-expands the tweet and displays the Card. (This is possible on web only.).
  • For photos and animated GIFs, upload the media directly with the Tweet or consider using the Twitter API to upload media.
  • For Ad-sponsored videos, visit Twitter Amplify for our publisher-grade video content management solutions.
  • For consumer-generated videos, consider using Vine to author and post videos in the timeline.
  • For Ad formats with a call-to-action, visit Twitter Ads for Lead Generation and Website Cards.

My tweet shows an outdated version of my Card.

Once you’ve been whitelisted for your domain, our web crawlers re-index the meta information on your tag roughly every week.

If you’re testing and/or iterating on your Cards, it is sometimes helpful to test updates. You can follow these instructions to view updates to your Cards.

Refreshing a Card in a Tweet

I updated my site meta tags, but my tweet shows the old Card. How do I refresh the Card?

Our web crawlers re-index the Card tag information on your page roughly every week.

If you’re testing and/or iterating on your Cards, it is sometimes helpful to test updates on your timeline. You can use the following technique to refresh the cache with your most up-to-date changes of your page’s Card.

  1. Add Card metadata to a page
  2. Tweet URL to that page
  3. Refresh your browser to view the Card contents on your timeline
  4. Change Card metadata on the page
  5. Take the same URL and runs it through bit.ly
  6. Tweet the new bit.ly URL
  7. Refresh your browser to view the updates

Additionally, you can create multiple bit.ly URLs to allow for repeat testing. For example, adding dummy parameters to the end of your URL (http://www.test.com/?x=test1) or a unique hash (http://www.test.com/#test1) will generally not affect the page contents, but will generate a unique bit.ly URL for each unique value of x.

My Card information now refreshes, but images are not updating. How do I get the images to refresh?

Images referenced in a Card are also cached based on URL. This often causes images to not update when the above Card refresh technique is used.

To work-around this issue, you can add an extra parameter at the end of your image URL so that the Twitterbot treats the image as a unique URL and re-fetches the image.

For example:

<meta name="twitter:image" content="http://example.com/myimage.jpg?4362984378" />


Debugging Player Cards

How do I test my Player Card experience?

For the web experience, Twitter relies on the user’s browser to play a wide range of video formats. As a result, it is important to test that your video stream plays directly in a browser (before testing in the Twitter timeline).

In general, the both the twitter:player and the twitter:player:stream tags should have values that can play directly in a browser. (If they don’t, you should consider a different video format that is widely adopted by popular browsers).

To test the video content directly, try the following in Google Chrome:

  1. Open up a browser window
  2. Enter the URL containing your Twitter Cards tags into the address bar
  3. View the source of the page (Find this in the toolbar under View->Source or View->Developer->View Source)
  4. Find and copy the URL specified in the twitter:player and/or twitter:player:stream tag
  5. Paste that into the address of your browser

My Player Card shows summary information instead.

The most common cause of this is that you have not yet been whitelisted for approval.

Please run your example URL through the Card Validator, and click the Request Approval button to begin the whitelist process.

After approval, re-try the URL to ensure that the Player Card appears and plays properly.

My video isn’t playing properly in the Player Card.

There are a number of possible reasons causing this. Here are some suggestions and ways to troubleshoot:

  • The URL specified points to a full website, not a page that fits in an IFRAME. The value for twitter:player needs to be a simplified web page with only the player on it. Having a full website will show only part of your site in the Player Card IFRAME.
  • The dimensions of the Player Card aren’t specified. Be sure to include the twitter:player:height and twitter:player:width tags with your Card tag.
  • The video format is not supported. For steps to debug your video, click here.

My Player Card does not render properly on mobile.

At Twitter, we try to ensure that all content works equally across our web and mobile platforms.

To this end, we’ve created two tags — twitter:player and twitter:player:stream — that differ slightly in video formats and implementation.

Please read the mobile section of the Player Card page to understand how to make mobile video work for you.

My Player Card is having SSL/mixed content issues. What do I do?

Twitter’s policy around mixed content and SSL security is intended to help protect the safety and security of your audience. (Moreover, planned releases of Firefox and other browsers will deprecate this behavior, causing content to not appear at all.)

To briefly re-state the policy:

Do not: Generate active mixed content browser warnings at any point during the audio or video experience, either on load or during play.

To that end, below is an example of how to diagnose the active mixed content/SSL issue. When a Player Card is expanded as such:

The browser address bar either maintains the “secure” state (left) or goes into the active mixed content “insecure” state (right).

OKNot OK

Below are the steps to reproduce in Google Chrome.

  1. Open a browser window and type in the Twitter URL with the active mixed-content tweet
  2. Note that the browser address has the “lock” icon to indicate a secure browsing environment
  3. In the toolbar, click on View->Developer->Developer Tools
  4. In the below pane, click on the Network tab.
  5. Under the tweet, click on the “View Media” link to expand the Twitter Card
  6. If the “lock” icon is intact, you’ve maintained a secure browsing environment
  7. If the “lock” icon is replaced with an “unlocked icon”, you’ve maintained a secure but passive mixed content environment
  8. If the “lock” icon is covered with a red ‘X’, the active mixed-content/SSL issue is present. Player Cards that exemplify this state will not be approved.
    1. In the Network pane, click on the error icon () to show script load errors.
    2. In the Network pane, look for scripts or content that shows a warning icon with the message XXX
    3. These scripts are breaching the security of the Card, and need to be turned to HTTPS

For reference, below is an image of an HTTPS error appearing in the Developer Tools -> Network tab.

In many cases, you can work with your video content provider (BrightCove, Ooyala, etc.) to resolve these issues. Please contact them first to see how they can re-configure your content.

Debugging App Cards

For App Cards or App Deep Link code, users often see that the Card fails to render when tweeted. Here are some possible reasons and solutions.

  • The URL with the Card has not been validated via the Validator. Be sure to test/validate your Card here.
  • The image you uploaded to the Apple App Store is larger than 2MB. This will prevent the validator from properly validating your Card. Once validated, it will also prevent your tweet from rendering a Card. You will need to upload a smaller image to Apple (and possibly re-submit your app to the App Store for approval.)