npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

sitescope

v1.0.0

Published

One-command website health report. Performance, SEO, security, and accessibility — zero config, zero dependencies.

Readme

  sitescope
  -------------------------------------------------------
  Report for https://example.com
  -------------------------------------------------------
  Overall Grade:  A  (92/100)
  -------------------------------------------------------
  Category          Score   Grade
  -------------------------------------------------------
  SEO               92      A
  Performance       88      A
  Security          75      C
  Accessibility     95      A
  Links            100      A
  Indexing         100      A
  -------------------------------------------------------
npx sitescope https://yoursite.com

That's it. No install. No config. No API keys.


Table of Contents


✨ Why sitescope?

Every existing website audit tool requires Docker, Playwright, browser downloads, API keys, or a PhD in YAML. We built the opposite.

| Feature | sitescope | Lighthouse CLI | seo-audit-skill | site-audit-seo | | :--- | :---: | :---: | :---: | :---: | | Zero dependencies | ✅ | ❌ | ❌ | ❌ | | Works with npx | ✅ | ❌ | ❌ | ❌ | | No browser/Playwright needed | ✅ | ❌ | ❌ | ❌ | | No API keys | ✅ | ✅ | ❌ | ✅ | | HTML report export | ✅ | ✅ | ✅ | ✅ | | JSON output for CI | ✅ | ✅ | ✅ | ✅ | | Security header checks | ✅ | ❌ | ✅ | ❌ | | Broken link detection | ✅ | ❌ | ✅ | ✅ | | robots.txt / sitemap checks | ✅ | ❌ | ❌ | ❌ | | Runs in < 5 seconds | ✅ | ❌ | ❌ | ❌ |

Philosophy: Most audit tools try to be everything. They end up slow, complex, and full of checks nobody cares about. sitescope checks what actually matters for 90% of websites and gives you a clear letter grade in seconds.


🚀 Quick Start

# Audit any website — no install needed
npx sitescope https://yoursite.com

Or install globally:

npm install -g sitescope
sitescope https://yoursite.com

🔍 What It Checks

sitescope runs 37+ checks across 6 categories and grades each A through F.

SEO

| Check | What it looks for | | :--- | :--- | | Title tag | Exists, 30–60 characters | | Meta description | Exists, 120–160 characters | | H1 tag | Exactly one per page | | Canonical URL | Prevents duplicate content | | Open Graph | og:title, og:description, og:image | | Image alt text | All images have descriptive alt attributes | | Structured data | JSON-LD blocks present | | Language | lang attribute on <html> | | Robots | Page is indexable (no noindex) |

Performance

| Check | What it looks for | | :--- | :--- | | Response time | TTFB under 500ms | | Page size | HTML payload under 100 KB | | Render-blocking scripts | All scripts use async or defer | | Script count | Not overloaded with external scripts | | Stylesheet count | CSS files within reasonable limits | | Lazy loading | Images use loading="lazy" | | Image dimensions | Width/height set to prevent CLS |

Security

| Check | What it looks for | | :--- | :--- | | HTTPS | Site served over TLS | | HSTS | Strict-Transport-Security header | | CSP | Content-Security-Policy present | | X-Content-Type-Options | nosniff to prevent MIME sniffing | | X-Frame-Options | Clickjacking protection | | Referrer-Policy | Controls referrer info leakage | | Permissions-Policy | Restricts browser APIs | | Server header | Version info not exposed | | X-Powered-By | Tech stack not exposed |

Accessibility

| Check | What it looks for | | :--- | :--- | | Language attribute | lang on <html> for screen readers | | Viewport meta | Responsive design enabled | | DOCTYPE | Standards mode rendering | | Charset | utf-8 declared | | Image alt attributes | Screen reader support | | Heading structure | H1 present for document hierarchy | | Favicon | Browser tab and bookmark icon |

Links

| Check | What it looks for | | :--- | :--- | | Broken links | Sample of internal/external links validated | | Link counts | Internal and external link inventory | | rel="noopener" | Security on external links |

Indexing

| Check | What it looks for | | :--- | :--- | | robots.txt | Present at site root with User-agent rules | | sitemap.xml | Present (from robots.txt or /sitemap.xml) |


📖 Usage & Options

# Basic audit
npx sitescope example.com

# Save HTML report
npx sitescope https://mysite.com --output report.html

# JSON output (for CI/CD pipelines)
npx sitescope mysite.com --json

# Run specific categories only
npx sitescope mysite.com --checks seo,security,indexing

# Verbose mode (checks more links)
npx sitescope mysite.com --verbose

# CI mode — exit code 1 if score below threshold
npx sitescope mysite.com --ci --min-score 80

| Flag | Short | Description | | :--- | :--- | :--- | | --output <file> | -o | Save a standalone HTML report | | --json | -j | Output raw JSON results | | --verbose | -v | Check more links, show more detail | | --checks <list> | -c | Run specific checks: seo,perf,security,accessibility,links,indexing | | --ci | | CI mode — exit with code 1 on failure | | --min-score <n> | | Minimum passing score for --ci (default: 80) | | --help | -h | Show help |


📊 HTML Report

Generate a beautiful, standalone dark-theme HTML report:

npx sitescope https://mysite.com --output report.html

The report includes:

  • Overall letter grade with score
  • Category breakdown with individual grades
  • Every check with pass/warn/fail status
  • Actionable fix suggestions
  • Shareable — single HTML file, no external assets

🔄 CI/CD Integration

GitHub Actions

