Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
Corrigir problemas de JavaScript relacionados à Pesquisa
Este guia ajuda a identificar e corrigir problemas que podem impedir a exibição de uma página ou um conteúdo com JavaScript na Pesquisa Google. Embora a Pesquisa Google execute JavaScript, é preciso considerar algumas diferenças e limitações na criação de páginas e aplicativos para que os rastreadores possam acessar e renderizar o conteúdo. Nosso guia Princípios básicos de SEO em JavaScript tem mais informações sobre como é possível otimizar seu site JavaScript para a Pesquisa Google.
O Googlebot foi criado para se comportar bem na Web. Ele prioriza o rastreamento sem afetar a experiência dos usuários que acessam o site (link em inglês). O Googlebot e o componente Web Rendering Service (WRS) analisam e identificam continuamente recursos que não contribuem para o conteúdo essencial da página e podem não os buscar. Por exemplo, relatórios e solicitações de erros que não contribuem para o conteúdo essencial da página e outros tipos parecidos de solicitações que não são usadas ou são desnecessárias para extrair o conteúdo essencial da página. Talvez a análise do cliente não represente de maneira completa ou precisa as atividades do Googlebot e do WRS no site. Use o relatório de estatísticas de rastreamento no Google Search Console para monitorar a atividade e o feedback do Googlebot e do WRS no seu site.
Se você suspeitar que problemas de JavaScript estão impedindo a exibição de uma página ou um conteúdo com JavaScript na Pesquisa Google, siga estas etapas. Caso você não tenha certeza se o JavaScript é a causa principal, siga nosso guia geral de depuração para determinar o problema específico.
Para testar como o Google rastreia e renderiza um URL, use o teste de pesquisa aprimorada ou a Ferramenta de inspeção de URL no Search Console. É possível ver os recursos carregados, as saídas e as exceções do Console JavaScript, o DOM renderizado e outros dados.
Além disso, é recomendável coletar e auditar os erros de JavaScript encontrados no site pelos usuários, incluindo o Googlebot, para identificar problemas que possam afetar a renderização do conteúdo. Veja um exemplo que mostra como coletar erros de JavaScript registrados no gerenciador onerror global. Observação: alguns problemas de JavaScript, como erros de análise, não podem ser registrados com esse método.
window.addEventListener('error',function(e){varerrorText=[e.message,'URL: '+e.filename,'Line: '+e.lineno+', Column: '+e.colno,'Stack: '+(e.error && e.error.stack||'(no stack trace)')].join('\n');// Example: log errors as visual output into the host page.// Note: you probably don't want to show such errors to users, or// have the errors get indexed by Googlebot; however, it may// be a useful feature while actively debugging the page.varDOM_ID='rendering-debug-pre';if(!document.getElementById(DOM_ID)){varlog=document.createElement('pre');log.id=DOM_ID;log.style.whiteSpace='pre-wrap';log.textContent=errorText;if(!document.body)document.body=document.createElement('body');document.body.insertBefore(log,document.body.firstChild);}else{document.getElementById(DOM_ID).textContent+='\n\n'+errorText;}// Example: log the error to remote service.// Note: you can log errors to a remote service, to understand// and monitor the types of errors encountered by regular users,// Googlebot, and other crawlers.varclient=newXMLHttpRequest();client.open('POST','https://example.com/logError');client.setRequestHeader('Content-Type','text/plain;charset=UTF-8');client.send(errorText);});
Evite erros soft 404. Em um aplicativo de página única (SPA), isso pode ser particularmente difícil. Para evitar que páginas de erro sejam indexadas, você pode usar uma ou as duas estratégias a seguir:
Redirecione para um URL em que o servidor responde com um código de status 404.
fetch(`https://api.kitten.club/cats/${id}`).then(res=>res.json()).then((cat)=>{if(!cat.exists){// redirect to page that gives a 404window.location.href='/not-found';}});
Quando um SPA usa o JavaScript do cliente para lidar com erros, ele geralmente informa um código de status HTTP 200 em vez do código de status correto. Isso pode levar à indexação de páginas de erro e, possivelmente, à exibição nos resultados de pesquisa.
O Googlebot recusa solicitações de permissão do usuário. Os recursos que exigem permissão do usuário não fazem sentido para o Googlebot nem para todos os usuários. Por exemplo, se você tornar Camera API obrigatório, o Googlebot não vai poder fornecer uma câmera. Em vez disso, ofereça uma maneira de acessar o conteúdo sem forçar os usuários a permitir o acesso à câmera.
Não use fragmentos de URL para carregar conteúdos diferentes. Um SPA talvez use fragmentos de URL (por exemplo, https://example.com/#/products) para carregar visualizações diferentes. O esquema de rastreamento AJAX foi descontinuado em 2015. Por isso, não espere que os fragmentos de URL funcionem com o Googlebot. Recomendamos usar a API History para carregar conteúdos diferentes com base no URL em um SPA.
Não dependa da persistência de dados para veicular conteúdo. O WRS carrega cada URL (consulte Como a Pesquisa Google funciona para ter uma visão geral de como o Google descobre conteúdo), seguindo os redirecionamentos do servidor e do cliente, da mesma forma que um navegador comum. No entanto, o WRS não mantém o estado nos carregamentos de página:
Os dados do armazenamento local e de sessão são apagados nos carregamentos de página.
Os cookies de HTTP são apagados nos carregamentos de página.
Use a técnica de impressão digital de conteúdo para evitar problemas de cache com o Googlebot. O Googlebot armazena muitos dados em cache para reduzir as solicitações de rede e o uso de recursos. O WRS pode ignorar cabeçalhos de armazenamento em cache. Talvez isso leve o WRS a usar recursos desatualizados de JavaScript ou CSS. A técnica de impressão digital de conteúdo evita esse problema ao criar uma referência à parte do nome do arquivo relativa ao conteúdo, como main.2bb85551.js. A impressão digital depende do conteúdo do documento. Por isso, cada atualização gera um nome de arquivo diferente. Veja o guia web.dev sobre estratégias de armazenamento em cache de longa duração para saber mais.
Verifique se o aplicativo usa a detecção de recursos para as principais APIs necessárias e oferece um comportamento substituto ou polyfill, quando aplicável. Talvez alguns recursos da Web ainda não sejam usados por todos os user agents, e alguns deles podem desativar determinados recursos intencionalmente. Por exemplo, se você usar o WebGL para renderizar efeitos de foto no navegador, a detecção de recursos vai mostrar que o Googlebot não oferece suporte a WebGL. Para corrigir isso, você pode ignorar o efeito de foto ou fazer a renderização dele no servidor. Desse modo, seu conteúdo vai ser acessível a todos, incluindo o Googlebot.
Verifique se o conteúdo funciona com conexões HTTP. O Googlebot usa solicitações HTTP para recuperar o conteúdo de servidores. Ele não é compatível com outros tipos de conexões, como WebSockets ou WebRTC. Para evitar problemas com essas conexões, forneça um substituto HTTP para buscar conteúdo e reforce o tratamento de erros e a detecção de recursos.
Quando o problema for corrigido, uma marca de seleção verde aparecerá e nenhum erro será exibido. Se o problema persistir, poste na Comunidade de Ajuda da Central da Pesquisa.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-04 UTC."],[[["\u003cp\u003eThis guide helps you identify and fix JavaScript issues that may be preventing your website content from appearing correctly in Google Search.\u003c/p\u003e\n"],["\u003cp\u003eUse the Rich Results Test or the URL Inspection Tool to see how Googlebot crawls and renders your web pages, including loaded resources, JavaScript errors, and the rendered DOM.\u003c/p\u003e\n"],["\u003cp\u003eEnsure your single-page application handles soft 404 errors correctly by redirecting to a 404 page or using the noindex meta tag for error pages.\u003c/p\u003e\n"],["\u003cp\u003eAvoid using URL fragments for loading content and rely on the History API instead, and ensure your web components render as expected by using the \u003ccode\u003e<slot>\u003c/code\u003e mechanism for light DOM content.\u003c/p\u003e\n"],["\u003cp\u003eGooglebot has limitations, such as declining permission requests and not supporting data persistence or connections like WebSockets and WebRTC, so design your content accordingly with fallbacks.\u003c/p\u003e\n"]]],["To resolve JavaScript-related search issues, first, test how Google crawls and renders your URLs using the Rich Results Test or URL Inspection Tool. Collect and audit JavaScript errors. Prevent soft 404 errors by redirecting or adding a \"noindex\" meta tag. Avoid relying on user permission requests, URL fragments, or data persistence. Employ content fingerprinting to avoid caching issues. Use feature detection for critical APIs, ensure HTTP connection compatibility, and verify web component rendering. Finally, retest your page after fixes.\n"],null,["Fix Search-related JavaScript problems\n\n\nThis guide helps you identify and fix JavaScript issues that may be blocking your page, or specific content on JavaScript powered pages, from showing up in Google Search.\nWhile Google Search does run JavaScript, there are some differences and limitations that you need to account for when designing your pages and applications to accommodate how crawlers access and render your content.\nOur [guide on JavaScript SEO basics](/search/docs/guides/javascript-seo-basics) has more information on how you can optimize your JavaScript site for Google Search.\n\nGooglebot is designed to be a good citizen of the web. Crawling is its [main priority](/search/blog/2017/01/what-crawl-budget-means-for-googlebot), while making sure it doesn't degrade the experience of users visiting the site.\nGooglebot and its Web Rendering Service (WRS) component continuously analyze and identify resources that don't contribute to essential page content and may not fetch such resources.\nFor 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. Client-side analytics may not provide a full or accurate representation of Googlebot and WRS activity on your site.\nUse [the crawl stats report in Google Search Console](https://support.google.com/webmasters/answer/9679690) to monitor Googlebot and WRS activity and feedback on your site.\n\n\nIf you suspect that JavaScript issues might be blocking your page, or specific content on JavaScript powered pages, from showing up in Google Search, follow these steps. If you're not sure if JavaScript is the main cause, follow our [general debugging guide](/search/docs/guides/debug) to determine the specific issue.\n\n1. **To test how Google crawls and renders a URL** , use the [Rich Results Test](https://search.google.com/test/rich-results) or the [URL Inspection Tool](https://support.google.com/webmasters/answer/9012289) in Search Console. You can see loaded resources, JavaScript console output and exceptions, rendered DOM, and more information.\n\n\n Optionally, we also recommend collecting and auditing JavaScript errors encountered by users, including Googlebot, on your site to identify potential issues that may affect how content is rendered.\n Here's an example that shows how to log JavaScript errors that are logged in the [global onerror handler](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror). Note that some types of JavaScript errors, such as a parse error, cannot be logged with this method. \n\n ```javascript\n window.addEventListener('error', function(e) {\n var errorText = [\n e.message,\n 'URL: ' + e.filename,\n 'Line: ' + e.lineno + ', Column: ' + e.colno,\n 'Stack: ' + (e.error && e.error.stack || '(no stack trace)')\n ].join('\\n');\n\n // Example: log errors as visual output into the host page.\n // Note: you probably don't want to show such errors to users, or\n // have the errors get indexed by Googlebot; however, it may\n // be a useful feature while actively debugging the page.\n var DOM_ID = 'rendering-debug-pre';\n if (!document.getElementById(DOM_ID)) {\n var log = document.createElement('pre');\n log.id = DOM_ID;\n log.style.whiteSpace = 'pre-wrap';\n log.textContent = errorText;\n if (!document.body) document.body = document.createElement('body');\n document.body.insertBefore(log, document.body.firstChild);\n } else {\n document.getElementById(DOM_ID).textContent += '\\n\\n' + errorText;\n }\n\n // Example: log the error to remote service.\n // Note: you can log errors to a remote service, to understand\n // and monitor the types of errors encountered by regular users,\n // Googlebot, and other crawlers.\n var client = new XMLHttpRequest();\n client.open('POST', 'https://example.com/logError');\n client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');\n client.send(errorText);\n\n });\n ```\n2. **Make sure to prevent [`soft 404` errors](/search/docs/crawling-indexing/http-network-errors#soft-404-errors).** In a single-page application (SPA), this can be especially difficult. To prevent error pages from being indexed, you can use one or both of the following strategies:\n - Redirect to a URL where the server responds with a `404` status code. \n\n ```javascript\n fetch(`https://api.kitten.club/cats/${id}`)\n .then(res =\u003e res.json())\n .then((cat) =\u003e {\n if (!cat.exists) {\n // redirect to page that gives a 404\n window.location.href = '/not-found';\n }\n });\n ```\n - Add or change the robots `meta` tag to `noindex`. \n\n ```javascript\n fetch(`https://api.kitten.club/cats/${id}`)\n .then(res =\u003e res.json())\n .then((cat) =\u003e {\n if (!cat.exists) {\n const metaRobots = document.createElement('meta');\n metaRobots.name = 'robots';\n metaRobots.content = 'noindex';\n document.head.appendChild(metaRobots);\n }\n });\n ```\n\n\n When a SPA is using client-side JavaScript to handle errors they often report a `200` HTTP status code instead of the [appropriate status code](/search/docs/crawling-indexing/javascript/javascript-seo-basics#use-meaningful-http-status-codes). This can lead to error pages being indexed and possibly shown in search results.\n3. **Expect Googlebot to decline [user permission requests](https://w3c.github.io/permissions/#permission-registry).** \n Features that require user permission don't make sense for Googlebot, or for all users. For example, if you make the `Camera API` required, Googlebot can't provide a camera to you. Instead, provide a way for users to access your content without being forced to allow camera access.\n4. **Don't use URL fragments to load different content.** \n A SPA may use URL fragments (for example https://example.com/#/products) for loading different views. The [AJAX-crawling scheme has been deprecated](/search/blog/2015/10/deprecating-our-ajax-crawling-scheme) since 2015, so you can't rely on URL fragments to work with Googlebot. We recommend using the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History) to load different content based on the URL in a SPA.\n5. **Don't rely on data persistence to serve content.** \n WRS loads each URL (refer to [How Google Search Works](/search/docs/fundamentals/how-search-works) 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:\n - Local Storage and Session Storage data are cleared across page loads.\n - HTTP Cookies are cleared across page loads.\n6. **Use content fingerprinting to avoid caching issues with Googlebot.** \n Googlebot caches aggressively in order to reduce network requests and resource usage. WRS may ignore caching headers. This may lead WRS to use outdated JavaScript or CSS resources. Content fingerprinting avoids this problem by making a fingerprint of the content part of the filename, like `main.2bb85551.js`. The fingerprint depends on the content of the file, so updates generate a different filename every time. Check out the [web.dev guide on long-lived caching strategies](https://web.dev/articles/http-cache#versioned-urls) to learn more.\n7. **Ensure that your application uses [feature detection](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Feature_detection) for all critical APIs that it needs and provide a fallback behavior or polyfill where applicable.** \n Some web features may not yet be adopted by all user agents and some may intentionally disable certain features. For example, if you use WebGL to render photo effects in the browser, feature detection shows that Googlebot doesn't support WebGL. To fix this, you could skip the photo effect or decide to use server-side rendering to prerender the photo effects, which makes your content accessible to everyone, including Googlebot.\n8. **Make sure your content works with HTTP connections.** \n Googlebot uses HTTP requests to retrieve content from your server. It does not support other types of connections, such as [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) or [WebRTC](https://developer.mozilla.org/en-US/docs/Glossary/WebRTC) connections. To avoid problems with such connections, make sure to provide an HTTP fallback to retrieve content and use robust error handling and [feature detection](#feature-detection).\n9. **Make sure your web components render as expected.** Use the [Rich Results Test](https://search.google.com/test/rich-results) or the [URL Inspection Tool](https://support.google.com/webmasters/answer/9012289) to check if the rendered HTML has all content you expect. \n WRS flattens the [light DOM and shadow DOM](/web/fundamentals/web-components/shadowdom#lightdom). If the web components you use aren't using [`\u003cslot\u003e` mechanism](/web/fundamentals/web-components/shadowdom#slots) for light DOM content, consult the documentation of the web component for further information or use another web component instead. For more information, see [best practices for web components](/search/docs/guides/javascript-seo-basics#web-components).\n10. **After you fix the items in this checklist, test your page** with the [Rich Results Test](https://search.google.com/test/rich-results) or the [URL inspection tool](https://search.google.com/search-console) in Search Console again.\n\n If you fixed the issue, a green check mark appears and no errors display. If you still see errors, post in the [Search Central help community](https://support.google.com/webmasters/community)."]]