Googlebot uses a web rendering service (WRS) that is based on Chrome 41 (M41). Generally, WRS supports the same web platform features and capabilities that the Chrome version it uses — for a full list refer to chromestatus.com, or use the compare function on caniuse.com.
However, there are a few exceptions and differences that you should keep in mind. The following features and APIs are explicitly disabled or limited in the WRS:
WRS and Googlebot doesn't support WebSocket protocol
Googlebot and WRS only speaks HTTP/1.x and FTP, with and without TLS.
WRS disables some interfaces and capabilities
Use feature detection to identify supported APIs and capabilities of the WRS, and polyfills where applicable — just as you would for any other browser — as the capabilities of WRS may update at any time:
- IndexedDB and WebSQL interfaces are disabled.
- Interfaces defined by the Service Worker specification are disabled.
- WebGL interface is disabled; 3D and VR content is not currently indexed.
Googlebot and WRS are stateless across page loads
WRS loads each URL (refer to Introduction to Indexing for an overview of how Google discovers content), following server and client redirects, same as a regular browser. However, WRS does not retain state across page loads:
- Local Storage and Session Storage data are cleared across page loads.
- HTTP Cookies are cleared across page loads.
WRS declines permission requests
Any features that requires user consent are auto-declined by the Googlebot. For a full list of affected features, refer to the Permission Registry. For example, Camera API, Geolocation API, and Notifications API.
Googlebot and WRS prioritize essential page content
Googlebot is designed to be a good citizen of the web. Crawling is its main priority, while making sure it doesn't degrade the experience of users visiting the site. Googlebot and WRS continuously analyze and identify resources that don’t contribute to essential page content and may not fetch such resources. For example, reporting and error requests that don’t contribute to essential page content, and other similar types of requests are unused or unnecessary to extract essential page content.
Track errors and debug rendering problems
In addition to using feature detection and polyfills, be sure to collect and analyze client-side errors that may prevent your application from behaving correctly when accessed by users and Googlebot.Next: Debug rendering problems