<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://web.dev/</id>
  <title>Lizzi Harvey on web.dev</title>
  <updated>2026-04-15T23:21:06Z</updated>
  <author>
    <name>Lizzi Harvey</name>
  </author>
  <link href="https://web.dev/authors/ekharvey/feed.xml" rel="self"/>
  <link href="https://web.dev/"/>
  <icon>https://web-dev.imgix.net/image/admin/qAnatGOMJMeJhHbHwbWp.jpg?auto=format</icon>
  <logo>https://web.dev/images/shared/rss-banner.png</logo>
  <subtitle>Lizzi is a Tech Writer at Google</subtitle>
  
  
  <entry>
    <title>Making JavaScript and Google Search work together</title>
    <link href="https://web.dev/javascript-and-google-search-io-2019/"/>
    <updated>2019-06-05T00:00:00Z</updated>
    <id>https://web.dev/javascript-and-google-search-io-2019/</id>
    <content type="html" mode="escaped">&lt;p&gt;Great things are happening with Google Search, and we were excited to share them at Google I/O 2019!&lt;/p&gt;
&lt;div class=&quot;youtube&quot;&gt;  &lt;lite-youtube videoid=&quot;ufcijo46LCU&quot;&gt;  &lt;/lite-youtube&gt;&lt;/div&gt;
&lt;p&gt;In this post we&#39;ll focus on best practices for making JavaScript web apps discoverable in Google Search, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The new evergreen Googlebot&lt;/li&gt;
&lt;li&gt;Googlebot&#39;s pipeline for crawling, rendering and indexing&lt;/li&gt;
&lt;li&gt;Feature detection and error handling&lt;/li&gt;
&lt;li&gt;Rendering strategies&lt;/li&gt;
&lt;li&gt;Testing tools for your website in Google Search&lt;/li&gt;
&lt;li&gt;Common challenges and possible solutions&lt;/li&gt;
&lt;li&gt;Best practices for SEO in JavaScript web apps&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;meet-the-evergreen-googlebot&quot;&gt;Meet the evergreen Googlebot &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/javascript-and-google-search-io-2019/#meet-the-evergreen-googlebot&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This year we announced the much-awaited &lt;a href=&quot;https://webmasters.googleblog.com/2019/05/the-new-evergreen-googlebot.html&quot; rel=&quot;noopener&quot;&gt;new evergreen Googlebot&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;Googlebot holding the Chrome logo&quot; decoding=&quot;async&quot; height=&quot;401&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 400px) 400px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/q6RSuwuwLT7mcgE9Joqp.png?auto=format&amp;w=800 800w&quot; width=&quot;400&quot; /&gt;
  &lt;figcaption&gt;Googlebot is now running a modern Chromium rendering engine.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Googlebot now uses a modern Chromium engine to render websites for Google Search. On top of that, we will test newer versions of Chromium to &lt;em&gt;keep&lt;/em&gt; Googlebot updated, usually within a few weeks of each stable Chrome release. This announcement is big news for web developers and SEOs because it marks the arrival of &lt;a href=&quot;https://caniuse.com/#compare=chrome+41,chrome+74&quot; rel=&quot;noopener&quot;&gt;1000+ new features&lt;/a&gt;—such as ES6+, &lt;code&gt;IntersectionObserver&lt;/code&gt;, and Web Components v1—in Googlebot.&lt;/p&gt;
&lt;h2 id=&quot;learn-how-googlebot-works&quot;&gt;Learn how Googlebot works &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/javascript-and-google-search-io-2019/#learn-how-googlebot-works&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Googlebot is a pipeline with several components. Let&#39;s take a look to understand how Googlebot indexes pages for Google Search.&lt;/p&gt;
&lt;figure data-size=&quot;full&quot;&gt;
  &lt;img alt=&quot;A diagram showing a URL moving from a crawling queue to a processing step that extracts linked URLs and adds them to the crawling queue, a rendering queue that feeds into a renderer which produces HTML. The processor uses this HTML to extract linked URLs again and index the content.&quot; decoding=&quot;async&quot; height=&quot;446&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/zu4wDqHHxpU0dbwSajqA.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;Googlebot&#39;s pipeline for crawling, rendering, and indexing a page.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The process works like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Googlebot queues URLs for crawling.&lt;/li&gt;
