Free tool · Runs in your browser

SSL Certificate & CSR Decoder

Paste a certificate, CSR, or full chain and see everything inside it - expiry with days remaining, SANs, key strength, signature algorithm, fingerprints, and chain order with signature checks. Decoding runs entirely in your browser; nothing is uploaded.

Decoding runs entirely in your browser - nothing is uploaded. Certificates and CSRs are public data, but the same applies here regardless.

Certificate, CSR, or chain (PEM)

Prefer to decode offline, or need a live site's certificate? The openssl equivalents:

Decode a certificate file
openssl x509 -in certificate.pem -noout -text
Decode and verify a CSR
openssl req -in server.csr -noout -text -verify
Fetch and decode a live site's certificate
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -text
Check expiry dates only
openssl x509 -in certificate.pem -noout -dates
SHA-256 fingerprint
openssl x509 -in certificate.pem -noout -fingerprint -sha256

What the decoder shows you

A certificate is an ASN.1 structure that is unreadable by eye. This tool decodes it into the fields you actually check: who it was issued to (subject and SANs), who issued it, when it expires (with days remaining and an expiring-soon warning), the key type and strength, the signature algorithm, and the SHA-256 / SHA-1 fingerprints you compare when pinning or debugging.

It also flags real problems automatically: expired or not-yet-valid certificates, SHA-1 signatures, RSA keys under 2048 bits, missing SANs, and validity periods longer than the 398-day cap for publicly-trusted TLS.

Decoding a CSR before you send it to a CA

A CSR (Certificate Signing Request) is what you generate with openssl req -new and hand to a certificate authority. Decode it here first to confirm the Common Name, the requested SANs, and the key sizeare right - a wrong SAN list is the most common reason a freshly issued certificate fails hostname verification. The tool also verifies the CSR's own signature, which proves the file was not corrupted in transit.

Chain order: why fullchain.pem order matters

A server should send the leaf certificate first, then each intermediate, in order. Some TLS stacks tolerate a shuffled bundle, but many strict clients (and tools like older Java or embedded devices) refuse the handshake. Paste your fullchain.pem here: the tool resolves the correct order, verifies that each certificate is genuinely signed by the next one, detects duplicates and missing intermediates, and gives you a corrected bundle to copy when the order is wrong.

A missing intermediateis the classic "works in Chrome, fails in curl" bug - browsers cache intermediates, command-line clients do not.

Checking a live website (what a browser tool cannot do)

Browsers cannot open raw TLS connections to arbitrary hosts, so no client-side tool can fetch a live server's certificate - tools that do are running the check on their servers. The honest equivalent is one command on your machine: openssl s_client -connect example.com:443 -servername example.com, piped into openssl x509 -noout -text. The decoder shows this exact command with copy buttons, plus the offline equivalents for files.

Is it safe to paste a certificate here?

Yes. Certificates and CSRs contain only public data- your server hands the certificate to every client that connects. Decoding still runs 100% client-side with no network calls, which you can confirm with the browser's network tab open. The one thing you should never paste anywhere is a private key - and if you do it here by accident, the tool refuses to decode it and reminds you to keep it secret.

Certificate file formats at a glance

FormatWhat it isTypical file
PEMBase64 text with BEGIN/END lines - the format this tool readscert.pem / fullchain.pem
DERThe same data in raw binary - upload it as a filecert.der / cert.cer
CSR (PKCS#10)A signing request you send to a CAserver.csr
PKCS#7Certificate bundle - extract with openssl firstbundle.p7b
PKCS#12Certs + private key in one encrypted file - keep it offlinesite.pfx / site.p12
SSL & CSR FAQ

Frequently asked questions

Paste the certificate into the decoder - the validity section shows the notBefore/notAfter dates and the exact days remaining, with a warning when fewer than 30 days are left. Offline, run: openssl x509 -in cert.pem -noout -dates.
Certificates and CSRs are public data - your server sends the certificate to every visitor. This decoder additionally runs entirely in your browser with no uploads, which you can verify in the network tab. Never paste a private key anywhere; this tool detects and refuses them.
A CSR (Certificate Signing Request) is what you generate and send to a certificate authority - it holds your public key, subject, and requested SANs, signed with your key. The certificate is what the CA sends back after signing. This tool decodes both and auto-detects which one you pasted.
Almost always a missing intermediate certificate. Browsers cache intermediates from other sites, so they forgive an incomplete chain; curl, Java, and embedded clients do not. Paste your fullchain.pem here - the tool detects missing intermediates and wrong ordering, and produces a corrected bundle.
No browser-based tool can - browsers cannot open raw TLS connections, so "online SSL checkers" run the check server-side. Run openssl s_client -connect yoursite.com:443 -servername yoursite.com locally instead (the tool shows this command with a copy button), then paste the output here.
Subject Alternative Names are the list of hostnames (and IPs) a certificate is valid for. Browsers have ignored the Common Name field since 2017, so a certificate without a SAN entry for your hostname fails verification even if the CN matches. The decoder lists every SAN and warns when a server certificate has none.
The decoder shows a "Self-signed" badge when the subject equals the issuer and the certificate verifies against its own public key. Self-signed certificates are fine for testing and internal services, but public clients will show trust warnings unless the certificate is explicitly installed.
RSA 2048-bit is the minimum for publicly-trusted TLS; RSA 3072/4096 or ECDSA P-256 are stronger choices, and ECDSA gives smaller handshakes. The decoder shows the exact algorithm and size, and flags RSA keys under 2048 bits as too weak.
Certificates live on servers

Manage the servers, not just the certs.

CtrlOps is a modern SSH workspace for the machines your certificates live on - organized hosts, secure key management, and instant terminals. Decode the cert here, fix it on the server in one click.

Start instantly· No credit card· No sneaky autorenewals