Google Is Treating Your Tabs as Hidden Content

On this page

The flat claim that Google “deprioritizes” content hidden in tabs and accordions is a contested myth, and shipping it as settled fact is the most common error in this corner of technical SEO. Google’s stated, public position is that content present in the mobile/rendered HTML, including text inside collapsed tabs and accordions, is indexed and eligible to count for ranking. The axis that actually decides whether your content is seen is not visible-versus-hidden; it is whether the text is in the DOM at all. Content present in the source even when a panel is closed gets crawled; content injected into the DOM only after a click may never be triggered by the renderer and may not be indexed. Treat “always visible vs. CSS-hidden vs. DOM-injected-on-click” as the real classification, and you will solve the actual problem instead of chasing a phantom penalty.

Correct the premise first

Google has repeatedly stated that, under mobile-first indexing, it indexes content in tabs and accordions and that this content is eligible to count for ranking; it does not treat collapsed-but-present content as second-class by virtue of being collapsed. That is the position to anchor on.

Alongside it sits a long-standing practitioner observation that, for sites without strong domain authority, surfacing key information visibly tends to correlate with better long-tail performance than burying everything behind interaction. This is field experience, not a Google ranking rule, and the two should not be conflated. The honest framing is: Google says collapsed content in the rendered HTML counts, and some practitioners observe a visibility advantage in practice, present both, and do not assert “hidden equals devalued” as fact, because Google says the opposite for content that is actually in the HTML.

The distinction that actually matters: in the DOM or not

Here is the fork that determines whether your content is even eligible.

CSS-hidden content is in the DOM. A panel styled with display: none or visibility: hidden whose text is present in the page source (or the rendered HTML) when the tab is inactive is crawled and indexed; the styling only affects what the user sees, not what Googlebot parses. This is the case Google’s guidance covers, and it is fine.

DOM-injected-on-click content is not in the DOM until interaction. If the tab’s text is fetched from an API or inserted by JavaScript only when the user clicks the tab, then the renderer, which does not click around your interface, may never trigger that insertion, and the content can be absent from what Google indexes. This is the configuration that genuinely costs you indexing, and it is invisible to a casual check because the page looks complete to a human who clicks.

So the dangerous pattern is not “I used an accordion.” It is “the accordion’s content only exists after a click.” That is the difference between content Google reliably sees and content it may never load.

Diagnose by classifying each tab

You can determine which case you are in without guessing.

  1. View the page source and the rendered HTML (Search Console URL Inspection, “View Crawled Page” / tested HTML) for a representative page.
  2. Search that HTML for the spec, review, or Q&A text that lives inside an inactive tab.
  3. If the text is present while the tab is closed, it is CSS-hidden and in the DOM, Google sees it. If it appears only after you click the tab in a live browser but is absent from the rendered HTML, it is DOM-injected and at risk.

Do this per tab type, since one template can mix both: the spec table may be server-rendered and in the DOM while the reviews load only on click.

Fix the real risk, then optimize for visibility

Convert DOM-injected critical content to always-in-DOM. If a tab holds information you need indexed, ensure that text is in the initial HTML or rendered output regardless of interaction, not fetched on click. This single change is what moves content from “may not be indexed” to “indexed.”

Then decide what deserves to be visible. Use Search Console query data to find which attributes users actually search for, the specific spec tokens, the questions, the comparison terms, and make sure that text is in the indexable HTML and, where it drives decisions, surfaced without a click. Progressive disclosure is the UX-compatible answer: render a visible summary of the key specs, top reviews, and most-asked questions, and keep the long tail in tabs. Implemented at the template level, this scales across every product page at once.

One caveat on FAQs: marking up visible questions with FAQPage schema will not earn you an FAQ rich result. FAQ rich results were restricted in 2023 and have since been removed from general Search for ordinary sites; the markup may still be parsed but yields no special result. Surface the Q&A because it helps users and puts the text in the indexable HTML, not because you expect a rich snippet.

Why this post ships stale advice so often

The reason the “hidden content is penalized” claim persists is that it was closer to true a decade ago, before mobile-first indexing. In the desktop-first era there was a defensible argument that content a user could not see without interaction might be treated as less prominent. Mobile-first indexing changed the calculus: on mobile, tabs and accordions are the normal, expected way to present dense product information, so Google’s guidance is that collapsed content in the mobile HTML is indexed and eligible to count. Advice written against the old model gets copied forward, and the original nuance, that this was about prominence and not about indexing, gets flattened into “hidden equals bad.” When you read a confident assertion that Google devalues tab content, check its vintage and check whether it distinguishes CSS-hidden from DOM-injected. Most do neither.

The practical takeaway is to verify the current position rather than inheriting the folklore, and to resist over-correcting in either direction. Do not yank every accordion off your product pages in a panic; collapsed content that is in the DOM is fine, and accordions are good UX for long specification lists. Equally, do not assume an accordion guarantees indexing; if the content loads on click, it can be invisible to the crawler regardless of how it is styled. The decision is not “tabs: yes or no.” It is “is this text in the DOM on first load, and is the information users actually search for surfaced where both they and the crawler can reach it.”

Build the check into your template review

Because one template stamps the same structure across hundreds or thousands of pages, a single misconfigured tab pattern scales into a site-wide indexing gap, and a single fix scales the same way. When you audit or build a product or article template, classify each collapsible region once: is its content server-rendered into the DOM, or injected on interaction? Anything critical in the second category gets moved to the first. Pair that with a visible summary of the highest-demand attributes drawn from your Search Console query data, and you have a template that indexes reliably and serves users without forcing a click for the information they came to find.

Frequently Asked Questions

Does Google rank content in tabs lower than visible content?

Google’s stated position is no: content inside tabs and accordions that is present in the rendered HTML is indexed and eligible to count for ranking. Some practitioners observe that visibly surfaced content performs better on long-tail queries, but that is a field observation, not a confirmed Google ranking rule. Do not treat “hidden ranks lower” as settled fact.

If my accordion content only loads when clicked, will Google index it?

Often not. If the content is injected into the DOM only on click (fetched from an API or inserted by JavaScript at interaction), the renderer may never trigger that insertion, so the text can be absent from what Google indexes. Check the rendered HTML for the text while the panel is closed; if it is not there, move it into the initial DOM.

Sources