name: Website Audit
on:
  push:
    branches: [main]
  pull_request:

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - name: Run sitescope
        run: npx sitescope https://staging.yoursite.com --ci --min-score 80

      - name: Generate report
        if: always()
        run: npx sitescope https://staging.yoursite.com --output audit-report.html

      - name: Upload report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: audit-report
          path: audit-report.html

GitLab CI

audit:
  image: node:20
  script:
    - npx sitescope https://staging.yoursite.com --ci --min-score 80 --output audit-report.html
  artifacts:
    paths:
      - audit-report.html
    when: always

JSON Processing

# Get the overall score programmatically
SCORE=$(npx sitescope mysite.com --json | node -e "
  let d='';process.stdin.on('data',c=>d+=c);
  process.stdin.on('end',()=>console.log(JSON.parse(d).overallScore))
")
echo "Score: $SCORE"

💻 Programmatic API

Use sitescope as a library in your Node.js projects:

import { runAudit } from "sitescope";

const result = await runAudit("https://example.com", {
  checks: "seo,security",
  json: true,
});

console.log(result.overallScore); // 85
console.log(result.categories);   // [{ category: "SEO", score: 89, results: [...] }, ...]

📋 Comparison with Alternatives

| Tool | Approach | Dependencies | Speed | Scope | | :--- | :--- | :--- | :--- | :--- | | sitescope | HTTP fetch + HTML parsing | 0 | ~3s | SEO, perf, security, a11y, links, indexing | | Lighthouse | Full browser rendering | Chrome/Puppeteer | ~30s | Performance-focused | | seo-audit-skill | Browser + Playwright | Playwright + SQLite | ~60s | SEO deep-dive (108 rules) | | site-audit-seo | Full crawl + Lighthouse | Puppeteer + Docker | Minutes | Multi-page crawl | | webhint | Browser analysis | Puppeteer | ~20s | Web standards |

When to use sitescope: You want a fast health check with zero setup. Perfect for CI pipelines, quick audits, and portfolio sites.

When NOT to use sitescope: You need full browser rendering metrics (LCP, CLS measured in-browser), multi-page crawls, or deep JavaScript-rendered content analysis. Use Lighthouse or Playwright-based tools for that.


🗺️ Roadmap

Planned

  • [ ] Custom rules config (.sitescoperc)
  • [ ] Multi-page crawl
  • [ ] Lighthouse integration (optional, opt-in)
  • [ ] Watch mode for local development
  • [ ] GitHub Action (uses: omlahore/sitescope-action@v1)
  • [ ] Badge generation (![Score](https://sitescope.dev/badge/...))
  • [ ] PDF report export

Completed

  • [x] SEO checks (title, meta, H1, canonical, OG, alt text, structured data)
  • [x] Performance checks (TTFB, page size, render-blocking scripts, lazy loading)
  • [x] Security header checks (HTTPS, HSTS, CSP, XFO, XCTO, Referrer-Policy, Permissions-Policy)
  • [x] Accessibility checks (lang, viewport, charset, headings, favicon)
  • [x] Broken link detection
  • [x] robots.txt and sitemap.xml checks
  • [x] --ci --min-score <n> flag for CI/CD gating
  • [x] Beautiful terminal output with letter grades
  • [x] Standalone HTML report export
  • [x] JSON output for CI/CD
  • [x] Zero dependencies — Node.js built-ins only

Contributions and feature requests welcome! Open an issue to discuss.


🤝 Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository and create your branch from main.
  2. Clone and run — no npm install needed for the core tool:
    git clone https://github.com/omlahore/sitescope.git
    cd sitescope
    node bin/cli.js https://example.com
  3. Make your changes and add tests.
  4. Open a Pull Request with a clear description.

Project Structure

sitescope/
├── bin/cli.js              # CLI entry point
├── public/
│   ├── logo.svg            # Project logo
│   └── screenshot.svg      # Terminal output preview
├── src/
│   ├── index.js            # Main orchestrator
│   ├── config.js           # Thresholds and constants
│   ├── checks/
│   │   ├── seo.js          # SEO audit checks
│   │   ├── performance.js  # Performance checks
│   │   ├── security.js     # Security header checks
│   │   ├── accessibility.js # Accessibility checks
│   │   ├── links.js        # Broken link checker
│   │   └── indexing.js     # robots.txt & sitemap checks
│   ├── reporters/
│   │   ├── terminal.js     # Terminal output
│   │   └── html.js         # HTML report generator
│   └── utils/
│       ├── colors.js       # ANSI color constants
│       ├── grading.js      # Shared grade/score logic
│       ├── fetcher.js      # HTTP client (Node built-in fetch)
│       ├── parser.js       # HTML parser (regex-based)
│       └── terminal.js     # Spinner, formatting helpers
├── package.json
├── README.md
├── CONTRIBUTING.md
└── LICENSE

Adding a New Check

  1. Create or edit a file in src/checks/
  2. Return { category: string, results: Array<{ id, status, label, detail }> }
  3. status must be "pass", "warn", or "fail"
  4. Register in src/index.js

Rules

  • Zero runtime dependencies. This is a hard rule. Node.js 18+ built-ins only.
  • Keep it fast. Audits complete in under 10 seconds for most sites.
  • Be opinionated. Every check should matter. Don't add noise.

See CONTRIBUTING.md for full guidelines.


⭐ Star History

If you find sitescope useful, consider giving it a star — it helps others discover the project!

Star History Chart


📜 License

MIT © Om Lahorey