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.
- 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)"
- When I validate, I get the message, "Failed to get a proxied URL for the image."
- When I validate, I get the message, "Invalid Image. This image cannot be fetched."
- When I validate my App Card, I get the message, "Caught Exception in App Proxy Service..."
- When I validate my App Card, I get the message, "Invalid card type."
- The validator can't reach my testing/staging environment.
- Cards Whitelisting
- Cards on the Timeline
- Refreshing a Card in a Tweet
- Debugging Player Cards
- 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. You can also provide the following information to help them enable access:
- Twitter 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
- Twitter ASNUM: AS13414
- Twitter IPs:
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 Card approved?
We review each 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.
- If you're submitting a Player Card, 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 Card hasn't been approved for whitelisting. What does that mean?
If your Card was rejected, please read through the documentation again, test your 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 Card for approval. What happens next?
We will review your Card and respond within three weeks. If you have problems blocking you from testing, please reach out to us via the Twitter Cards Discussion.
Cards on the Timeline
My tweet doesn't include the image/video/summary text.
There are a number of possible reasons for this. Here are some suggestions and ways to troubleshoot:
- Your 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 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.
- Add Card metadata to a page
- Tweet URL to that page
- Refresh your browser to view the Card contents on your timeline
- Change Card metadata on the page
- Take the same URL and runs it through bit.ly
- Tweet the new bit.ly URL
- Refresh your browser to view the updates
- Open up a browser window
- Enter the URL containing your Twitter Cards tags into the address bar
- View the source of the page (Find this in the toolbar under View->Source or View->Developer->View Source)
- Find and copy the URL specified in the
twitter:player
and/ortwitter:player:stream
tag - Paste that into the address of your browser
- 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
andtwitter:player:width
tags with your Card tag. - The video format is not supported. For steps to debug your video, click here.
- Open a browser window and type in the Twitter URL with the active mixed-content tweet
- Note that the browser address has the "lock" icon to indicate a secure browsing environment
- In the toolbar, click on View->Developer->Developer Tools
- In the below pane, click on the Network tab.
- Under the tweet, click on the "View Media" link to expand the Twitter Card
- If the "lock" icon is intact, you've maintained a secure browsing environment
- If the "lock" icon is replaced with an "unlocked icon", you've maintained a secure but passive mixed content environment
- 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.
- In the Network pane, click on the error icon () to show script load errors.
- In the Network pane, look for scripts or content that shows a warning icon with the message XXX
- These scripts are breaching the security of the Card, and need to be turned to HTTPS
- 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.)
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:src" 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:
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:
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).
OK | Not OK |
|
Below are the steps to reproduce in Google Chrome.
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.