seo-checker-pro
seo-checker-pro
seo-checker-pro is a professional, production-ready website SEO auditor and analysis tool for Node.js. It allows developers to crawl websites, calculate overall SEO scores, inspect security certificates, test page performance speed, analyze readability scores, check for broken links, and generate premium PDF, HTML, and JSON reports.
Available as both a JavaScript API and a CLI Tool!
Key Features
- Core SEO Analysis: Checks Page Title, Meta Description, Meta Keywords, Canonical URL alignment, Robots Meta, Open Graph (OG), Twitter Cards, JSON-LD Structured Data, and mobile-friendly viewport tags.
- Content Audit: Estimates word counts, paragraph statistics, heading structure consistency (H1-H6, checking for missing or duplicate H1 tags), keyword density, and calculates Flesch Reading Ease scores.
- Image SEO: Counts images, flags missing
altattributes, checks for modern optimized formats (WebP, AVIF, SVG), checks for responsive attributes (srcset), checks lazy-loading, and generates an Image SEO subscore. - Hyperlink Auditor: Counts internal/external URLs, identifies
nofollowrel targets, and verifies link health by performing asynchronous HTTP status requests (with smart HEAD/GET fallbacks). - Performance Metrics: Measures page load speed, checks HTML file sizes, counts CSS/JS external files and inline tags, identifies render-blocking resources, and warns of CLS (layout shift) risks.
- Security Assessment: Verifies HTTPS protocol, retrieves TLS/SSL peer certificate expiration details and authority issuers using Node's native
tlslayer, and checks for critical response security headers (HSTS, CSP, X-Frame-Options, etc.). - Robust Export System: Exports audits into clean, structured raw JSON files, premium responsive HTML report pages, or multi-page PDF documents.
- Advanced Capabilities:
- Bulk Mode: Audit hundreds of URLs in parallel with controlled concurrency.
- Comparison Mode: Compare two websites side-by-side to highlight who scores higher, loads faster, and has better optimizations.
- Robots.txt & Sitemap Integration: Analyzes rules and detects sitemaps automatically.
Installation
Install globally to use the CLI tool anywhere:
npm install -g seo-checker-proOr install locally as a dependency in your Node project:
npm install seo-checker-proCLI Usage
You can run the auditor instantly using npx without installation:
npx seo-checker-pro https://example.comOptions & Flags
| Flag | Description | Example |
|---|---|---|
-c, --compare |
Compares two URLs side-by-side | npx seo-checker-pro https://a.com https://b.com -c |
-b, --bulk <file> |
Runs bulk audit from a text file (one URL per line) | npx seo-checker-pro --bulk urls.txt |
--json [path] |
Exports report as JSON (defaults to seo-report.json) |
npx seo-checker-pro https://example.com --json |
--html [path] |
Exports report as a styled HTML page (defaults to seo-report.html) |
npx seo-checker-pro https://example.com --html |
--pdf [path] |
Exports report as a PDF document (defaults to seo-report.pdf) |
npx seo-checker-pro https://example.com --pdf |
--no-broken |
Skips broken link status verification (faster runs) | npx seo-checker-pro https://example.com --no-broken |
--concurrency <num> |
Max parallel requests during bulk operations (default: 3) |
npx seo-checker-pro --bulk urls.txt --concurrency 5 |
JavaScript API
1. Analyze a Single Website
const { analyzeSEO, exportToHtml, exportToPdf } = require("seo-checker-pro");
async function runAudit() {
try {
const report = await analyzeSEO("https://example.com", {
checkBrokenLinks: true, // Set to false to bypass pinging links
maxLinksToCheck: 20, // Limits tested hyperlinks to avoid timeouts
timeout: 8000, // Connection timeout in ms
headers: {
"Custom-Header": "audit-client"
}
});
console.log("Overall Score:", report.overallScore);
console.log("Strengths:", report.strengths);
console.log("Issues:", report.issues);
// Export reports to disk
exportToHtml(report, "./reports/audit.html");
await exportToPdf(report, "./reports/audit.pdf");
} catch (error) {
console.error("Audit failed:", error.message);
}
}
runAudit();2. Website Comparison
Compare two websites side-by-side to review their metrics:
const { compareWebsites } = require("seo-checker-pro");
async function runComparison() {
const comparison = await compareWebsites("https://site-a.com", "https://site-b.com");
console.log("Comparison Results:", comparison.comparison);
}
runComparison();3. Bulk Analysis
const { bulkAnalyze } = require("seo-checker-pro");
async function runBulk() {
const urls = [
"https://example.com",
"https://google.com",
"https://github.com"
];
const results = await bulkAnalyze(urls, { concurrency: 2 });
results.forEach(res => {
if (res.success) {
console.log(`${res.url} scored ${res.report.overallScore}/100`);
} else {
console.log(`Failed ${res.url}: ${res.error}`);
}
});
}
runBulk();Report Structures
JSON Output Scheme
The returned SeoReport object contains granular metrics grouped by categories:
{
"url": "https://example.com/",
"timestamp": "2026-06-26T18:00:00.000Z",
"overallScore": 92,
"categories": {
"coreSeo": {
"score": 95,
"details": {
"title": { "exists": true, "text": "Example Domain", "length": 14, "status": "success", "message": "Title tag is present..." }
// ...metaDescription, canonical, openGraph, structuredData, mobileFriendly
}
},
"content": { "score": 90, "details": { "wordCount": 350, "readability": { "score": 72, "level": "Standard" } } },
"images": { "score": 85, "details": { "total": 12, "missingAltCount": 1 } },
"links": { "score": 95, "details": { "totalLinks": 25, "brokenCount": 0 } },
"security": { "score": 100, "details": { "isHttps": true, "ssl": { "isValid": true } } },
"performance": { "score": 88, "details": { "loadTimeMs": 450, "htmlSize": { "kb": 32 } } }
},
"advanced": {
"robotsTxt": { "exists": true, "sitemaps": ["https://example.com/sitemap.xml"] },
"sitemap": { "exists": true, "url": "https://example.com/sitemap.xml" }
},
"strengths": [ ... ],
"issues": [ ... ],
"recommendations": [ ... ]
}Contribution Guidelines
We welcome community pull requests! To contribute:
- Fork the repository.
- Install dependencies:
npm install - Implement features/fixes. Add unit tests under
/tests. - Run tests to ensure everything is functional:
npm run test - Open a Pull Request with details about your change.
License
This project is licensed under the MIT License. Check the LICENSE file for more information.