Validate .browserslistrc files and browserslist entries in package.json for syntax errors, deprecated browsers, redundant queries, and best practices.
bash
# Full validation (all rules)
python3 scripts/browserslist_validator.py validate .browserslistrc
# Validate browserslist in package.json
python3 scripts/browserslist_validator.py validate package.json
# Quick syntax-only check
python3 scripts/browserslist_validator.py check .browserslistrc
# Estimate coverage
python3 scripts/browserslist_validator.py coverage .browserslistrc
# Explain each query in human-readable form
python3 scripts/browserslist_validator.py explain .browserslistrc
# JSON output
python3 scripts/browserslist_validator.py validate .browserslistrc --format json
# One-line PASS/WARN/FAIL summary
python3 scripts/browserslist_validator.py validate .browserslistrc --format summary
# Strict mode (warnings become errors)
python3 scripts/browserslist_validator.py validate .browserslistrc --strict
# Target environment
python3 scripts/browserslist_validator.py validate .browserslistrc --env production
#CategorySeverityRuleS1SyntaxEFile not found or unreadableS2SyntaxEEmpty config (no queries)S3SyntaxEInvalid query syntax / unknown browser nameS4SyntaxWDuplicate queriesB1BrowsersWDead/deprecated browser (IE, Blackberry, etc.)B2BrowsersWBrowser with <0.01% global usageB3BrowsersEBrowser version does not exist (e.g. Chrome 999)B4BrowsersEUnknown browser nameQ1QueriesWRedundant query (covered by broader query)Q2QueriesWConflicting queries (e.g. > 1% and < 0.5%)Q3QueriesEnot dead without any positive queryQ4QueriesWEmpty result after not negationC1CoverageWVery low total coverage (<80%)C2CoverageWVery high coverage (>99.5%, may include dead browsers)C3CoverageINo mobile browser coverage hintC4CoverageINo country-specific override detectedP1Best PracticesWIE queries present (recommend dropping IE)P2Best PracticesWUnreasonably old versions ( last 20 versions)P3Best PracticesWall query used (too broad)P4Best PracticesWVersion pinning instead of range ( Chrome 90)
[E]/ [W]/ [I] severity prefixPASS / WARN / FAIL0 — No errors1 — Errors found (or warnings in --strict mode)2 — File not found or parse error