&lt;li&gt;It then fetches the URLs with an HTTP request based on the &lt;a href=&quot;https://webmasters.googleblog.com/2017/01/what-crawl-budget-means-for-googlebot.html&quot; rel=&quot;noopener&quot;&gt;crawl budget&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Googlebot scans the HTML for links and queues the discovered links for crawling.&lt;/li&gt;
&lt;li&gt;Googlebot then queues the page for rendering.&lt;/li&gt;
&lt;li&gt;As soon as possible, a headless Chromium instance renders the page, which includes JavaScript execution.&lt;/li&gt;
&lt;li&gt;Googlebot uses the rendered HTML to index the page.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Your technical setup can influence the process of crawling, rendering, and indexing. For example, slow response times or server errors can impact the &lt;a href=&quot;https://webmasters.googleblog.com/2017/01/what-crawl-budget-means-for-googlebot.html&quot; rel=&quot;noopener&quot;&gt;crawl budget&lt;/a&gt;. Another example would be requiring JavaScript to render the links can lead to a slower discovery of these links.&lt;/p&gt;
&lt;h2 id=&quot;use-feature-detection-and-handle-errors&quot;&gt;Use feature detection and handle errors &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/javascript-and-google-search-io-2019/#use-feature-detection-and-handle-errors&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The evergreen Googlebot has lots of new features, but some features are still not supported. Relying on unsupported features or not handling errors properly can mean Googlebot can&#39;t render or index your content.&lt;/p&gt;
&lt;p&gt;Let&#39;s look at an example:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;body&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;     navigator&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;geolocation&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getCurrentPosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;onSuccess&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token function&quot;&gt;loadLocalContent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;position&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;body&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;This page might not show any content in some cases because the code doesn&#39;t handle when the user declines the permission or when getCurrentPosition call returns an error. Googlebot declines permission requests like this by default.&lt;/p&gt;
&lt;p&gt;This is a better solution:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;body&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;&lt;br /&gt;     &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;navigator&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;geolocation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token comment&quot;&gt;// this browser supports the Geolocation API, request location!&lt;/span&gt;&lt;br /&gt;       navigator&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;geolocation&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getCurrentPosition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;br /&gt;         &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;onSuccess&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token comment&quot;&gt;// we successfully got the location, show local content&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token function&quot;&gt;loadLocalContent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;position&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;         &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;onError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token comment&quot;&gt;// we failed to get the location, show fallback content&lt;/span&gt;&lt;br /&gt;           &lt;span class=&quot;token function&quot;&gt;loadGlobalContent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;         &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token comment&quot;&gt;// this browser does not support the Geolocation API, show fallback content&lt;/span&gt;&lt;br /&gt;       &lt;span class=&quot;token function&quot;&gt;loadGlobalContent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;     &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;body&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;If you have problems with getting your JavaScript site indexed, &lt;a href=&quot;https://developers.google.com/search/docs/guides/fix-search-javascript&quot; rel=&quot;noopener&quot;&gt;walk through our troubleshooting guide&lt;/a&gt; to find solutions.&lt;/p&gt;
&lt;h2 id=&quot;choose-the-right-rendering-strategy-for-your-web-app&quot;&gt;Choose the right rendering strategy for your web app &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/javascript-and-google-search-io-2019/#choose-the-right-rendering-strategy-for-your-web-app&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The default rendering strategy for single-page apps today is client-side rendering. The HTML loads the JavaScript, which then generates the content in the browser as it executes.&lt;/p&gt;
&lt;p&gt;Let&#39;s look at a web app that shows a collection of cat images and uses JavaScript to render entirely in the browser.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A code box showing HTML that loads some scripts. A screenshot of a web page on mobile that shows placeholder images while loading the actual content.&quot; decoding=&quot;async&quot; height=&quot;447&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/lzijYVwo1DPX3Fa2liXk.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;The rendering strategy influences the performance and robustness of your web apps.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;If you&#39;re free to choose your rendering strategy, consider server-side rendering or pre-rendering. They execute JavaScript on the server to generate the initial HTML content, which can improve performance for both users and crawlers. These strategies allow the browser to start rendering HTML as it arrives over the network, making the page load faster.  The &lt;a href=&quot;https://www.youtube.com/watch?v=k-A2VfuUROg&quot; rel=&quot;noopener&quot;&gt;rendering session at I/O&lt;/a&gt;  or &lt;a href=&quot;https://web.dev/rendering-on-the-web/&quot;&gt;the blog post about rendering on the web&lt;/a&gt; shows how server-side rendering and hydration can improve the performance and user experience of web apps and provides more code examples for these strategies.&lt;/p&gt;
&lt;p&gt;If you&#39;re looking for a workaround to help crawlers that don&#39;t execute JavaScript—or if you can&#39;t make changes to your frontend codebase—consider &lt;a href=&quot;https://developers.google.com/search/docs/guides/dynamic-rendering&quot; rel=&quot;noopener&quot;&gt;dynamic rendering&lt;/a&gt;, which you can try out in &lt;a href=&quot;https://codelabs.developers.google.com/codelabs/dynamic-rendering&quot; rel=&quot;noopener&quot;&gt;this codelab&lt;/a&gt;. Note, though, that you won&#39;t get the user experience or performance benefits that you would with server-side rendering or pre-rendering because dynamic rendering only serves static HTML to crawlers. That makes it a stop-gap rather than a long-term strategy.&lt;/p&gt;
&lt;h2 id=&quot;test-your-pages&quot;&gt;Test your pages &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/javascript-and-google-search-io-2019/#test-your-pages&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;While most pages generally work fine with Googlebot, we recommend testing your pages regularly to make sure your content is available to Googlebot and there are no problems. There are several great tools to help you do that.&lt;/p&gt;
&lt;p&gt;The easiest way to do a quick check of a page is the &lt;a href=&quot;https://g.co/mobilefriendly&quot; rel=&quot;noopener&quot;&gt;Mobile-Friendly Test&lt;/a&gt;. Besides showing you issues with mobile-friendliness, it also gives you a screenshot of the above-the-fold content and the rendered HTML as Googlebot sees it.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;The mobile-friendly test shows the rendered HTML Googlebot sees after rendering the page&quot; decoding=&quot;async&quot; height=&quot;414&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/15IgtDchchBvLsVyzmG2.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;The mobile-friendly test shows you the rendered HTML Googlebot uses.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;You can also find out if there are resource loading issues or JavaScript errors.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;The Mobile-Friendly Test shows JavaScript errors and a stack trace.&quot; decoding=&quot;async&quot; height=&quot;414&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/22ttektRnHrbGT0zvbHK.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;It&#39;s recommended to verify your domain in &lt;a href=&quot;https://g.co/searchconsole&quot; rel=&quot;noopener&quot;&gt;Google Search Console&lt;/a&gt; so you can use the URL inspection tool to find out more about the crawling and indexing state of a URL, receive messages when Search Console detects issues and find out more details of how your site performs in Google Search.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;The URL inspection tool showing a page that is indexed with information on discovery, crawling and indexing for one URL&quot; decoding=&quot;async&quot; height=&quot;655&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/JYsPy8FXL3E86gCzekQ3.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;The URL Inspection Tool in Search Console shows the status of a page in crawling, rendering, and indexing.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For general SEO tips and guidance, you can use the SEO audits in Lighthouse. To integrate SEO audits into your testing suite, use the &lt;a href=&quot;https://github.com/GoogleChrome/lighthouse/tree/master/lighthouse-cli&quot; rel=&quot;noopener&quot;&gt;Lighthouse CLI&lt;/a&gt; or the &lt;a href=&quot;https://github.com/GoogleChromeLabs/lighthousebot&quot; rel=&quot;noopener&quot;&gt;Lighthouse CI bot&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A lighthouse SEO report with a score of 44 and warnings about mobile-friendliness as well as warnings about content best practices&quot; decoding=&quot;async&quot; height=&quot;443&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/ctch0ql8UQZiaKaWy34u.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;Lighthouse shows general SEO recommendations for a page.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;These tools help you identify, debug, and fix issues with pages in Google Search and should be part of your development routine.&lt;/p&gt;
&lt;h2 id=&quot;stay-up-to-date-and-get-in-touch&quot;&gt;Stay up to date and get in touch &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/javascript-and-google-search-io-2019/#stay-up-to-date-and-get-in-touch&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To stay up to date with announcements and changes to Google Search, keep an eye on our &lt;a href=&quot;https://webmasters.googleblog.com/&quot; rel=&quot;noopener&quot;&gt;Webmasters Blog&lt;/a&gt;, the &lt;a href=&quot;https://youtube.com/GoogleWebmasterHelp&quot; rel=&quot;noopener&quot;&gt;Google Webmasters Youtube channel&lt;/a&gt;, and our &lt;a href=&quot;https://twitter.com/googlewmc&quot; rel=&quot;noopener&quot;&gt;Twitter account&lt;/a&gt;.
Also check out our &lt;a href=&quot;http://developers.google.com/search/docs/guides/&quot; rel=&quot;noopener&quot;&gt;developer guide to Google Search&lt;/a&gt; and our &lt;a href=&quot;https://www.youtube.com/watch?v=LXF8bM4g-J4&amp;amp;list=PLKoqnv2vTMUPOalM1zuWDP9OQl851WMM9&quot; rel=&quot;noopener&quot;&gt;JavaScript SEO video series&lt;/a&gt; to learn more about SEO and JavaScript.&lt;/p&gt;
</content>
    <author>
      <name>Martin Splitt</name>
    </author><author>
      <name>Lizzi Harvey</name>
    </author>
  </entry>
  
  <entry>
    <title>How search works</title>
    <link href="https://web.dev/how-search-works/"/>
    <updated>2018-11-05T00:00:00Z</updated>
    <id>https://web.dev/how-search-works/</id>
    <content type="html" mode="escaped">&lt;h2 id=&quot;what-does-a-search-engine-do&quot;&gt;What does a search engine do? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/how-search-works/#what-does-a-search-engine-do&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Search engines are the digital version of a librarian. They use a comprehensive
