Mahope tools: EUComply Clean Copy DeskUptime Transmute BugBottle All tools
New Tool

Profile any web page from your terminal

HTTP status, meta tags, Open Graph, JSON-LD, headings, alt text, security headers — one command, no install.

Download (tar.gz) Single file Quick start →

How it works

$ python3 page_profile.py https://example.com
page-profile v1.2.2 — 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"
}

Compare two pages

Paste two URLs to see their scores side by side — the same 21-point audit, diffed check by check.

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 /downloads/page-profile/page_profile.py
$ python3 page_profile.py https://your-site.com

Or download the full package:

$ curl -O /downloads/page-profile/page-profile-1.2.2.tar.gz
$ tar xzf page-profile-1.2.2.tar.gz
$ cd page_profile-1.2.2
$ python3 page_profile.py https://your-site.com

What it checks

CategoryChecks
StatusHTTP status code, redirect chain
Core metaTitle (length), meta description (length), canonical URL, language, charset
SocialOpen Graph (og:title, og:description, og:image, og:type), Twitter Card
Structured dataJSON-LD block count and @types
ContentHeading 1-6 outline, image alt-text coverage
SecurityHSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy
i18nLanguage declaration, hreflang alternates
Score21-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
  • History tracking — every single-URL profile run is recorded, so you can watch your score move over time
  • Compare two pages side by side in your browser
  • Zero dependencies — single Python file
Download free →

Pro

$19
per year
  • Everything in Free, plus:
  • Compare mode from the command line — diff two URLs in your terminal
  • Batch mode — profile multiple URLs, ranked by score
  • Client-ready HTML report
  • Online activation and validation — no account required
Buy Pro — $19/year → Secure checkout via Stripe. License key by email. Activate it with page-profile --activate YOUR-KEY.

Or pay once: $39 once, forever. The same Pro license with no renewal and no expiry. Founding price for the first 100 purchases only.

Buy Pro Lifetime — $39 once →

Free vs Pro — side by side

Free and Page Profile Pro, side by side
PlanFreePage Profile Pro
What you get
  • History tracking
  • All checks
  • Terminal report with score and grade
  • JSON output
  • Redirect chain trace
  • Compare mode from the command line
  • Batch mode
  • Client-ready html report
Price$0no licence key needed$19/year

$39 once — lifetime, first 100 purchases · One licence covers 3 devices.

No alerts or notifications — check manually

Pro is a one-time decision per year: activation and regular license checks contact mahope.tools, while the last successful Pro status remains available for up to seven days during temporary service outages. If you audit pages for clients, the HTML report and batch mode pay for themselves on the first job.

Why use it?

Live example

Running against mahope.tools/:

$ python3 page_profile.py https://mahope.tools/
page-profile v1.2.2 — https://mahope.tools/
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

Free JSON API

Everything the web tool does is also a public REST endpoint — no key, no signup. Fetch any page and get structured JSON back: status, meta, Open Graph, JSON-LD, headings, alt-text coverage, security headers, plus a quality score and grade.

$ curl "https://mahope.tools/api/profile?url=https://example.com"
{ "ok": true, "status": 200, "title": "Example Domain",
"score": 7, "max_score": 21, "grade": "F", ... }

Fair use: 30 requests per visitor per day. For unlimited local runs, use the single-file Python CLI instead — same checks, no limits. Full docs: API reference · OpenAPI spec.

Frequently Asked Questions

Do I need to install anything?

No. page-profile is a single Python file using only the standard library. Download it, run it with Python 3.8+ — no pip install, no npm, no browser automation.

What does it check on a page?

HTTP status and redirects, title and meta description lengths, canonical URL, language, Open Graph and Twitter Card tags, JSON-LD structured data, heading outline, image alt-text coverage, and security headers (HSTS, CSP, X-Frame-Options and more).

Does it work on any website?

Yes. It works on any public URL regardless of platform — WordPress, Shopify, Webflow, Next.js, Squarespace or hand-written HTML. Nothing is installed on the target site.

Can I use it in CI pipelines?

Yes. Run with --json to get machine-readable output including the score and grade, so you can gate deploys on a minimum quality threshold.

What is the difference between Free and Pro?

The free version covers all checks, the terminal report with score and grade, and JSON output. Pro ($19/year) adds compare mode from the command line, batch mode and client-ready HTML reports. Pro activation and regular license checks contact mahope.tools; a successful check is cached for up to seven days during temporary service outages.