{"id":25374,"date":"2026-03-31T00:00:00","date_gmt":"2026-03-31T00:00:00","guid":{"rendered":"https:\/\/alienroad.com\/google-bilgi-bankasi\/inside-googlebot-demystifying-crawling-fetching-and-the-bytes-we-process\/"},"modified":"2026-03-31T00:00:00","modified_gmt":"2026-03-31T00:00:00","slug":"inside-googlebot-demystifying-crawling-fetching-and-the-bytes-we-process","status":"publish","type":"ar_kb","link":"https:\/\/alienroad.com\/google-bilgi-bankasi\/inside-googlebot-demystifying-crawling-fetching-and-the-bytes-we-process\/","title":{"rendered":"Inside Googlebot: demystifying crawling, fetching, and the bytes we process"},"content":{"rendered":"<p class=\"gargardate\">Tuesday, March 31, 2026<\/p>\n<p>\n  If you tuned into<br \/>\n  <a href=\"https:\/\/www.youtube.com\/watch?v=JpweMBnpS4Q\" class=\"external-link\">episode 105 of the Search Off the Record podcast<\/a>,<br \/>\n  you might have heard us diving deep into a topic that is close to our hearts<br \/>\n  (and our servers): the inner workings of Googlebot.\n<\/p>\n<p>\n  For a long time, the name &#8220;Googlebot&#8221; has conjured up the image of a single,<br \/>\n  tireless robot systematically reading the internet. But the reality is a bit<br \/>\n  more complex &mdash; and a lot more interesting. Today, we want to pop the<br \/>\n  hood on our crawling infrastructure, with a special focus on the very thing<br \/>\n  that makes our own heads spin: bytesize limits.\n<\/p>\n<h2 id=\"first,-googlebot-isnt-a-single-program\" tabindex=\"-1\">First, Googlebot isn&#8217;t a single program<\/h2>\n<p>\n  Let&#8217;s clear up a historical misnomer first. Back in the early 2000s, Google<br \/>\n  had one product, so we had one crawler. The name &#8220;Googlebot&#8221; stuck. But<br \/>\n  today, Googlebot is just a user of something that resembles a centralized<br \/>\n  crawling platform.\n<\/p>\n<p>\n  When you see Googlebot in your server logs, you are just looking at Google<br \/>\n  Search. Dozens of other clients &mdash; Google Shopping, AdSense, and<br \/>\n  more &mdash; all route their crawl requests through this same underlying<br \/>\n  infrastructure under different crawler names, the larger ones documented<br \/>\n  on the<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/overview-of-google-crawlers-and-fetchers-user-agents\/\" class=\"external-link\">Google Crawler infrastructure site<\/a>.\n<\/p>\n<h2 id=\"the-2mb-limit:-what-happens-to-your-bytes\" tabindex=\"-1\">The 2MB limit: what happens to your bytes?<\/h2>\n<p>\n  This is where things get somewhat confusing. Every client of the crawler<br \/>\n  infrastructure needs to set some settings for their fetches. These settings<br \/>\n  include the user agent string, what user agent tokens will they look for in<br \/>\n  robots.txt, and how many bytes they will fetch from a single URL.\n<\/p>\n<p>\n  Googlebot currently fetches up to 2MB for any individual URL (excluding<br \/>\n  PDFs). This means it crawls only the first 2MB of a resource, including the<br \/>\n  HTTP header. For PDF files, the limit is 64MB.\n<\/p>\n<p>\n  Image and video crawlers typically have a wide range of threshold values,<br \/>\n  and it largely depends on the product that they&#8217;re fetching for. For<br \/>\n  example, fetching a favicon might have a very low limit, unlike Image Search.\n<\/p>\n<p>\n  For any other crawler that doesn&#8217;t specify a limit, the default is 15MB<br \/>\n  regardless of content type.\n<\/p>\n<p>What does this mean for the bytes your server sends over the wire?<\/p>\n<ol>\n<li>\n    <strong>Partial fetching:<\/strong> If your HTML file is larger than 2MB,<br \/>\n    Googlebot doesn&#8217;t reject the page. Instead, it stops the fetch exactly at<br \/>\n    the 2MB cutoff. Note that the limit includes HTTP request headers.\n  <\/li>\n<li>\n    <strong>Processing the cutoff:<\/strong> That downloaded portion (the first<br \/>\n    2MB of bytes) is passed along to our indexing systems and the Web<br \/>\n    Rendering Service (WRS) as if it were the complete file.\n  <\/li>\n<li>\n    <strong>The unseen bytes:<\/strong> Any bytes that exist <em>after<\/em> that<br \/>\n    2MB threshold are entirely ignored. They aren&#8217;t fetched, they aren&#8217;t<br \/>\n    rendered, and they aren&#8217;t indexed.\n  <\/li>\n<li>\n    <strong>Bringing in resources:<\/strong> Every referenced resource in the<br \/>\n    HTML (excluding media, fonts, and a few exotic files) will be fetched by<br \/>\n    WRS with Googlebot like the parent HTML. They have their own, separate,<br \/>\n    per-URL byte counter and don&#8217;t count towards the size of the parent page.\n  <\/li>\n<\/ol>\n<p>\n  For the vast majority of the web, a 2MB HTML payload is massive, and you<br \/>\n  will never hit this limit. However, if your page includes bloated inline<br \/>\n  base64 images, massive blocks of inline CSS\/JavaScript, or starts with<br \/>\n  megabytes of menus, you could accidentally push your actual textual content<br \/>\n  or critical structured data past the 2MB mark. If those crucial bytes aren&#8217;t<br \/>\n  fetched, to Googlebot, they simply don&#8217;t exist.\n<\/p>\n<h2 id=\"rendering-the-bytes\" tabindex=\"-1\">Rendering the bytes<\/h2>\n<p>\n  Once the crawler has successfully retrieved the bytes (up to the limit), it<br \/>\n  passes the baton to the WRS. The WRS processes JavaScript and executes<br \/>\n  client-side code similar to a modern browser to understand the final visual<br \/>\n  and textual state of the page. Rendering pulls in and executes JavaScript and<br \/>\n  CSS files, and processes XHR requests to better understand the page&#8217;s textual<br \/>\n  content and structure (it doesn&#8217;t request images or videos). For each<br \/>\n  requested resource, the 2MB limit also applies.\n<\/p>\n<p>\n  However, remember that the WRS can only execute the code that the crawler<br \/>\n  actually retrieved. Furthermore, the<br \/>\n  <a href=\"https:\/\/alienroad.com\/google-bilgi-bankasi\/fix-javascript-problems\/\" class=\"external-link\">WRS operates statelessly<\/a><br \/>\n  &mdash; it clears local storage and session data between requests. This may<br \/>\n  have particular implications for how dynamic, JavaScript-dependent elements<br \/>\n  are interpreted by our systems.\n<\/p>\n<h2 id=\"best-practices-for-your-bytes\" tabindex=\"-1\">Best practices for your bytes<\/h2>\n<p>\n  To ensure Googlebot can efficiently fetch and understand your content, keep<br \/>\n  these byte-level best practices in mind:\n<\/p>\n<ul>\n<li>\n    <strong>Keep your HTML lean:<\/strong> Move heavy CSS and JavaScript to<br \/>\n    external files. While the initial HTML document is capped at 2MB, external<br \/>\n    scripts, and stylesheets are fetched separately (subject to their own<br \/>\n    limits).\n  <\/li>\n<li>\n    <strong>Order matters:<\/strong> Place your most critical elements &mdash;<br \/>\n    like meta tags, <code>&lt;title&gt;<\/code> elements,<br \/>\n    <code>&lt;link&gt;<\/code> elements, canonicals, and essential structured<br \/>\n    data &mdash; higher up in the HTML document. This ensures they are unlikely<br \/>\n    to be found below the cutoff.\n  <\/li>\n<li>\n    <strong>Monitor your server logs:<\/strong> Keep an eye on your server<br \/>\n    response times. If your server is struggling to serve bytes, our crawlers<br \/>\n    will automatically back off to avoid overloading your infrastructure, which<br \/>\n    will drop your crawl frequency.\n  <\/li>\n<\/ul>\n<p>\n  <strong>Note that this limit is not set in stone<\/strong> and may change<br \/>\n  over time as the web evolves and HTML pages grow in size. (Or shrink.<br \/>\n  Hopefully shrink.)\n<\/p>\n<p>\n  Crawling isn&#8217;t magic; it&#8217;s a highly orchestrated, scaled exchange of bytes.<br \/>\n  By understanding how our central fetching infrastructure retrieves and<br \/>\n  limits those bytes, you can ensure your site&#8217;s most important content always<br \/>\n  makes the cut.\n<\/p>\n<p>Happy optimizing!<\/p>\n<p>\n  <em>Want to hear more behind-the-scenes details? Check out<br \/>\n    <a href=\"https:\/\/www.youtube.com\/watch?v=JpweMBnpS4Q\" class=\"external-link\">Episode 105 of the Search Off the Record podcast on YouTube<\/a><br \/>\n    or wherever you get your podcasts!<\/em>\n<\/p>\n<p class=\"byline-author\">\n  Posted by<br \/>\n  <a href=\"https:\/\/developers.google.com\/search\/blog\/authors\/gary-illyes\">Gary<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tuesday, March 31, 2026 If you tuned into episode 105 of the Search Off the Record podcast, you might have heard us diving deep into a topic that is close to our hearts (and our servers): the inner workings of Googlebot. For a long time, the name &#8220;Googlebot&#8221; has conjured up the image of a [&hellip;]<\/p>\n","protected":false},"menu_order":79457,"template":"","meta":{"footnotes":""},"ar_kb_kategori":[665],"ar_kb_etiket":[],"class_list":["post-25374","ar_kb","type-ar_kb","status-publish","has-post-thumbnail","hentry","ar_kb_kategori-blog"],"_links":{"self":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/25374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb"}],"about":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/types\/ar_kb"}],"version-history":[{"count":0,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/25374\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/media\/27494"}],"wp:attachment":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/media?parent=25374"}],"wp:term":[{"taxonomy":"ar_kb_kategori","embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb_kategori?post=25374"},{"taxonomy":"ar_kb_etiket","embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb_etiket?post=25374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}