Rules Configuration
Enable and disable audit rules with pattern matching
The [rules] section controls which audit rules run during analysis.
Configuration
[rules]
enable = ["*"]
disable = ["images/modern-format", "links/orphan-pages"]Options
enable
Type: string[]
Default: ["*"] (all rules)
Patterns of rules to enable. Supports wildcards and specific rule IDs.
Pattern Syntax:
*- All rulescategory/*- All rules in a categorycategory/rule-name- Specific rule
Examples:
Enable all rules (default):
[rules]
enable = ["*"]Enable specific categories:
[rules]
enable = ["core/*", "links/*", "images/*"]Enable specific rules:
[rules]
enable = ["core/meta-title", "core/meta-description", "links/broken-links"]disable
Type: string[]
Default: [] (nothing disabled)
Patterns of rules to disable. Takes precedence over enable.
If a rule matches both enable and disable, it’s disabled.
Examples:
Disable the agent experience rules (ax/*; the older ai/* code matches the same rules):
[rules]
disable = ["ax/*"]Disable a whole category:
[rules]
disable = ["perf/*"]Disable specific rules:
[rules]
disable = ["content/word-count", "images/modern-format"]time_budget_ms
Type: integer (milliseconds: 0, or 1000 or more)
Default: unset (2000 ms)
How long one rule may run on one page before it is abandoned and reported as not evaluated on that page (a skipped check, never a failure). A site rule gets this much per page of the site, capped at 60 seconds, or at the budget itself if you set it above that. 0 turns the budget off. A value below 1000 is refused for now: a rule that finishes just past a tight budget can stop the audit (#880).
The budget is a backstop against content built to make a pattern match very slowly, not a performance setting: ordinary pages take a few milliseconds per rule. Raise it if rules time out on ordinary pages on a slow or busy machine. See Rule time budget for what a timed-out rule reports.
[rules]
time_budget_ms = 3000Rule categories
squirrelscan runs 300+ rules across 22 categories. Each category’s page lists its rules and what each one checks; the rules reference has the per-category counts.
| Category | Pattern | What it covers |
|---|---|---|
| Crawlability | crawl/* | Robots.txt, sitemaps, and crawl directives |
| Core SEO | core/* | Essential meta tags and page structure for search engines |
| Security | security/* | Transport security, headers, cookies, forms and leaked secrets |
| Site Integrity | integrity/* | Signs of compromise: injected pages, phishing kits, malware, SEO spam |
| Links | links/* | Internal and external link health and structure |
| Content | content/* | Text quality, readability, and content structure |
| Structured Data | schema/* | Structured data and rich snippet eligibility |
| Images | images/* | Image optimization and accessibility |
| Performance | perf/* | Page speed and loading performance |
| Reliability | reliability/* | Runtime errors, broken resources and failed requests |
| Social Media | social/* | Open Graph and social sharing metadata |
| Accessibility | a11y/* | Accessible names, ARIA, forms, structure, tables, language and zoom |
| Mobile | mobile/* | Mobile-friendliness and responsive design |
| URL Structure | url/* | URL structure, length, and formatting |
| Internationalization | i18n/* | Language declarations and multi-region support |
| E-E-A-T | eeat/* | Experience, expertise, authority, trust signals |
| Legal Compliance | legal/* | Privacy policy and legal compliance signals |
| Local SEO | local/* | Local business schema and NAP consistency |
| Video | video/* | Video content markup and accessibility |
| Analytics | analytics/* | Tracking and measurement implementation |
| Agent Experience | ax/* | How ready a site is for AI agents to read, discover, and operate on it |
| Blocking | blocking/* | Content, links, and trackers that ad blockers and privacy filters block |
Use the pattern in enable or disable to switch a whole category on or off. Two categories also answer to an older code: ai/* matches the Agent Experience rules (some of their ids still start with ai/), and adblock/* matches the Blocking rules. A pattern with either code matches the whole category.
Most Agent Experience rules run on your machine on every audit, with no API key. Five read results from squirrelscan’s cloud (ai/site-metadata, ai/page-type-match, ai/llm-parsability, ax/archive-indexing and ax/content-without-js), so they need a signed-in audit whose level includes those cloud checks, and are skipped otherwise. ax/content-without-js also needs the plain crawl HTML of the page to compare with its cloud render, so it is skipped on pages the crawl itself rendered.
Keyword and content gap analysis (gaps/*) is an opt-in cloud add-on, not one of the 22: see Keyword and content gaps.
Configuration examples
SEO-focused audit
Focus on SEO rules only:
[rules]
enable = ["core/*", "content/*", "crawl/*", "url/*", "schema/*"]
disable = []Accessibility audit
Focus on accessibility and mobile:
[rules]
enable = ["a11y/*", "mobile/*"]
disable = []Performance audit
Focus on performance and images:
[rules]
enable = ["perf/*", "images/*"]
disable = []Security audit
Focus on security headers and HTTPS:
[rules]
enable = ["security/*"]
disable = []All rules except agent experience
Enable everything except the agent experience rules:
[rules]
enable = ["*"]
disable = ["ax/*"]Fast audit (core only)
Quick audit with just essential checks:
[rules]
enable = ["core/*"]
disable = []Disable slow rules
Exclude computationally expensive rules:
[rules]
enable = ["*"]
disable = ["ax/*", "perf/cls-hints"]CI/CD pipeline
Strict subset for automated checks:
[rules]
enable = ["core/*", "security/*", "links/broken-links"]
disable = []Pattern matching
Wildcards
A * is only supported as the whole pattern (*) or as the whole rule name (category/*). A partial wildcard such as core/og-* matches no rule, so list the rules instead:
[rules]
enable = ["core/*", "social/*"] # All core and social rules
disable = ["core/og-tags", "social/og-image-size", "social/og-url-match"] # Except the Open Graph onesRetired rules
content/quality and ai/ai-content are retired: they never load, whatever enable says, so a disable entry for either one does nothing and can be removed.
Multiple patterns
[rules]
enable = ["core/*", "links/*", "images/*"]
disable = ["images/modern-format", "links/orphan-pages"]Disable takes precedence
[rules]
enable = ["*"] # Enable all
disable = ["ax/*"] # But disable agent experience (wins)Result: all rules except the agent experience category.
Rule weights
Each rule has a weight (1-10) reflecting its importance:
| Weight | Importance | Example Rules |
|---|---|---|
| 10 | Critical | core/meta-title, crawl/robots-txt |
| 8 | High | core/canonical, links/broken-links |
| 6 | Medium | images/alt-text, content/word-count |
| 4 | Low | url/hyphens, social/share-buttons |
| 2 | Info | analytics/gtm-present |
Weights affect the health score calculation.
Related
- Rule Options - Per-rule configuration
- Rules Reference - All audit rules
- Configuration Examples - Common patterns