Config File Location
squirrelscan looks forsquirrel.toml starting from your current directory and walking up to your home directory. This means you can:
- Place a config in your project root for project-specific settings
- Place a config in
~for global defaults
Zero-Config Mode
If no config file exists, squirrelscan uses defaults that work well for most sites:- Crawls up to 50 pages
- 100ms delay between requests
- Respects robots.txt
- Checks external links for broken URLs (cached for 7 days)
- Runs all rules except AI-powered ones
Config Reference
project
Project-level settings for multi-domain support.| Key | Type | Default | Description |
|---|---|---|---|
domains | string[] | [] | Allowed domains for crawling. Supports subdomain wildcards - ["example.com"] allows www.example.com, api.example.com, etc. When empty, only the seed URL’s host is crawled. |
crawler
Controls how squirrelscan discovers and fetches pages.| Key | Type | Default | Description |
|---|---|---|---|
max_pages | number | 50 | Maximum pages to crawl per audit |
delay_ms | number | 100 | Base delay between requests (ms) |
timeout_ms | number | 30000 | Request timeout (ms) |
user_agent | string | "" | User agent (empty = random browser UA per crawl) |
follow_redirects | boolean | true | Follow HTTP 3xx redirects |
concurrency | number | 5 | Maximum concurrent requests globally |
per_host_concurrency | number | 2 | Maximum concurrent requests per host |
per_host_delay_ms | number | 200 | Minimum delay between requests to the same host |
include | string[] | [] | URL patterns to include. If set, overrides domains |
exclude | string[] | [] | URL patterns to exclude from crawling |
allow_query_params | string[] | [] | Query parameters to preserve (others may be stripped for deduplication) |
drop_query_prefixes | string[] | ["utm_", "gclid", "fbclid"] | Query param prefixes to strip (tracking params) |
respect_robots | boolean | true | Obey robots.txt rules and crawl-delay |
rules
Configure which SEO rules run during analysis.| Key | Type | Default | Description |
|---|---|---|---|
enable | string[] | ["*"] | Patterns of rules to enable. Supports wildcards: *, seo/*, core/meta-title |
disable | string[] | ["ai/ai-content", "ai/llm-parsability", "content/quality"] | Patterns of rules to disable. Takes precedence over enable |
domain/rule-name. Common domains:
seo/*- Meta tags, canonical, robotscontent/*- Word count, headings, thin contentlinks/*- Broken links, redirectsimages/*- Alt text, dimensionsschema/*- JSON-LD validationsecurity/*- HTTPS, CSP, HSTSperformance/*- Core Web Vitals hintsai/*- LLM-powered analysis (disabled by default)
external_links
Configure external link checking during audits.| Key | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable checking external links for broken URLs (4xx/5xx) |
cache_ttl_days | number | 7 | How long to cache external link check results (in days). Results are shared across all site audits. |
timeout_ms | number | 10000 | Timeout for each external link check (ms) |
concurrency | number | 5 | Maximum concurrent external link checks |
~/.squirrel/link-cache.db to avoid re-checking the same URLs across different site audits. This dramatically speeds up subsequent audits.
output
Default output settings for reports.| Key | Type | Default | Description |
|---|---|---|---|
format | "console" | "json" | "html" | "console" | Default output format |
path | string | - | Default output file path |
rule_options
Per-rule configuration for rules that accept options.Examples
High-Volume Crawl
For large sites, increase limits and be polite:Multi-Domain Project
Audit a main site plus its API docs and blog:example.com, www.example.com, docs.example.com, blog.example.com, etc.