All rules
optional
Rule: content-lengthWeight: 5/100

Rule: content-length

Thin content pages provide little value to users and rank poorly. Google's Helpful Content system specifically penalizes sites with many low-quality pages. This rule checks that your pages have enough text content to be meaningful — not just a heading and a button. The threshold is generous: 300 words is a low bar for any page that wants to rank.

Run the check
$ npx indxel check
Look for content-length in the output

What it checks

In crawl mode, Indxel fetches the page and extracts visible text content (stripping HTML tags, scripts, and styles). It counts the words by splitting on whitespace. The word count excludes navigation, footer, and boilerplate text if they can be identified by semantic HTML (nav, footer elements). In static scan mode, word count is estimated from the page component's content.

Thresholds

PASS

300 or more words

PASS

200-299 words (passes but close to thin)

WARN

50-199 words — thin content, consider adding substance

ERROR

Less than 50 words — extremely thin, likely a placeholder or error page

Edge cases

1

Application pages (dashboards, settings) are legitimately low on text. Consider disabling this rule for non-public pages or adding noindex.

2

Image galleries, video pages, and tool pages may have little text but are still valuable. Disable this rule for those routes or add descriptive text around the media.

3

Lazy-loaded content that requires JavaScript: in crawl mode, Indxel fetches the initial HTML. Content loaded via client-side JavaScript after page load is not counted. Server-render important content.

4

Nav and footer text: Indxel attempts to exclude <nav> and <footer> content from the word count, but this depends on semantic HTML usage. If your navigation is in a <div>, it gets counted.

5

Boilerplate shared across pages (e.g., CTA sections in a layout) is counted on every page. This can artificially inflate the word count.

Configuration

indxel.config.ts
// indxel.config.ts
import { defineSEO } from "indxel";

export default defineSEO({
  rules: {
    "content-length": true, // enabled by default
  },
});

// Disable for specific routes that are intentionally minimal:
// e.g., tool pages, app pages, or login pages
export default defineSEO({
  disabledRules: ["content-length"],
  // or handle per-page via the SDK validateMetadata() options
});

Frequently asked questions

Why is 300 words the pass threshold and not 500 or 1000?

300 words is a practical minimum for a page that provides value. Not every page needs to be a long-form article. Landing pages, pricing pages, and tool pages can be valuable at 300-500 words. Blog posts and documentation should aim higher (800+).

Does word count directly affect rankings?

Word count is not a direct ranking factor. But thin content is a negative quality signal. Google's Helpful Content update evaluates content quality at the site level — a site with many thin pages hurts all pages. The rule protects against accumulating thin pages.

How does Indxel count words in a SPA?

In crawl mode, Indxel fetches the HTML response and counts visible text. Content that requires JavaScript execution to render is not counted. Use SSR or server components for content that should be indexed and measured.

Related rules

h1-present

critical — 8/100

description-present

critical — 5/100

robots-not-blocking

optional — 5/100

Validate your SEO now

$npx indxel check
Get startedBrowse all rules
Indxel

SEO validation that runs in your terminal and blocks bad deploys.

GitHubnpm

Product

  • Documentation
  • Pricing
  • Plus Plan
  • CI/CD Guard
  • Indexation
  • Free Tools
  • Blog

Comparisons

  • vs Semrush
  • vs Ahrefs
  • vs Moz
  • vs Screaming Frog
  • All comparisons

Integrations

  • Vercel
  • GitHub Actions
  • Netlify
  • Docker
  • All integrations

Resources

  • Frameworks & use cases
  • Next.js
  • For freelancers
  • For agencies
  • SEO Glossary

Built with care. MIT Licensed.

PrivacyTermsLegalContact