{"id":6164,"date":"2022-09-30T10:11:52","date_gmt":"2022-09-30T10:11:52","guid":{"rendered":"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/"},"modified":"2022-09-30T10:11:52","modified_gmt":"2022-09-30T10:11:52","slug":"technical-seo-testing-how-googlebot-handles-iframes","status":"publish","type":"post","link":"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/","title":{"rendered":"Technical SEO testing: How Googlebot handles iframes"},"content":{"rendered":"<p>Earlier this year at SMX Advanced, I presented results from our Peak Ace test lab. These tests shed some light on several technical implementation points and how Googlebot would deal with them.\u00a0<\/p>\n<p>One of my favorite tests examined Google\u2019s indexing of iFramed URLs and their content. In my SMX Advanced presentation, I touched on various scenarios that may lead Google to index the content inside an iFrame, while \u201cassigning\u201d that content to its parent URL.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2022\/09\/Google-Indexing-iFramed-URLs-800x450.jpg\" alt=\"iFrame content will be attributed to its parent URL post-render.\" class=\"wp-image-388246\" title=\"| Craig Hordlow\"><\/figure>\n<\/div>\n<p>The parent URL can, in some instances, rank for content that only exists in the iFramed URL and not in the parent URL.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2022\/09\/Parent-URL-ranking-for-iFrame-content-800x450.jpg\" alt=\"Post-render, the parent page can now be found for content within the iFrame.\" class=\"wp-image-388247\" title=\"| Craig Hordlow\"><\/figure>\n<\/div>\n<p>Naturally, this excited people \u2013 and all sorts of follow-up questions arose. Here are a few of them with my answers.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/#In_the_iFrame_test_was_the_iFramed_content_coming_from_the_same_domain_or_a_different_one\" >In the iFrame test, was the iFramed content coming from the same domain or a different one?\u00a0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/#If_we_were_to_use_iFrames_with_a_no-indexed_content_page_would_the_parent_page_still_rank_for_the_listed_content_with_the_intent_to_improve_page_speed\" >If we were to use iFrames with a no-indexed content page, would the parent page still rank for the listed content with the intent to improve page speed?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/#Does_Google_give_full_value_to_semi-hidden_content_content_that_typically_comes_after_%E2%80%98Read_more\" >Does Google give full value to semi-hidden content (content that typically comes after \u2018Read more\u2019)?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/#Did_you_mention_that_duplication_in_certain_areas_of_the_content_can_be_fixed_by_CSS_implementation_since_it_is_not_indexed\" >Did you mention that duplication in certain areas of the content can be fixed by CSS implementation since it is not indexed?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/craighordlow.com\/index.php\/2022\/09\/30\/technical-seo-testing-how-googlebot-handles-iframes\/#Watch_Technical_SEO_testing_in_2022_Separating_fact_from_fiction\" >Watch:\u00a0Technical SEO testing in 2022: Separating fact from fiction<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"In_the_iFrame_test_was_the_iFramed_content_coming_from_the_same_domain_or_a_different_one\"><\/span>In the iFrame test, was the iFramed content coming from the same domain or a different one?\u00a0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>My example showed two URLs that live on the same domain: <code>domain.com\/test.html<\/code> would iFrame <code>domain.com\/tobeframedA.html<\/code>, so that <code>test.html<\/code> could rank for content that only exists in <code>tobeframedA.html<\/code>.\u00a0<\/p>\n<p>The same also works for <code>externaldomain.com\/tobeframedB.html<\/code> \u2013 which can still cause <code>test.html<\/code> to rank for content only present in <code>tobeframedB.html<\/code><em>, <\/em>as well as for iFrames residing on subdomains. We tested every combination we could think of and concluded that it made no difference where the iFrame content was hosted.<\/p>\n<p>If you want to prevent someone from loading (and ranking for) your content in an iFrame, it would be a good idea to look into the X-Frame-Options Header. This indicates whether a browser should be allowed to render a page in an iFrame.\u00a0<\/p>\n<h2><span class=\"ez-toc-section\" id=\"If_we_were_to_use_iFrames_with_a_no-indexed_content_page_would_the_parent_page_still_rank_for_the_listed_content_with_the_intent_to_improve_page_speed\"><\/span>If we were to use iFrames with a no-indexed content page, would the parent page still rank for the listed content with the intent to improve page speed?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>As soon as the iFramed URL contains a meta robots noindex directive, the parent URL won\u2019t be able to rank for the content from the iFramed URL.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2022\/09\/iFramed-URL-metarobots-noindex-800x450.jpg\" alt=\"iFramed URL containing meta robots noindex directive.\" class=\"wp-image-388248\" title=\"| Craig Hordlow\"><\/figure>\n<\/div>\n<p>The same is true if you iFrame a URL that would be served with an X-Robots noindex header directive or is actively blocked using robots.txt.<\/p>\n<p>As far as page speed is concerned, iFrames support the <code>loading=\"lazy\"<\/code> attribute, which would defer offscreen iFrames from being loaded until a user scrolls near them. This is an elegant solution for speeding up loading times for URLs that depend on iFramed content.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Does_Google_give_full_value_to_semi-hidden_content_content_that_typically_comes_after_%E2%80%98Read_more\"><\/span>Does Google give full value to semi-hidden content (content that typically comes after \u2018Read more\u2019)?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>There doesn\u2019t seem to be too much love for using \u201cRead more\u201d functionality within the ranks of Google. John Mueller went on record a couple of times here and here, questioning the use of the functionality in its entirety. Mueller added, \u201cI don\u2019t think you\u2019d see a noticeable, direct change in SEO, [\u2026]\u201d.\u00a0<\/p>\n<p>When we tested it, the purpose of the test was to understand what difference the technical implementation could potentially make \u2013 and if, in general, content behind a \u201cRead more\u201d would be indexed (if correctly set up).\u00a0<\/p>\n<p>The short answer: whether or not it was visible, the content would be indexed, found and returned. <\/p>\n<p>However, content that was invisible during loading didn\u2019t get highlighted in the snippet. The technical implementation didn\u2019t make a difference (as long as the content was part of the HTML DOM at load), leaving you free to use <code>display:none<\/code><em>, <\/em><code>opacity:0<\/code><em>, <\/em><code>visibility:hidden<\/code><em>,<\/em> etc.<\/p>\n<p>That said, in my opinion, it is impossible \u2013 due to various factors outside of our control \u2013 to create a test setup that (including results) could provide an accurate answer regarding the \u201cfull value\u201d part of the question.\u00a0<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Did_you_mention_that_duplication_in_certain_areas_of_the_content_can_be_fixed_by_CSS_implementation_since_it_is_not_indexed\"><\/span>Did you mention that duplication in certain areas of the content can be fixed by CSS implementation since it is not indexed?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>I did present some behavior that I find fairly interesting regarding CSS selectors. What technically happens is that selectors such as <code>::before<\/code> create a pseudo element that is the first child of the selected element. In practice, this is often used to add cosmetic content to an HTML element.\u00a0<\/p>\n<p>This could also be useful from an SEO point of view because Googlebot seems to treat this just as it would treat Chrome on desktop\/smartphone. The rendered DOM remains unchanged (which is to be expected since it\u2019s a pseudo class). As a result, content from within said selectors won\u2019t be indexed.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/searchengineland.com\/wp-content\/seloads\/2022\/09\/Content-CSS-selectors-not-indexed-800x450.jpg\" alt=\"| Craig Hordlow\" class=\"wp-image-388249\" title=\"| Craig Hordlow\"><\/figure>\n<\/div>\n<p>So, ultimately you could use this to prevent certain content from being indexed without keeping it from being displayed on the website. Maybe you have to display certain content that gets classified as \u201cboilerplate\u201d (e.g., shipping info, or legal info) or you want to create a certain content footprint. This opens up a great many possibilities to explore further.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Watch_Technical_SEO_testing_in_2022_Separating_fact_from_fiction\"><\/span>Watch:\u00a0Technical SEO testing in 2022: Separating fact from fiction<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Below is the complete video of my SMX Advanced presentation.<\/p>\n<\/p>\n<div><\/div>\n<p>The post <a rel=\"nofollow noopener\" href=\"https:\/\/searchengineland.com\/how-googlebot-handles-iframes-388243\" target=\"_blank\">Technical SEO testing: How Googlebot handles iframes<\/a> appeared first on <a rel=\"nofollow noopener\" href=\"https:\/\/searchengineland.com\/\" target=\"_blank\">Search Engine Land<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Earlier this year at SMX Advanced, I presented results from our Peak Ace test lab. These tests shed some light on several technical implementation points and how Googlebot would deal with them.\u00a0 One of my favorite tests examined Google\u2019s indexing of iFramed URLs and their content. In my SMX Advanced presentation, I touched on various scenarios that may lead Google to index the content inside an iFrame, while \u201cassigning\u201d that content to its parent URL. The parent URL can, in some instances, rank for content that [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"h5ap_radio_sources":[],"cybocfi_hide_featured_image":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-6164","post","type-post","status-publish","format-standard","hentry","category-best-seo-blogs"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":false,"author_link":"https:\/\/craighordlow.com\/author\/"},"_links":{"self":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts\/6164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/comments?post=6164"}],"version-history":[{"count":0,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts\/6164\/revisions"}],"wp:attachment":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/media?parent=6164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/categories?post=6164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/tags?post=6164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}