SSL/TLS certificate decoder
Paste a certificate in PEM form to read every field in plain language, see how long it has left, and check whether it covers the hostname you care about. Paste a whole chain to decode each one.
Paste-in tool. Your browser cannot fetch another site's headers for a web page (CORS
forbids it), and WebPeeks has no server to do it, so nothing you paste leaves your browser.
Get a site's certificate chain with the command below, and paste the
-----BEGIN CERTIFICATE----- blocks it prints. Or paste the contents of a .pem
or .crt file. Never paste a private key.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null Certificate
example.com
4 passed · 2 notes
- InfoLifetime of 181 days
Within the 200-day maximum for publicly trusted certificates issued at that date.
- InfoValidation level: Domain Validated
From the CA/Browser Forum policy identifier. Browsers no longer show a different padlock for EV.
- PassValid for another 148 days
Until 2027-03-01 00:00:00 UTC.
- PassSignature: ecdsa-with-SHA256
- PassKey: ECDSA on P-256 (prime256v1)
- PassCovers www.example.com
Matched by the name "www.example.com".
Details
| Subject | CN=example.com |
|---|---|
| Issuer | C=US, O=WebPeeks Example CA, CN=WebPeeks Example Issuing CA E1 |
| Valid from | 2026-09-01 00:00:00 UTC |
| Valid until | 2027-03-01 00:00:00 UTC |
| Names covered (SAN) | DNS:example.com DNS:www.example.com DNS:*.static.example.com |
| Public key | ECDSA on P-256 (prime256v1) |
| Signature algorithm | ecdsa-with-SHA256 |
| Serial number | 04:A1:B2:C3:D4:E5:F6:07:18:29:3A:4B:5C:6D:7E:8F |
| Version | v3 |
| SHA-256 fingerprint | C1:39:E2:CA:27:9B:29:5E:AF:A0:B2:F4:27:C6:D2:5B:D2:BE:2A:97:C6:55:8B:5A:88:79:59:D1:49:7E:F0:F4 |
| SHA-1 fingerprint | 9E:E1:01:11:5C:E7:4A:21:70:FA:23:98:4D:03:F3:32:3E:25:1C:2A |
Extensions
| Extension | Critical | Value |
|---|---|---|
| Basic Constraints | yes | CA: no |
| Key Usage | yes | Digital signature |
| Extended Key Usage | no | TLS server authentication |
| Subject Alternative Name | no | DNS:example.com, DNS:www.example.com, DNS:*.static.example.com |
| Subject Key Identifier | no | F9:15:47:94:79:4E:B1:C7:53:48:C9:7C:D7:61:24:D4:03:22:AF:71 |
| Authority Key Identifier | no | CF:68:67:D5:25:09:4F:04:DD:4A:1C:2A:58:90:02:39:39:73:8F:74 |
| Authority Information Access | no | OCSP: http://ocsp.example.net, CA issuers: http://ca.example.net/e1.der |
| CRL Distribution Points | no | http://crl.example.net/e1.crl |
| Certificate Policies | no | Domain Validated (DV) (2.23.140.1.2.1) |
How the decoder works
A PEM certificate is base64 text wrapped between BEGIN and END lines. Inside is
a binary structure in DER, the Distinguished Encoding Rules of ASN.1 (ITU-T X.690), laid out as
specified in RFC 5280. The decoder removes the wrapper, decodes the base64, and walks the DER one
tag-length-value element at a time: the body to be signed (version, serial number, issuer, validity
period, subject, public key, extensions), then the signature algorithm and the signature.
Everything is done in JavaScript in this page. The two fingerprints are the SHA-256 and SHA-1 hashes of
the DER bytes, computed with the browser's built-in Web Crypto API, so they match what
openssl x509 -noout -fingerprint -sha256 prints. The decoder does not verify the
signature or build a chain to a trusted root: that needs the issuer's certificate and the operating
system's trust store, and is what your browser does on every connection.
What the checks mean
| Check | Flagged when | Source of the rule |
|---|---|---|
| Validity | Expired, not yet valid, or under 14 days left | RFC 5280; your device's clock |
| Lifetime | Over 398 days, or over 200 days if issued on or after 15 March 2026 | CA/Browser Forum Baseline Requirements, ballot SC-081 |
| Signature | SHA-1 or MD5 | Rejected by current browsers |
| RSA key size | Under 2048 bits | Baseline Requirements |
| SAN list | Missing, or the hostname you entered is not covered | RFC 6125; browsers ignore the CN |
| Self-signed | Subject equals issuer on a non-CA certificate | Not in any browser trust store |
The lifetime limit is shrinking in steps under CA/Browser Forum ballot SC-081: 398 days until 15 March 2026, 200 days from then, 100 days from 15 March 2027 and 47 days from 15 March 2029. Certificates from a private, internal CA are not bound by these rules, so a long lifetime there is a warning, not an error.
A worked example
The pre-loaded certificate was generated for this page (it signs nothing real). Its subject is simply
CN=example.com, and its SAN list names three hosts: example.com,
www.example.com and *.static.example.com. Checking
www.example.com passes on the second entry; img.static.example.com would pass
on the wildcard; shop.example.com fails because no entry covers it.
It is valid from 1 September 2026 to 1 March 2027, a lifetime of 181 days, inside the 200-day limit that applies to certificates issued after 15 March 2026. The key is ECDSA on the P-256 curve, and the signature is ecdsa-with-SHA256. Key usage is digital signature only and extended key usage is TLS server authentication, which is exactly right for an ECDSA server certificate. The policy identifier 2.23.140.1.2.1 marks it as domain validated, and the Authority Information Access extension says where a client can fetch the issuer (CA Issuers) and check revocation (OCSP).
Reading the extensions
- Basic Constraints says whether this is a CA. Server certificates must say
CA: no. - Key Usage and Extended Key Usage limit what the key may be used for. A server certificate needs TLS server authentication.
- Subject and Authority Key Identifier link a certificate to its issuer: a leaf's authority key ID equals the intermediate's subject key ID. Use them to check a chain is in the right order.
- Signed Certificate Timestamps are proof the certificate was logged in Certificate Transparency; Chrome and Safari require them for publicly trusted certificates.
- CRL Distribution Points and OCSP are the two revocation mechanisms. The Baseline Requirements made OCSP optional in 2023, and Let's Encrypt stopped putting OCSP URLs in its certificates in 2025, so a new certificate without one is not a fault.
Where this tool stops
It reads what the certificate says; it cannot tell whether the CA really issued it, whether it has been revoked, or whether the server presents it correctly. The validity result uses your device's clock, so a wrong clock gives a wrong answer. Unusual extensions are listed by object identifier and size rather than decoded. Certificate signing requests, private keys and PKCS#12 files are not certificates and are not decoded.
Common questions
Is it safe to paste a certificate here?
A certificate is public by design: every browser that visits the site receives it, and publicly trusted ones are also published in Certificate Transparency logs. Nothing you paste is sent anywhere in any case. What you must never paste into any website is the private key, and this tool refuses to decode one if you do.
Why does the certificate cover example.com but not shop.example.com?
A certificate covers exactly the names in its Subject Alternative Name list. A wildcard such as *.example.com covers one level of subdomain (shop.example.com) but not the bare domain (example.com) and not two levels down (a.shop.example.com). Enter a hostname in the box to check any name against the list.
What is the difference between the SHA-256 and SHA-1 fingerprint?
Both are hashes of the whole certificate in DER form, used to identify it exactly, for example when pinning or comparing with what a browser shows. SHA-256 is the one to use; SHA-1 is shown because some older tools and panels still display it. Neither is a property of the key; re-issuing the certificate with the same key changes both.
My certificate works in browsers but a script or old device says it is untrusted. Why?
Usually the server is sending only the leaf certificate without the intermediate. Browsers often fill the gap by fetching the intermediate themselves (from the CA Issuers URL) or from a cache; most other clients do not. Configure the server to send the full chain file, not just the certificate.
How do I convert a .cer or .der file to PEM?
Run openssl x509 -inform der -in cert.cer -out cert.pem. A .cer file is sometimes already PEM; open it in a text editor, and if it starts with -----BEGIN CERTIFICATE----- you can paste it directly. A .pfx or .p12 file contains the private key as well, so extract the certificate on your own machine with openssl pkcs12 -in file.pfx -nokeys.