URL: /rules/content/thin-vs-site-norm

---
title: "Thin Content vs Site Norm"
description: "Finds pages far shorter than the site's own norm for their page type"
---

Finds pages far shorter than the site's own norm for their page type

| | |
|---|---|
| **Rule ID** | `content/thin-vs-site-norm` |
| **Category** | [Content](/rules/content) |
| **Scope** | Site-wide |
| **Severity** | warning |
| **Weight** | 3/10 |

## How it works

There is no universal "enough words" number, so this rule never uses one. It groups
the crawled pages by page type (article, product, category, docs, and so on),
computes the median and MAD (median absolute deviation) of the word count within
each group, and flags only the pages that sit far below their own group.

A 200-word product page on a site whose products all run to 200 words is normal. A
200-word article on a site whose articles median 1,800 words is not, and that is the
only case this rule reports.

It stays quiet unless it has grounds to speak:

- Fewer than 10 crawled pages: no site norm exists, so the rule is skipped.
- Fewer than 8 pages of a given page type: that type is dropped, not guessed at.
- A page type whose word counts do not cluster (under 70% of its pages within 50%
  of the median): the type is legitimately varied, so nothing in it is a deviant.
- Pages under 300 words: those belong to [Word Count](/rules/content/word-count),
  which stays absolute-only. The two rules never both flag the same page.

A flagged page must be both under half its group's median and more than three
robust deviations below it, so template-uniform pages with small natural variation
are never reported.

## Solution

These pages are much shorter than the other pages of the same type on your own site,
which is a stronger thin-content signal than any absolute word count: your articles
set the expectation for what an article on this site looks like. Either expand each
page to the depth its siblings have, consolidate it into a fuller page, or noindex it
if it exists only for navigation. If a page is deliberately short (a stub, a redirect
landing page), that is fine: the point is that it does not match what the rest of its
page type promises.

## Enable / Disable

### Disable this rule

```toml squirrel.toml
[rules]
disable = ["content/thin-vs-site-norm"]
```

### Disable all Content rules

```toml squirrel.toml
[rules]
disable = ["content/*"]
```

### Enable only this rule

```toml squirrel.toml
[rules]
enable = ["content/thin-vs-site-norm"]
disable = ["*"]
```
