Debug Indexing Issues in Google Search Console · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

Learn SEO

Master search optimization

Nuxt

 Vue

[SEO Checklist](https://nuxtseo.com/learn-seo/checklist) [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup) [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

[Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)

- [Titles](https://nuxtseo.com/learn-seo/vue/mastering-meta/titles)
- [Meta Description](https://nuxtseo.com/learn-seo/vue/mastering-meta/descriptions)
- [Social Sharing](https://nuxtseo.com/learn-seo/vue/mastering-meta/social-sharing)
- [Schema.org](https://nuxtseo.com/learn-seo/vue/mastering-meta/schema-org)
- [Migrating vue-meta](https://nuxtseo.com/learn-seo/vue/mastering-meta/migrating-vue-meta)
- [Rich Results](https://nuxtseo.com/learn-seo/vue/mastering-meta/rich-results)
- [Image Alt Text](https://nuxtseo.com/learn-seo/vue/mastering-meta/alt-text)

[ Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)

- [Robots.txt](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/robots-txt)
- [Sitemaps](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/sitemaps)
- [Robot Meta Tag](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/meta-tags)
- [Canonical Link Tag](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/canonical-urls)
- [HTTP Redirects](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/redirects)
- [Duplicate Content](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/duplicate-content)
- [llms.txt](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/llms-txt)

[ SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)

- [Prerendering](https://nuxtseo.com/learn-seo/vue/spa/prerendering)
- [Dynamic Rendering](https://nuxtseo.com/learn-seo/vue/spa/dynamic-rendering)
- [Hydration & SEO](https://nuxtseo.com/learn-seo/vue/spa/hydration)

[ Routes & Rendering](https://nuxtseo.com/learn-seo/vue/routes-and-rendering)

- [URL Structure](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/url-structure)
- [Pagination](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/pagination)
- [Trailing Slashes](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/trailing-slashes)
- [Query Parameters](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/query-parameters)
- [Hreflang & i18n](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/i18n)
- [404 Pages](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/404-pages)
- [Dynamic Routes](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/dynamic-routes)
- [Internal Linking](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/internal-linking)
- [Rendering Modes](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/rendering)
- [Programmatic SEO](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/programmatic-seo)
- [Security](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/security)

[ SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)

- [Nuxt vs Quasar](https://nuxtseo.com/learn-seo/vue/ssr-frameworks/nuxt-vs-quasar)
- [Custom Vite SSR](https://nuxtseo.com/learn-seo/vue/ssr-frameworks/vite-ssr)
- [VitePress SEO](https://nuxtseo.com/learn-seo/vue/ssr-frameworks/vitepress)

[ Launch & Listen](https://nuxtseo.com/learn-seo/vue/launch-and-listen)

- [Getting Indexed](https://nuxtseo.com/learn-seo/vue/launch-and-listen/going-live)
- [Google Search Console](https://nuxtseo.com/learn-seo/vue/launch-and-listen/search-console)
- [Core Web Vitals](https://nuxtseo.com/learn-seo/vue/launch-and-listen/core-web-vitals)
- [Indexing Issues](https://nuxtseo.com/learn-seo/vue/launch-and-listen/indexing-issues)
- [SEO Monitoring](https://nuxtseo.com/learn-seo/vue/launch-and-listen/seo-monitoring)
- [Site Migration](https://nuxtseo.com/learn-seo/vue/launch-and-listen/site-migration)
- [IndexNow](https://nuxtseo.com/learn-seo/vue/launch-and-listen/indexnow)
- [Debugging](https://nuxtseo.com/learn-seo/vue/launch-and-listen/debugging)
- [AI Search Optimization](https://nuxtseo.com/learn-seo/vue/launch-and-listen/ai-optimized-content)

1. [Learn SEO for Vue](https://nuxtseo.com/learn-seo)
2.
3. [Launch And Listen](https://nuxtseo.com/learn-seo/vue/launch-and-listen)
4.
5. [Indexing Issues](https://nuxtseo.com/learn-seo/vue/launch-and-listen/indexing-issues)

# Debug Indexing Issues in Google Search Console

Fix "crawled currently not indexed" and other GSC coverage errors affecting your Vue site.

[![Harlan Wilton](https://avatars.githubusercontent.com/u/5326365?v=4)Harlan Wilton](https://x.com/harlan-zw)10 mins read Published Dec 17, 2025 Updated Jan 29, 2026

What you'll learn

- "Crawled - currently not indexed" usually means low quality, duplicate, or thin content
- SPAs need SSR or prerendering for reliable indexing. Google may not execute JavaScript properly
- Internal links signal importance. orphan pages rarely get indexed

Google crawled your page but won't index it. This happens to [millions of pages daily](https://www.onely.com/blog/how-to-fix-crawled-currently-not-indexed-in-google-search-console/). The Page Indexing report in Google Search Console shows exactly which pages have issues and why.

## [Understanding Page Indexing Status](#understanding-page-indexing-status)

Google Search Console's Page Indexing report shows six main statuses:

![Page Indexing Status Flowchart](https://nuxtseo.com/images/learn-seo/vue/indexing-status-flowchart.svg)

### [Good Statuses](#good-statuses)

**Indexed**: Page appears in Google's search index. This is what you want.

### [Warning Statuses](#warning-statuses)

**Discovered - currently not indexed**: Google found your page but hasn't crawled it yet. The page sits in Google's queue. This is normal for new sites and low-priority pages.

**Crawled - currently not indexed**: Google crawled your page but chose not to index it. This means Google decided your content isn't worth showing in search results.

### [Excluded Statuses](#excluded-statuses)

**Excluded by [robots.txt](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/robots-txt)**: Your robots.txt file blocks Google from accessing the page. Check your robots.txt configuration.

**Blocked by [noindex tag](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/meta-tags)**: Page has a `noindex` meta tag or HTTP header. Remove it if you want the page indexed.

**Duplicate without canonical**: Google found multiple identical pages without proper [canonical tags](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/canonical-urls). Set canonical URLs.

**Soft 404**: Page returns a 200 status code but looks like a 404 error to Google. Fix by returning proper 404 status codes for missing content.

## [Fixing "Crawled - Currently Not Indexed"](#fixing-crawled-currently-not-indexed)

This status means Google crawled your page but decided it wasn't worth indexing. [Google doesn't explicitly state why](https://support.google.com/webmasters/answer/7440203), but five main causes exist.

### [Thin or Low-Quality Content](#thin-or-low-quality-content)

Google skips pages with little unique value. Product pages with only titles and prices, blog posts under 300 words, and auto-generated content typically get excluded.

Fix: Add substantial content. Write detailed product descriptions, expand short blog posts to 800+ words, include images and videos, answer user questions comprehensively.

### [Duplicate Content](#duplicate-content)

Multiple pages with identical or near-identical content waste Google's crawl budget. See the [Duplicate Content guide](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/duplicate-content) for a full detection and resolution workflow. Common culprits: paginated URLs without proper canonicals, URL parameters creating duplicate versions, tag/category archives with the same posts.

Fix: Implement [canonical tags](https://nuxtseo.com/learn-seo/vue/controlling-crawlers/canonical-urls) pointing to the primary version. Consolidate similar pages. Use `rel="canonical"` in your Vue head:

```
<script setup lang="ts">
import { useHead } from '@unhead/vue'

useHead({
  link: [
    { rel: 'canonical', href: 'https://yoursite.com/primary-page' }
  ]
})
</script>
```

### [Too Many Similar Pages](#too-many-similar-pages)

Sites with thousands of nearly-identical pages (e.g., faceted search, filter combinations) trigger quality filters. Google picks representative pages and excludes the rest.

Fix: Use meta robots `noindex` on filter pages, parameter-based URLs, and search result pages. Consolidate similar content into fewer complete pages.

```
<script setup lang="ts">
import { useHead } from '@unhead/vue'
import { useRoute } from 'vue-router'

const route = useRoute()

// Noindex pages with filter parameters
const shouldNoIndex = computed(() =>
  route.query.color || route.query.size || route.query.sort
)

useHead({
  meta: [
    { name: 'robots', content: shouldNoIndex.value ? 'noindex,follow' : 'index,follow' }
  ]
})
</script>
```

### [Low Site Authority](#low-site-authority)

New sites with few backlinks face stricter indexing thresholds. [Google prioritizes crawling trusted sites](https://www.onely.com/blog/how-to-fix-crawled-currently-not-indexed-in-google-search-console/).

Fix: Build backlinks through guest posting, create linkable assets (tools, research, guides), get listed in industry directories, promote content on social media. This takes months. be patient.

### [Orphan Pages](#orphan-pages)

Pages without internal links from other pages on your site signal low importance to Google. [Orphan pages lack link equity](https://mangools.com/blog/orphan-pages/) and often don't get indexed.

Fix: Add internal links from relevant pages. Include new pages in your main navigation or sidebar. Link from high-authority pages on your site. For strategies on connecting your pages and reducing crawl depth, see the [Internal Linking](https://nuxtseo.com/learn-seo/vue/routes-and-rendering/internal-linking) guide.

```
<!-- Link to important pages from your main layout -->
<template>
  <nav>
    <NuxtLink to="/important-page">
      Important Page
    </NuxtLink>
  </nav>
</template>
```

## [Fixing "Discovered - Currently Not Indexed"](#fixing-discovered-currently-not-indexed)

This status means Google knows your page exists but hasn't crawled it. [Three main causes exist](https://www.onely.com/blog/how-to-fix-discovered-currently-not-indexed-in-google-search-console/).

### [Site Too New](#site-too-new)

Google takes weeks to crawl new sites. For brand-new domains, expect 2-4 weeks before regular crawling starts.

Fix: Wait. Submit your sitemap. Request indexing for critical pages via URL Inspection tool. Keep publishing content regularly.

### [Crawl Budget Issues](#crawl-budget-issues)

Large sites (10,000+ pages) run into Google's crawl budget limits. Google won't crawl everything if your site has [slow server responses, too many low-quality pages, or complex URL structures](https://support.google.com/webmasters/community-guide/278777978).

Fix: Optimize server response times (target under 200ms). Remove or noindex low-value pages. Fix redirect chains. Reduce duplicate content. Block unnecessary URLs in robots.txt:

```
# robots.txt
User-agent: *
# Allow important pages
Allow: /

# Block low-value sections
Disallow: /admin/
Disallow: /search?
Disallow: /*?filter=
Disallow: /print-version/
```

### [Slow Server Response](#slow-server-response)

If your server takes over 500ms to respond, [Google may crawl fewer pages](https://developers.google.com/search/docs/crawling-indexing/large-site-managing-crawl-budget).

Fix: Enable caching, use a CDN, optimize database queries, upgrade hosting. Monitor server response times in Search Console's Crawl Stats report.

### [Pages Only in Sitemap](#pages-only-in-sitemap)

If pages exist only in your sitemap without internal links, Google considers them low priority.

Fix: Add internal links. Don't rely solely on sitemaps for discovery. [Internal linking signals importance](https://seotesting.com/google-search-console/discovered-currently-not-indexed/).

### [AI Overviews Impact](#ai-overviews-impact)

With the rise of AI Overviews in 2026, Google has become more selective. It prioritizes pages that can feed its AI summaries - high-quality, authoritative, and structured content. If your page is "Discovered" but ignored, it might lack the [E-E-A-T signals](https://developers.google.com/search/docs/fundamentals/creators-evaluate-content) needed for AI citation.

## [Vue SPA-Specific Issues](#vue-spa-specific-issues)

Single Page Applications create unique indexing challenges because content loads after the initial HTML renders.

![SPA Rendering Timeline](https://nuxtseo.com/images/learn-seo/vue/spa-rendering-timeline.svg)

### [JavaScript Rendering Problems](#javascript-rendering-problems)

Google crawls your initial HTML first, then renders JavaScript in a second wave (days later). If critical content only appears after JavaScript execution, it may not get indexed immediately.

Test: View your page source (not DevTools). Right-click → View Page Source. If your content isn't visible in the raw HTML, Google's first crawl won't see it.

```
# Check if content is in initial HTML
curl -s https://yoursite.com/page | grep "expected content"
```

Fix: Use Server-Side Rendering (SSR) or Static Site Generation (SSG). For Vue SPAs without SSR, consider [prerendering critical pages](https://prerender.io/blog/how-to-avoid-discovered-currently-not-indexed/).

### [Content Loaded After Initial Render](#content-loaded-after-initial-render)

Vue apps often fetch data after mounting. Google may not wait for all async operations to complete.

```
<!-- PROBLEM: Content loads after mount -->
<script setup lang="ts">
import { onMounted, ref } from 'vue'

const products = ref([])

onMounted(() => {
  (async () => {
    // Google's crawler might not wait for this
    products.value = await fetch('/api/products').then(r => r.json())
  })()
})
</script>

<template>
  <div v-for="product in products" :key="product.id">
    {{ product.name }}
  </div>
</template>
```

Fix: Render content during SSR or prerender pages at build time:

```
<!-- SOLUTION: Fetch data before render -->
<script setup lang="ts">
import { ref } from 'vue'

// Data available immediately
const products = ref(await fetch('/api/products').then(r => r.json()))
</script>

<template>
  <div v-for="product in products" :key="product.id">
    {{ product.name }}
  </div>
</template>
```

For client-only apps, show loading states with descriptive text that Google can index:

```
<template>
  <div>
    <h1>Product Catalog</h1>
    <p v-if="loading">
      Loading 500+ products from our catalog...
    </p>
    <div v-for="product in products" v-else :key="product.id">
      {{ product.name }}
    </div>
  </div>
</template>
```

### [Client-Side Routing Issues](#client-side-routing-issues)

Vue Router changes URLs without full page reloads. If your router isn't configured correctly, Google may not discover all routes.

Fix: Generate a complete sitemap listing all routes. Don't rely on Google following JavaScript-generated links:

```
// generate-sitemap.ts
import { routes } from './router'

const sitemap = routes.map(route => ({
  url: \`https://yoursite.com${route.path}\`,
  lastmod: new Date().toISOString()
}))

// Write to public/sitemap.xml
```

### [Testing JavaScript Rendering](#testing-javascript-rendering)

Use Google Search Console's URL Inspection tool to see exactly what Google renders:

1. Open Search Console → URL Inspection
2. Enter your page URL
3. Click "Test Live URL"
4. Click "View Tested Page" → "Screenshot"

Compare the screenshot to your actual page. If content is missing, Google isn't rendering it properly.

## [Requesting Re-Indexing](#requesting-re-indexing)

After fixing issues, request re-indexing via URL Inspection:

1. Search Console → URL Inspection
2. Enter fixed URL
3. Click "Request Indexing"

Google prioritizes these requests but doesn't guarantee indexing. [It still evaluates content quality](https://support.google.com/webmasters/answer/7440203).

For many URLs, request indexing programmatically using the [Google Indexing API](https://developers.google.com/search/apis/indexing-api/v3/quickstart):

```
// Request indexing via API
import { google } from 'googleapis'

async function requestIndexing(url: string) {
  const auth = await google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/indexing']
  })

  const indexing = google.indexing({ version: 'v3', auth })

  await indexing.urlNotifications.publish({
    requestBody: {
      url,
      type: 'URL_UPDATED'
    }
  })
}
```

## [Monitoring Progress](#monitoring-progress)

Track indexing status changes over time:

1. Search Console → Page Indexing
2. Check "Not indexed" count weekly
3. Look for status changes from "Crawled - not indexed" to "Indexed"

Expect changes to take 1-4 weeks. [Google doesn't index on demand](https://www.onely.com/blog/how-to-fix-crawled-currently-not-indexed-in-google-search-console/). it re-evaluates pages on its schedule.

## [Using Nuxt?](#using-nuxt)

Nuxt handles SSR and prerendering automatically, avoiding most SPA indexing issues. See [Nuxt indexing guide](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen) for framework-specific solutions.

[The 2026 SEO Checklist for Nuxt & Vue Pre-launch setup, post-launch verification, and ongoing monitoring. Interactive checklist with links to every guide.](https://nuxtseo.com/learn-seo/checklist)

---

[Core Web Vitals Measure and optimize LCP, INP, and CLS in Vue apps to improve user experience and search rankings.](https://nuxtseo.com/learn-seo/vue/launch-and-listen/core-web-vitals) [SEO Monitoring Set up analytics, rank tracking, and alerts to monitor your Vue site's search performance.](https://nuxtseo.com/learn-seo/vue/launch-and-listen/seo-monitoring)

On this page

- [Understanding Page Indexing Status](#understanding-page-indexing-status)
- [Fixing "Crawled - Currently Not Indexed"](#fixing-crawled-currently-not-indexed)
- [Fixing "Discovered - Currently Not Indexed"](#fixing-discovered-currently-not-indexed)
- [Vue SPA-Specific Issues](#vue-spa-specific-issues)
- [Requesting Re-Indexing](#requesting-re-indexing)
- [Monitoring Progress](#monitoring-progress)
- [Using Nuxt?](#using-nuxt)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)