Use the form above. Parameters, code examples and FAQ are grouped in the documentation section below.
GET /v1/tls?domain=example.com
port (default 443).
/v1/tls?domain=example.com
/v1/tls?domain=expired.badssl.com
{
"domain": "example.com",
"port": 443,
"tls_version": "TLSv1.3",
"cipher": "TLS_AES_256_GCM_SHA384",
"cert_subject": "CN=example.com",
"cert_issuer": "C=US, O=SSL Corporation, CN=Cloudflare TLS Issuing ECC CA 3",
"not_before": "2026-07-29T22:10:08Z",
"not_after": "2026-10-27T22:17:21Z",
"days_left": 34,
"expired": false
}
Inspect a domain's TLS version, cipher suite, certificate chain, SANs and expiry date without OpenSSL.
| Endpoint | Returns | Example |
|---|---|---|
/v1/tls | JSON | domain=example.com |
| Name | Type | Default | Description |
|---|---|---|---|
domain | string | required | Hostname to check. A full URL is accepted and trimmed down to the host. |
port | integer | 443 | Port to connect to, 1-65535. Useful for non-standard HTTPS ports. |
curl 'https://freetools.one/v1/tls?domain=example.com'const t = await (await fetch('https://freetools.one/v1/tls?domain=example.com')).json();
console.log(t.tls_version, t.cipher_strength, t.days_left + ' days left');import requests
t = requests.get('https://freetools.one/v1/tls', params={'domain': 'example.com'}).json()
print(t['tls_version'], t['cipher_strength'], t['days_left'], 'days left'){
"domain": "example.com",
"port": 443,
"tls_version": "TLSv1.3",
"cipher": "TLS_AES_256_GCM_SHA384",
"cipher_strength": "strong",
"cert_issuer": "C=US, O=Let's Encrypt, CN=R11",
"san": ["example.com", "www.example.com"],
"days_left": 89,
"expired": false
}
Call /v1/tls?domain=example.com and read the days_left and not_after fields. The checker performs a real handshake, so it reports the certificate the server actually presents.
Yes. Pass port=8443 (or any port from 1 to 65535) and the probe connects there instead of 443.
Yes. Each negotiated cipher is rated strong, good, moderate, legacy or weak, so outdated suites are easy to spot in monitoring.
No. The TLS handshake and certificate parsing happen inside the API, so it works from any platform with plain HTTPS.