Fast website health checks for Python. Check SSL certificates, security headers, performance, and DNS — all in one command.
Zero dependencies. Uses only Python standard library.
pip install site-health# Check a website
site-health example.com
# Check multiple sites
site-health google.com github.com stripe.com
# JSON output (great for scripts)
site-health example.com --json
# Quick ping check
site-health example.com --ping
# SSL-only check
site-health example.com --ssl-only
# Security headers only
site-health example.com --headers-only
# CI mode (exits with code 1 if unhealthy)
site-health example.com --cifrom site_health import check
# Full health check
result = check('https://example.com')
print(result.grade) # 'A+', 'A', 'B', 'C', 'D', or 'F'
print(result.healthy) # True or False
print(result.score) # 0-100
# Access detailed results
print(result.ssl.valid) # True/False
print(result.ssl.days_until_expiry) # Days until cert expires
print(result.headers.score) # Security headers score
print(result.headers.missing) # List of missing headers
print(result.performance.rating) # 'fast', 'moderate', 'slow'
print(result.dns.ip_addresses) # List of IPv4 addresses
# Quick checks
from site_health import ping, check_ssl, check_headers
ping('example.com') # True/False
check_ssl('example.com') # SSLResult
check_headers('example.com') # HeadersResult
# Check multiple sites
from site_health import check_many
results = check_many(['google.com', 'github.com', 'stripe.com'])
for r in results:
print(f"{r.url}: {r.grade}")result = check('example.com')
print(result.to_json()){
"url": "https://example.com",
"healthy": true,
"grade": "B",
"score": 78,
"ssl": {
"valid": true,
"issuer": "DigiCert Inc",
"days_until_expiry": 45
},
"headers": {
"score": 60,
"present": ["X-Content-Type-Options", "X-Frame-Options"],
"missing": ["Content-Security-Policy", "Strict-Transport-Security"]
},
"performance": {
"response_time_ms": 156,
"rating": "fast"
},
"dns": {
"resolved": true,
"ip_addresses": ["93.184.216.34"]
}
}- ✅ Certificate validity
- ✅ Expiration date and days remaining
- ✅ Issuer information
- ✅ TLS protocol version
- ✅ Strict-Transport-Security (HSTS)
- ✅ Content-Security-Policy (CSP)
- ✅ X-Frame-Options
- ✅ X-Content-Type-Options
- ✅ Referrer-Policy
- ✅ Permissions-Policy
- ✅ X-XSS-Protection
- ✅ Response time (TTFB)
- ✅ Performance rating (fast/moderate/slow)
- ✅ DNS resolution
- ✅ IPv4 addresses
- ✅ IPv6 addresses
| Grade | Score | Meaning |
|---|---|---|
| A+ | 95-100 | Excellent - All checks pass |
| A | 85-94 | Great - Minor issues only |
| B | 75-84 | Good - Some improvements needed |
| C | 65-74 | Fair - Multiple issues |
| D | 50-64 | Poor - Significant problems |
| F | 0-49 | Failing - Critical issues |
Use --ci flag to exit with code 1 if any site is unhealthy:
# GitHub Actions
- name: Check site health
run: pip install site-health && site-health mysite.com --ci
# GitLab CI
health-check:
script:
- pip install site-health
- site-health mysite.com --ciNeed continuous monitoring with alerts?
- Real-time alerts via email, Slack, SMS
- Historical uptime tracking
- Multi-location checks
- Status pages for your users
MIT