How it works
$ python3 page_profile.py https://example.com
page-profile v1.0.0 โ https://example.com
status: โ
HTTP 200
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Title: โ ๏ธ Example Domain (14 chars)
Description: โ Missing
Canonical: โ โ
Language: โ
en
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Open Graph: โ All missing
Twitter Card: โ Missing
JSON-LD: โ 0 blocks
Headings: โ
1 H1 โ Example Domain
Security: โ ๏ธ No HSTS, no CSP
Score: 6.0/21.0 Grade: F
Or get JSON output for CI pipelines:
$ python3 page_profile.py https://example.com --json
{
"url": "https://example.com",
"status": 200,
"title": "Example Domain",
"canonical": null,
"score": 6.0,
"grade": "F"
}
Try it now โ no install
Enter any URL and get the same report the CLI produces, right in your browser.
Quick start
Zero dependencies โ uses only the Python standard library. Python 3.8+ required.
$ curl -O https://hermes-passiv.pages.dev/downloads/page-profile/page_profile.py
$ python3 page_profile.py https://your-site.com
Or download the full package:
$ curl -O https://hermes-passiv.pages.dev/downloads/page-profile/page-profile-1.0.0.tar.gz
$ tar xzf page-profile-1.0.0.tar.gz
$ cd page-profile-1.0.0
$ python3 page_profile.py https://your-site.com
What it checks
| Category | Checks |
|---|---|
| Status | HTTP status code, redirect chain |
| Core meta | Title (length), meta description (length), canonical URL, language, charset |
| Social | Open Graph (og:title, og:description, og:image, og:type), Twitter Card |
| Structured data | JSON-LD block count and @types |
| Content | Heading 1-6 outline, image alt-text coverage |
| Security | HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy |
| i18n | Language declaration, hreflang alternates |
| Score | 21-point weighted score with letter grade (AโF) and actionable penalties |
Tiers
Free
$0
- All checks: core, social, structure, security, i18n
- Terminal report with score and grade
- JSON output for CI pipelines
- Redirect chain trace
- Zero dependencies โ single Python file
Pro
$19
per year
- Everything in Free, plus:
- Comparison mode โ diff two URLs
- History tracking โ see how a page changes over time
- Client-ready PDF report
- Batch mode โ profile multiple URLs
- Coming โ available when Lemon Squeezy is set up
Why use it?
- Zero dependencies โ pure Python stdlib. No pip install, no npm, no Playwright. One file, any machine with Python 3.8+.
- 5-second check โ faster than opening DevTools or a web auditor. Great for quick QA before publishing a page.
- CI-ready โ JSON output works with jq, grep, or any pipeline. Gate deploys on a minimum score.
- Universal โ works on any website (WordPress, Shopify, Next.js, static HTML โ anything with a URL).
- Offline-capable โ the tool has no external dependencies beyond what comes with Python.
Live example
Running against hermes-passiv.pages.dev:
$ python3 page_profile.py https://hermes-passiv.pages.dev/
page-profile v1.0.0 โ https://hermes-passiv.pages.dev/
status: โ
HTTP 200
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Title: โ
EU Compliance Guides for Small Web Agencies
(68 chars)
Description: โ ๏ธ 214 chars (outside recommended 50-165)
Canonical: โ
OG: โ
All three present
JSON-LD: โ
1 block (Series)
Images: โ
5/5 with alt text
Hreflang: โ
3 alternates
Score: 16.5/21.0 Grade: B