TLS Certificate Decoder (PEM)

Paste a PEM certificate and see subject, SANs, validity, and signature algorithm

Ad placeholder (leaderboard)

A TLS certificate is a compact binary record that proves a server’s identity. Reading it usually means reaching for openssl x509 -text, but that requires the binary installed and a temp file. This tool decodes a PEM certificate directly in your browser so you can quickly check who it was issued to, when it expires, and which hostnames it covers.

How it works

A PEM certificate is just base64-encoded DER (Distinguished Encoding Rules) wrapped in armor lines. The tool strips the BEGIN/END CERTIFICATE markers, base64-decodes the body to raw bytes, then walks the ASN.1 tag-length-value tree:

  1. The outer SEQUENCE holds tbsCertificate, the signature algorithm, and the signature value.
  2. Inside tbsCertificate it reads the serial number, signature OID, issuer name, validity window, subject name, and the subject public-key info.
  3. Each name is an RDNSequence — a list of attribute-type-and-value pairs whose OIDs map to short labels like CN, O, and C.
  4. The validity dates are decoded from UTCTime or GeneralizedTime and compared against your clock to compute days remaining.
  5. For RSA keys the modulus length gives the key size in bits; for EC keys the named-curve OID gives the curve.
  6. The extensions block is scanned for subjectAltName (OID 2.5.29.17) and basicConstraints (OID 2.5.29.19) to list SANs and report the CA flag.

Example

Paste a server certificate and you will typically see a subject like CN=example.com, O=Example Ltd, C=GB, a signature algorithm of SHA256withRSA, a 2048 bit RSA key, and a SAN list containing DNS:example.com and DNS:www.example.com. If the validity window has passed, the tool flags the certificate as EXPIRED.

Notes and limitations

  • This is an inspection tool. It decodes fields but does not verify signatures or build a trust chain to a root.
  • It handles the common RSA and ECDSA certificates you meet in practice. Exotic extensions beyond SAN and Basic Constraints are not displayed.
  • Only BEGIN CERTIFICATE blocks are supported. Private keys and CSRs use different structures and are not parsed.
Ad placeholder (rectangle)