Consider this scenario: you’re auditing a site for SEO issues, and come across wide use of iframe elements on key pages. You might think to yourself, “hmm something about these just doesn’t smell right. But crawlers can’t follow links within iframe elements, so they’re probably just a brick wall.
Still, I’m going to recommend they use caution here.
That sequence of thinking is completely logical. The use of iframes is widespread and there is nothing inherently wrong with the practice; but they just don’t feel quite right from an SEO point of view, especially when there are lots of links and content in the iframe. One good example of this is with PRWeb.com, a site our team audited several years back.
Our recommendation at the time explained that “… press release pages are seen as linking to the customer URLs within the iframe and thus could be negatively impacting rankings for the individual releases. For any given iframe, there may be 20-100 links featured (or more, depending on the content of the iframe).”
Those words were written nearly 3 years ago. So you can imagine our intrigue when we read about a test that Michael Martinez had conducted over on SERoundtable.
Michael found that links within iframe elements were indeed crawled, also raising the question of whether or not equity passed through them (anchor text and PageRank). This got us sufficiently curious, so we conducted a test of our own.
The Setup: Two tests were conducted: one to determine if search engines grab information from the iframe tag itself, and the second to determine if the search engines will crawl the source of an iframe; follow links from that source URL and index the page with the attributed anchor text from the links found on the source URL. Let’s see how it all went down…
Page A – A trusted, frequently updated, and regularly crawled blog. This is the page where we added the HTML iframe tag: http://shoedigest.com/rants-raves/kushy-flats-to-go/
Page B – A small traffic, long established website page that has high-ranking terms for its subject matter.
Anchor text – “Sammy loves hiking south sister”
HTML Snippet on Page A
<iframe src="http://www.gimpslice.com/Hiking/Oregon_Hiking/South_Sister/index.html" frameborder="0">
<p><a href="http://www.gimpslice.com/Hiking/Oregon_Hiking/South_Sister/index.html"> Sammy loves hiking South Sister
HTML on Page B – Legacy blog post about hiking south sister.
Prior to implementation, we tested the anchor text phrase against three search engines: Google, Bing and Blekko. No search engine ranked Page B for the phrase “Sammy loves hiking south sister” in the first 50 results.
Additionally, we used a small traffic site that has been up for at least 7 years and hasn’t had changes in the last 4 years. We took a page that ranks relatively high for a particular local query. We created anchor text that doesn’t actually show up in the HTML source of Page B. This should make the phrase unique to the anchor text.
Our results were very conclusive. The search engines easily picked up on this link and the anchor text ranked on Google, Bing and Blekko for Page B. In Google, Page A (the blog with the iframe) also ranked for the phrase on the first page for the query. It picked up on the new link within three days of posting the iframe information.
Google Webmaster Tools was able to pick up on the link:
The test basically showed that the search engines are able to crawl the text within the iframe tag, but this wasn’t exactly the test we were trying to check. This lets us know that they do crawl the HTML within the iframe tags. Not only will it crawl the HTML within the iframe tag, it will attribute the anchor text to the proper page. However, these are not surprising results.
The second test was to determine, through a steel-tight iframe call with no HTML text between the iframe tags, if the engines will crawl the iframe source links. And, would a link from the iframe source be followed and pass link equity to link’s landing page?
Page A – the same frequently updated blog
HTML Snippet on Page A
<iframe src="http://www.gimpslice.com/touch.html">You need a Frames Capable browser to view this content.</iframe>
Page B – the same small traffic, long established website with a page newly created for this test (Page B). It has no prior traffic nor existed before we posted the iframe HTML on Page A. Prior to the test, this page did not exist on the server and would have returned a 404 page: http://www.gimpslice.com/touch.html
HTML Snippet on Page B
<p>check out <a href="http://www.bettylife.com/Contributors/cara.html">Cara rides 100 days at Bachelor</a></p>
Anchor text – “Cara rides 100 days at bachelor”
Page C – The target page of the anchor text on Page B: http://www.bettylife.com/Contributors/cara.html
Prior to beginning the test, we checked the anchor text phrase “Cara rides 100 days at bachelor” which does not show up anywhere in the source for Page B. No search engine showed this phrase ranking in the first 50 results.
Results: After 14 days we could see Page B now showing up in the index for Google, but not Bing or Blekko.
The other search engines didn't have the page indexed:
Google did show the causal link between the anchor text, Page B and Page C. Remember, the only way that Page C could have been associated with the anchor text was through Page B which is only referenced through an iframe src= call from Page A.
Furthermore, Google did not show the iframe source URL (Page B) unless the anchor text was put in quotes.
The other search engines wouldn’t show the phrase even when looking for an exact match:
Conclusions: For Google, it does indeed appear that it is following the source calls in iframes. Because of the links in the second test we can draw the conclusion that it crawls the source, follows links and passes link equity to the final destination page. However, we are not able to draw conclusions as to how much equity is passed in relation to the portion similar to a 301.
This indeed backs up Michael’s test, but we would like to hear from you about your own tests and experiences!
Special thanks goes out to Ben Goodsell for help writing this post!