Every taxonomy term on a Drupal site has its own public page unless someone has decided otherwise. Drupal core's Taxonomy term view ships enabled at the path taxonomy/term/%, and drupal.org's user guide says a site that classifies content "will automatically be set up with taxonomy listing pages for each term".
For Drupal SEO, the difficulty is that the modules which manage search behaviour leave these pages indexable in their shipped settings. Metatag's shipped default for terms sets no robots tag. Simple XML Sitemap and XML Sitemap both exclude each vocabulary until an administrator includes it. So a site can carry an indexable page for every term it holds, with no editor owning those pages and no sitemap listing them.
What does a default Drupal taxonomy term page show?
A default Drupal taxonomy term page shows the term name as the page title, the term itself in the header, and a list of published content tagged with that term, ten items per page with a mini pager. The same core view adds an RSS feed for every term at taxonomy/term/%/feed.
Each listed item is a teaser. In the Standard install profile, the teaser display for articles and basic pages shows the summary or the body trimmed to 600 characters. A term page repeats the full text of longer tagged pages where a site has changed the view's row view mode or its teaser display, and a theme's teaser template can do the same.
The header renders the term in its full view mode, so a filled description field appears at the top. With the description left blank, the page holds the term name, a run of extracts and the site's own header and footer. Google lists "an empty page" among its soft 404 examples, and a term page with little on it may be reported that way in Search Console.
The Standard profile also creates a Tags vocabulary attached to articles, described as a way to "group articles on similar topics into categories". Every tag an editor adds there becomes a term with its own page.
Are Drupal taxonomy term pages indexed by Google by default?
Drupal taxonomy term pages are open to Google's index by default on a site running Metatag, because Metatag's shipped taxonomy term defaults set no robots tag. The default configuration sets a title, a canonical URL and a description from the term.
Metatag's Robots tag offers noindex, which "Prevents search engines from indexing this page". The Metatag project page explains that defaults can be set "per entity and per entity bundle", which in practice means one setting per vocabulary.
The shipped default takes the meta description from [term:description], the term's own description field, so a term with a blank description gets no meta description. Google says snippets are "primarily created from the page content itself", which puts the weight back on what the page contains.
The canonical URL is [term:url], the term's own address. A term page therefore names itself as canonical, even where your team has written a landing page on the same subject.
Do taxonomy pages cause duplicate content in Drupal?
Taxonomy pages do create some duplicate content in Drupal, since each teaser repeats an extract of a tagged page, and Google's canonicalisation guide says "Some duplicate content on a site is normal and it's not a violation of" its spam policies. Google selects one URL from a group of duplicates as representative and says "duplicates are crawled less frequently in order to reduce the crawling load on sites".
For duplicate content SEO, the case to check is a term page and a landing page about the same subject, with nothing on the site saying which should answer the search.
Addressing is the second source. Pathauto generates aliases for taxonomy terms, which gives each term an alias alongside its system path /taxonomy/term/N. The Redirect module lists "redirecting alternative URL's like non-aliased path" among its purposes. Its "Enforce clean and canonical URLs" setting redirects a page to its alias, and it is switched on in the shipped configuration with a 301 status. Google treats a redirect as "A strong signal that the target of the redirect should become canonical".
Does Simple XML Sitemap include taxonomy terms?
Simple XML Sitemap leaves taxonomy terms out until an administrator includes each vocabulary. Its README says "Initially only the home page is indexed in the default sitemap", and inclusion is then set per bundle at admin/config/search/simplesitemap/entities.
The other Drupal XML sitemap module, XML sitemap, covers taxonomy terms and treats a bundle as excluded unless enabled, through XMLSITEMAP_STATUS_DEFAULT = 0 in its code.
Google calls a sitemap "A weak signal" for canonical choice and says "All pages listed in a sitemap are suggested as canonicals". Add the vocabularies you want found, and use noindex or a different response for the rest.
Check your own term pages in ten minutes
You need a browser, plus an administrator login for the sitemap settings. Start with /taxonomy/term/1 and try other low numbers.
| Check | How | What the shipped defaults give |
|---|---|---|
| Alias | Does the address bar change from /taxonomy/term/N to a readable path? |
Redirect's canonical URL setting is on when shipped |
| Robots | View source, search for name="robots" |
No robots tag from Metatag's term default |
| Description | Search the source for name="description" |
Present only if the term has a description |
| Canonical | Search the source for rel="canonical" |
The term's own URL |
| Content | Count teasers, then add ?page=1 to the URL |
Ten teasers a page, mini pager |
| Feed | Add /feed to the system path |
RSS feed of the term's content |
| Sitemap | Open the sitemap module's settings, or the XML sitemap itself | Terms excluded until a vocabulary is included |
If a system path loads without redirecting, check Redirect's setting first. If a term page shows a name and little else, look for it in Search Console's soft 404 reporting. Note which vocabularies produced pages.
Should taxonomy term pages be noindexed in Drupal?
Some taxonomy term pages should be noindexed in Drupal and others kept, and the choice belongs at vocabulary level, because Metatag defaults and sitemap inclusion are both set per bundle.
For a vocabulary you keep, write a description for each term so the header and meta description have something in them. The page title is already the term name. Keep the teaser view mode, and include the vocabulary in the sitemap.
For the rest there are two routes. Metatag's noindex keeps the page reachable and asks Google to drop it: Google says it "will drop that page entirely from Google Search results", provided robots.txt does not block the page, and its crawl budget guide says it will still request the page. The Rabbit Hole module, through its taxonomy submodule, controls what happens when a term is viewed at its own page: access denied, page not found, a redirect, or normal display, per vocabulary or per term. Its options do not include a 410. Before choosing page not found, find out which templates and menus link to those term pages.
Noindex also settles the question for Google's AI features. To appear as a supporting link in AI Overviews or AI Mode, Google says a page "must be indexed and eligible to be shown in Google Search with a snippet". Our piece on why AI answers quote out-of-date pages covers the same mechanism for drafts and withdrawn content.
Google's pagination guidance asks for "a unique URL" per page and sets no limit on how many pages a listing has, so more items per page, or no pager on a thin vocabulary, is the site's own decision.
What to ask a Drupal supplier about term pages
Put these in the requirement or the next service review.
- Vocabularies. Which vocabularies produce public term pages today, and which of them are meant to? A strong answer is a list with a decision against each. A weak one is "Drupal handles that".
- Indexing. What robots and meta description settings apply to each vocabulary in Metatag? A strong answer quotes settings read from the site that week.
- Sitemap. Which vocabularies are included in the XML sitemap, and why those? "All of them" and "none of them" both need a reason.
- Switched-off terms. For vocabularies with no public role, is the answer noindex or a Rabbit Hole response, and what links to those pages now? A strong answer names the links it checked.
- System paths. Does
/taxonomy/term/Nredirect to its alias across the site? Ask to see one tested.
We have worked with Drupal since Drupal 5 and are a LocalGov Drupal certified supplier. To talk through the settings on your own vocabularies, get in touch, and for the wider checks on the distribution, see what to verify before adopting LocalGov Drupal.
Before you change Drupal SEO settings on term pages
- Run the ten-minute check and record the results per vocabulary.
- Agree with content owners which vocabularies deserve public pages, and write the decision down.
- Find the links to term pages you plan to switch off, then choose noindex or a Rabbit Hole response.
- Add descriptions to the terms you keep, then include their vocabularies in the sitemap.
- If a Drupal 11 upgrade is due, fold the review into it. Our piece on Drupal 10 end of life sets out the timing.
Frequently asked questions
Is crawl budget a reason to clean up taxonomy term pages?
Crawl budget is a reason for large sites: Google's crawl budget guide is written for sites with over a million unique pages that change about weekly, or over 10,000 pages that change daily. Below those sizes, tidy term pages for what appears in search. The same guide advises sites to "Eliminate duplicate content to focus crawling on unique content rather than unique URLs."
Should page two of a term listing use page one as its canonical?
No. Google's pagination guidance says "Don't use the first page of a paginated sequence as the canonical page" and asks for a unique URL per page. It also says Google no longer uses rel next and prev tags, and that the same titles and descriptions across a sequence are acceptable.
Can robots.txt keep term pages out of Google?
Google advises against robots.txt for this. Its noindex guidance says a page "must not be blocked by a robots.txt file" for the noindex to be seen, and its canonical guidance says "Don't use the robots.txt file for canonicalization purposes." Use Metatag's noindex or a Rabbit Hole response instead.