index to help find the right information for a query. Understanding the basics
of search prepares you to make your content &lt;strong&gt;discoverable&lt;/strong&gt; for users.&lt;/p&gt;
&lt;h2 id=&quot;how-crawlers-browse-the-web&quot;&gt;How crawlers browse the web &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/how-search-works/#how-crawlers-browse-the-web&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Crawling is like reading through all the books in the library. Before search
engines can bring any search results, they need to have as much information from
the web as possible. To do this, search engines use a crawler—a program that
travels from site to site and acts like a browser.&lt;/p&gt;
&lt;p&gt;If a book or document is missing or damaged, the crawler can&#39;t read it. Crawlers try to
fetch each URL to determine the state of the document. If a document returns an
error status code, crawlers cannot use any of its content, and might retry the
URL at a later time. This ensures only publicly accessible documents get into
the index.&lt;/p&gt;
&lt;p&gt;If crawlers discover a redirection status code (like 301 or 302), they follow
the redirection to a new URL and continue there. Once they get a successful
response, meaning they&#39;ve found a document accessible to users, they check if
it&#39;s allowed to be crawled and then download the content.&lt;/p&gt;
&lt;p&gt;This check includes the HTML and all content mentioned in the HTML, such as images,
videos, or JavaScript. Crawlers also extract the links from HTML documents so that
the crawler can visit the linked URLs as well. Following links is how crawlers
find new pages on the web.&lt;/p&gt;
&lt;p&gt;Crawlers don&#39;t actively click links or buttons, but instead send URLs to a queue
to crawl them later. When accessing a new URL, no cookies, service workers or
local storage (like IndexedDB) are available.&lt;/p&gt;
&lt;h2 id=&quot;building-an-index&quot;&gt;Building an index &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/how-search-works/#building-an-index&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;After retrieving a document, the crawler hands the content to the search engine
to add it to the index. The search engine now renders and analyzes the content
to understand it. Rendering means displaying the page as a browser would
(&lt;a href=&quot;https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript&quot; rel=&quot;noopener&quot;&gt;with some limitations&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Search engines look at keywords, the title, links, headings, text, and many
other things. These are called &lt;strong&gt;signals&lt;/strong&gt; which describe the content and
context of the page. Signals allow search engines to answer any given query with
the best possible page.&lt;/p&gt;
&lt;p&gt;Search engines might find the same content at different URLs. For example a
recipe for &amp;quot;apple pie&amp;quot; might live under &lt;code&gt;/recipes/apple-pie&lt;/code&gt; and under
&lt;code&gt;/recipes/1234&lt;/code&gt;. To avoid indexing and showing the recipe twice, search engines
determine what the main URL should be and discard the alternative URLs showing
the same content.&lt;/p&gt;
&lt;h2 id=&quot;serving-the-most-useful-results&quot;&gt;Serving the most useful results &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/how-search-works/#serving-the-most-useful-results&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Search engines do more work than just matching the query to keywords in the
index. To give useful results, they might consider context, alternative wording,
location of the user, and more. For example, &amp;quot;silicon valley&amp;quot; might refer to the
geographic region or the TV show. But if the query is &amp;quot;silicon valley cast&amp;quot;,
results on the region aren&#39;t very helpful.&lt;/p&gt;
&lt;p&gt;Some queries can be indirect, like &amp;quot;the song from pulp fiction&amp;quot;, and search
engines need to interpret that and show  results for the music in the film. When
a user searches for something, search engines determine the most useful results
and then show them to the user. Ranking, or ordering, the pages happens based on
the query. The order can often change over time if better information becomes
available.&lt;/p&gt;
&lt;h2 id=&quot;next-steps-how-to-optimize-for-search-engines&quot;&gt;Next steps: how to optimize for search engines &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/how-search-works/#next-steps-how-to-optimize-for-search-engines&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Now that you understand the basics of how search engines work, you may see the
value in optimizing for search engines. This is called SEO, or &#39;Search Engine
Optimization.&#39; By making sure search engines can find and automatically
understand your content, you are improving the visibility of your site for
relevant searches. This can result in more interested users coming to your site.
Audit your site with Lighthouse and check the SEO results to see how well search
engines can make users aware of your content.&lt;/p&gt;
</content>
    <author>
      <name>Lizzi Harvey</name>
    </author>
  </entry>
  
  <entry>
    <title>How to measure search engine optimization with Lighthouse</title>
    <link href="https://web.dev/pass-lighthouse-seo-audit/"/>
    <updated>2018-11-05T00:00:00Z</updated>
    <id>https://web.dev/pass-lighthouse-seo-audit/</id>
    <content type="html" mode="escaped">&lt;h2 id=&quot;why-does-this-matter&quot;&gt;Why does this matter? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/pass-lighthouse-seo-audit/#why-does-this-matter&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Lighthouse search engine optimization (SEO) audit scans your page, tests for
things that matter to search engines, and gives you a score so you can see
specific areas for improvement. SEO matters because it&#39;s how you get more
relevant users viewing your content. If a search engine has trouble seeing your
page, you&#39;re possibly missing out on traffic sources.&lt;/p&gt;
&lt;h2 id=&quot;audit-your-page-with-lighthouse&quot;&gt;Audit your page with Lighthouse &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/pass-lighthouse-seo-audit/#audit-your-page-with-lighthouse&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run Lighthouse on a page that&#39;s representative of the content that you want
search engines to see:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Press `Control+Shift+J` (or `Command+Option+J` on Mac) to open DevTools.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Lighthouse&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Make sure the &lt;strong&gt;SEO&lt;/strong&gt; checkbox is selected in the &lt;em&gt;Categories&lt;/em&gt; list.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Generate report&lt;/strong&gt; button.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lighthouse generates a report for your page so you can see areas where you can
improve SEO for your site.&lt;/p&gt;
&lt;p&gt;To learn how to fix issues flagged by Lighthouse, see the
&lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/seo/&quot; rel=&quot;noopener&quot;&gt;SEO audits&lt;/a&gt; collection.&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next steps &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/pass-lighthouse-seo-audit/#next-steps&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It&#39;s worth noting that the audit doesn&#39;t cover everything you could do to
increase visibility in search engines. You&#39;ll have to check the guidelines for
individual search engines because they may have different requirements.&lt;/p&gt;
&lt;p&gt;Here are some guides for specific search engines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bing.com/webmaster/help/webmaster-guidelines-30fba23a&quot; rel=&quot;noopener&quot;&gt;Bing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/webmasters/answer/35769&quot; rel=&quot;noopener&quot;&gt;Google Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://webmaster.yandex.com/&quot; rel=&quot;noopener&quot;&gt;Yandex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also non-technical aspects that can improve visibility of your content
in search engines, such as writing in the style of your target audience. Bottom
line: make great content for the people you want to attract.&lt;/p&gt;
&lt;p&gt;To learn more, check out Google&#39;s I/O talks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=NO-sdBzb1Hc&quot; rel=&quot;noopener&quot;&gt;Build a successful web presence with Google Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=PFwUbgvpdaQ&quot; rel=&quot;noopener&quot;&gt;Deliver search-friendly JavaScript-powered websites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    <author>
      <name>Lizzi Harvey</name>
    </author>
  </entry>
</feed>
