squirrelscan
GitHub

Thin content: the 300 word floor and what to do below it

A page under a few hundred words rarely answers the question it ranks for. squirrel counts the words and reports against two thresholds.

What thin content is

Thin content is a page with too little substance to be worth returning as a search result. Word count is a proxy for it rather than the thing itself: a 200-word page that answers a question completely is fine, and a 2000-word page that says nothing is not.

The count is still useful as a floor. Below a few hundred words a page usually is not answering anything, and a site with many of them dilutes its own crawl budget. Google’s guidance is about helpfulness rather than length, so treat the number as a prompt to look at the page.

What squirrel checks

The rule runs on every crawled page and reads the word count the parser computed. It emits a single check named word-count:

  • Warn below min_words, 300 by default. Message: Thin content: 140 words (min 300), with the count as the value and the threshold as the expected value. Severity warning, weight 4.
  • Info below warn_threshold, 500 by default. Message: Content could be longer: 420 words.
  • Pass otherwise. Message: Good content length: 1240 words.

The 300-word floor is also a precedence boundary. content/thin-vs-site-norm never reports a page below 300 words, so at the default min_words the two rules cannot both raise a finding on one page. That boundary is the fixed constant, not the configured option, so raising min_words above 300 opens a band where both can fire.

A page marked noindex (a <meta name="robots"> tag or an X-Robots-Tag header containing noindex) is never offered to a search engine, so thin content on it is not a finding: login, sign-up and dashboard pages are short by design. Such a page gets one skipped check, Skipped: page is set to noindex via robots meta tag (or via X-Robots-Tag header), instead of its usual result, and skipped checks do not count toward the score. Pages are skipped only on a site that is itself being indexed. When the homepage is noindex too (a staging site or preview deployment) nothing is skipped. See pages kept out of search. Contact and legal pages are not skipped yet: that needs a page type from a classifier model, which squirrel does not use to relax a verdict unless the label is model-sourced and confident.

How to fix it

Expand the page to answer the question it exists for, consolidate it into a fuller page and redirect, or noindex it if it exists only for navigation.

A category or listing page is short by design. Those are worth excluding rather than padding.

Rule IDcontent/word-count
CategoryContent
ScopePer-page
Severitywarning
Weight4/10

Options

OptionTypeDefaultDescription
min_wordsnumber300Minimum word count
warn_thresholdnumber500Word count for optimal content

Configuration example

[rule_options."content/word-count"]
min_words = 150
warn_threshold = 400

Enable / disable

Disable this rule

[rules]
disable = ["content/word-count"]

Disable all Content rules

[rules]
disable = ["content/*"]

Enable only this rule

[rules]
enable = ["content/word-count"]

enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.

Content findings ship in every audit next to the SEO, performance and agent experience rules. See Fix SEO issues with AI for how an agent works through a report.

References

Check your site

Run squirrel audit https://example.com and open the Content section of the report. Each page is reported with its word count. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.

Type to search…

↑↓ navigate↵ openesc close