Most URLs stuck in “Crawled - currently not indexed” fail on content depth. Google isn’t counting words (a 300-word standout can rank fine) — it’s judging “does this page provide any unique information beyond repeating the main keyword?”
“Depth” doesn’t mean “long.” It means information density: specific examples, exclusive data, firsthand observations, executable steps. Below are the markers and the fix.
Common causes
1. Topical page < 300 words / all generalities
Under 300 words is basically unrecoverable — unless it’s a definitional entry (like a dictionary). Common thin patterns:
- “Benefits of X” → 5 platitudes (boost productivity, save time, enhance experience…)
- “How to X” → all verbs no concrete steps (“use the tool”, “configure settings”)
- “What is Y” → paraphrased Wikipedia intro
How to confirm: Compare your article to the top 10 search results. If you’re under 30% of their word count AND don’t have unique info they lack — depth is missing.
2. No specific examples / numbers / screenshots
Google uses “specificity signals” to judge density. A 1500-word all-abstract article < a 600-word article with 3 screenshots + 2 code blocks + 1 table.
How to confirm:
curl -sL https://yourdomain.com/page | grep -cE '<(img|code|pre|table)'
# < 3 = too abstract
3. No firsthand / exclusive information
Google’s Helpful Content system specifically detects “second-hand information restatement”:
- Wikipedia / official docs rephrased
- Other blog posts paraphrased
- AI-generated content with no human fact-check
What’s needed: experiments you ran, your own screenshots, industry data you measured, your preferences with reasons.
4. Doesn’t answer the user’s adjacent questions
A user searching “Astro deploy Vercel” probably also wants to know:
- How to configure env vars?
- How to change the build command?
- How to enable preview deployments?
- How to bind a custom domain?
Only answering the title question = user bounces to find another page = Google deprioritizes.
5. Heavy AI generation with no editorial fingerprints
AI text patterns Google now detects:
- Paragraph structure too “uniform” (3 sentences each, topic-sentence-first)
- Vocabulary skewed formal, missing colloquial connectors
- No specific people, times, places
- Lists with no hierarchy (5 equal-length bullets)
Shortest path to fix
Step 1: Audit thin pages with a density script
// scripts/audit-depth.mjs
import fg from "fast-glob";
import fs from "node:fs";
import matter from "gray-matter";
const issues = [];
for (const f of fg.sync("src/content/**/*.{md,mdx}")) {
const { content } = matter(fs.readFileSync(f, "utf8"));
const text = content.replace(/```[\s\S]+?```/g, "").replace(/\!\[.*?\]\(.+?\)/g, "");
const words = text.split(/\s+/).filter(Boolean).length;
const images = (content.match(/!\[/g) || []).length;
const codeBlocks = (content.match(/```/g) || []).length / 2;
const tables = (content.match(/^\|/gm) || []).length;
const headings = (content.match(/^##+ /gm) || []).length;
const score = words + images * 100 + codeBlocks * 80 + tables * 50 + headings * 30;
if (words < 600) issues.push(`THIN (${words}w, score ${score}): ${f}`);
if (headings < 3) issues.push(`FLAT (${headings} sections): ${f}`);
if (images + codeBlocks + tables === 0) issues.push(`ABSTRACT (no img/code/table): ${f}`);
}
console.log(issues.join("\n"));
Output gives you a prioritized fix list.
Step 2: For each thin page, inject density
In this order:
- Add 1 real screenshot: your own tool, comparison, flow — beats stock photos 10×
- Add 1 table: comparison / pricing / timeline / steps — Google loves structured data
- Add 1 code / config / command block: showing beats telling
- Add 1 specific number: not “many,” not “several” — “127,” “2.3 seconds,” “$29/month”
- Add 1 first-person experience: “We tried X in March 2026 and got Y”
Each article should have at least 3 of these.
Step 3: Add adjacent-question sections
Open AnswerThePublic with your main keyword to surface real adjacent questions users search. Pick 3-5 and turn them into H2 sections.
Or use Google’s own “People also ask” block (search yourself in a SERP).
Step 4: First paragraph signals unique value
Bad:
This article will introduce in detail the complete process of deploying Astro to Vercel, hoping to help you.
Good:
I migrated my blog from Netlify to Vercel in May 2026. The whole thing took 17 minutes. This post documents those 17 minutes, including the two traps I hit (env var case sensitivity + wrong default build command) and how I dropped cold start from 800ms to 150ms.
The opening establishes: this page has specific, exclusive, usable information.
Step 5: Delete the thinnest 20%
Not every page is salvageable. After Steps 1-4, anything still thin gets one of:
- Merge into a pillar article → 301 redirect
- Outright 410 delete → remove from sitemap
- Add
noindexand park → revisit when you have time to deepen
Better than leaving a pile of thin pages dragging on site-wide authority.
Step 6: After 4 weeks, check “Crawled - not indexed” count
Re-check Search Console 4 weeks post-fix. Targets:
- ≥ 50% of fixed URLs entered the index
- Site-wide “Crawled - not indexed” count down by ≥ 20%
If no movement, the depth added is still too abstract — re-audit.
Prevention
- Outline before writing — 8+ H2 sections is healthy depth
- Hard 3-element rule per article: ≥1 screenshot + ≥1 table or code block + ≥1 specific number
- First paragraph must convey something exclusive — you did / used / measured it, not generalities
- Skip “What is X” intro-style pieces unless you can offer detail Wikipedia doesn’t
- AI drafts must be fact-checked + injected with firsthand experience before publishing
Related
Tags: #SEO #Google #Search Console #Indexing