Home›WordPress SEO audit›Thin archive pages

WordPress · Archive and attachment pages

Thin Archive and Attachment Pages in WordPress

WordPress creates tag, author, date and attachment pages automatically. Crawl the site to count them, noindex or redirect the thin ones, and confirm Google drops them from the index.

7 auto-generated URL types7 checks1 rule per archive type24 item checklist

WordPress · Tag, author, date and attachment URLs

WordPress builds pages you never wrote. Every tag, author, month and uploaded image gets its own URL, and most of them hold a list of one or two posts or a single image with no text. Google crawls them, indexes some, and spends crawl budget on them instead of your real content.

You can't stop core from generating these URLs, but you control what each one returns: an indexable page, a noindex page, a redirect or a 404. The work is deciding which, applying it, and proving it worked.

What can go wrong

These are the URL types WordPress generates on its own, and the problem each one usually causes.

URL typeExampleTypical problem
Tag archive/tag/seo-tips/Hundreds of tags, most with 1 or 2 posts
Author archive/author/admin/Duplicates the blog index on single-author sites, exposes the admin username
Date archive/2024/03/Duplicates category and blog listings
Attachment page/my-post/image-1/One image, no text, sometimes outranks the post
Uncategorized/category/uncategorized/Default category nobody meant to publish
Paginated archive/category/news/page/14/Deep pages with no unique value, but they link to older posts
Internal search/?s=keywordInfinite URLs if linked or spammed

Since WordPress 6.4, new installs disable attachment pages by default, but sites upgraded from older versions often still serve them.

What to check

For each archive type, you want four numbers: how many URLs exist, how many are indexable, how many posts each holds, and how many are in the sitemap.

URLsHow many exist per archive type
IndexableHow many return 200 without noindex
PostsHow many posts each archive holds
SitemapHow many are listed in the XML sitemap
CheckHealthy result
Archive URL count vs post countArchives are a small share of crawlable URLs
Posts per tag archiveIndexable tags hold 5 or more posts (pick your own threshold)
Meta robots on thin archivesnoindex present in the HTML, visible to a logged-out crawler
robots.txtThin archives are not disallowed, or Google can't see the noindex
SitemapNoindexed archives are excluded from the sitemap
Attachment URLs301 to the parent post or the file, not 200
Internal linksMain navigation doesn't link to noindexed archives

How to run the checks

  1. Crawl with archives included. Don't exclude /tag/, /author/ or date paths in SiteAud!tLint, so the audit can count them.
  2. Filter URLs by pattern. Group by /tag/, /author/, /category/, /YYYY/ and attachment slugs. Note the total and the indexable count for each.
  3. Sort by word count. Thin archives cluster at the bottom. Cross-check with Duplicate Content Checker, which flags archives that repeat the same post excerpts.
  4. Compare against the sitemap. Any noindexed archive still listed in the sitemap sends Google mixed signals.
  5. Check Search Console. Under Pages, filter indexed URLs by /tag/ or /author/ to see which thin archives Google actually kept.
  6. Save the audit as your baseline before changing anything.

How to identify the scope

Decide per archive type, not per URL. One rule for all tags is easier to maintain and verify than 300 individual decisions.

Keep indexedCategories, paginated pagesReal topic hubs and the crawl path to older posts.
Noindex, followTags, dates, searchThin listings that still pass link equity to posts.
301 redirectAttachmentsSend each one to the parent post.
Disable or redirectSingle-author archivesPoint to an About page, never the homepage.
Archive typeBest defaultException
CategoryKeep indexedNoindex Uncategorized, or rename it
TagNoindex, followKeep tags that work as real topic hubs
Author (single author)Disable or 301 to an About pageMulti-author sites with real bios: keep
DateNoindex or disableNews sites that rely on date browsing
Attachment301 to the parent postNone in most cases
Paginated /page/2/ and deeperLeave indexable, self-canonicalDon't noindex: it cuts crawl paths to older posts
Internal searchNoindex (WordPress core default)Never link to search results

How to apply the fix

With an SEO plugin (preferred): Yoast, Rank Math and AIOSEO all have per-taxonomy index toggles, author and date archive switches, and an attachment redirect setting. Use these instead of code, so only one layer writes robots tags.

Without a plugin: add this to your child theme's functions.php or a code snippets plugin, not header.php.

add_action( 'wp_head', function () {
    if ( is_author() || is_date() || is_tag() || is_attachment() ) {
        echo '<meta name="robots" content="noindex, follow">' . "\n";
    }
} );

It fixes the three bugs in the commonly shared forum version: it uses || instead of |, echo instead of _e(), and wp_head instead of header.php, which theme updates overwrite. It also leaves paginated pages indexable on purpose.

How to validate the fix

  1. Purge every cache, then recrawl with the same settings as the baseline.
  2. Compare in Audit Comparison: the thin archive URLs should now show noindex, or 301 for attachments.
  3. Check there's only one robots meta tag per page. A plugin plus custom code creates two conflicting tags.
  4. Confirm noindexed archives left the sitemap.
  5. Confirm posts and pages are still indexable. Filter the comparison for any post URL that changed index status: the count should be zero.
  6. In Search Console, watch the indexed count for /tag/ and /author/ fall over the next weeks. Removal happens on Google's crawl schedule.
1Robots meta tag per page
0Noindexed archives left in the sitemap
0Posts or pages that changed index status

Downloadable checklist

Tick items as you go, then download the list as CSV for a spreadsheet or ticket, or print it and save as PDF. Your ticks are included in the download.

Thin archive checklist0 of 24 checks done
Count the problem
Pick one rule per archive type
Apply the fix
Validate the fix

Common mistakes

  • Blocking archives in robots.txt as well. Google can't fetch the page, so it never sees the noindex and the URL stays indexed. Use one or the other, and noindex first.
  • Redirecting author archives to the homepage. Google often treats mass redirects to the homepage as soft 404s. Redirect to an About page, or disable the archive so it returns 404.
  • Noindexing /page/2/ and deeper. It removes the crawl path to older posts linked only from those pages.
  • Relying on Search Console removals. A removal request hides a URL for about six months. Without a noindex or redirect in place, it comes back.
  • Editing header.php in the parent theme. The next theme update wipes the change silently. Use a child theme, a snippets plugin, or your theme's hook feature.
  • Plugin settings plus custom code. Two robots tags on one page, sometimes contradicting each other.
  • Deleting tags without redirects. Tag URLs with backlinks start returning 404. Check Backlink Audit before merging or deleting tags.

The goal isn't zero archives

It's an index where every archive Google keeps is one a visitor would want to land on. Count them with a crawl, set one rule per archive type, and recrawl to prove the rule took effect.