Skip to content
TLS/SSL certificates

Decode and inspect SSL/x509 certificates in your browser

Paste a certificate in PEM format (-----BEGIN CERTIFICATE-----) and get a full read-out of its x509 fields: Subject (CN, O, OU), Subject Alternative Names, Issuer, the validity window with days to expiry, serial number, signature algorithm, public key type and size, SHA-256 and SHA-1 fingerprints. Everything runs in the browser: the certificate never leaves your machine and no server is contacted.

How to decode a certificate

  1. 1

    Export the certificate as PEM

    From the terminal, for a server certificate: openssl s_client -connect example.com:443 -servername example.com < /dev/null | openssl x509. From a .crt, .cer or .pem file, open it in a text editor: if it starts with -----BEGIN CERTIFICATE----- it is already PEM. From the browser: click the padlock in the address bar, open the certificate details and export in Base64 (PEM) format.

  2. 2

    Paste it into the tool

    Paste the whole block, including the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- delimiters. The bare base64 of the DER is accepted too: the tool recognises it and wraps it for you. To inspect the full chain, paste the blocks one after another and tick "Analyze the full chain".

  3. 3

    Decode

    The tool converts the PEM to DER bytes, walks the ASN.1 structure in the browser and extracts Subject, Subject Alternative Names, Issuer, the validity window, serial number, signature algorithm, public key type and size. The SHA-256 and SHA-1 fingerprints are computed with the native WebCrypto API over the DER bytes of the whole certificate.

  4. 4

    Read and verify

    Check the expiry (a badge flags when fewer than 30 days are left or the certificate is already expired), confirm the domain appears in the SAN and not just in the Common Name, compare the fingerprint against the expected one. The "Copy report" button produces a text summary ready for a ticket, a runbook or deployment docs.

What a certificate decoder does (and does not do)

An x509 certificate binds a public key to an identity. It is the building block TLS/HTTPS rests on: when the browser opens https://, the server presents a certificate claiming "this public key belongs to this domain", signed by a Certificate Authority the browser trusts. The format and validation rules for the internet PKI are set out in RFC 5280. A certificate carries the version, serial number, signature algorithm, the issuer's Distinguished Name, the validity window (Not Before / Not After), the subject's Distinguished Name, the public key and a set of extensions (SAN, Key Usage, Basic Constraints and others).

The chain of trust. No browser trusts your site's certificate directly. It trusts a few hundred root CAs preinstalled in its trust store. Your certificate (the leaf, or end-entity) is signed by an intermediate CA, which is in turn signed by the root. Validation means building a path from the leaf up to a trusted root: every link must be signed by the next one. If an intermediate is missing (a common deployment mistake) the chain breaks and the browser rejects the connection even when the site certificate itself is perfect. That is why the tool lets you paste the entire chain and shows, cert by cert, who signs whom.

SAN beats Common Name. Historically the hostname lived in the Subject's Common Name (CN). Since 2017 Chromium-based browsers, and every other browser after them, ignore the CN entirely for domain matching: only the Subject Alternative Names count. A certificate with CN=example.com but without example.com in its SAN throws ERR_CERT_COMMON_NAME_INVALID. The CN is cosmetic today and usually just repeats the first SAN. When you decode a certificate to work out why a domain is not covered, look at the SAN, not the CN.

Expiry and renewal. The maximum lifetime of public TLS certificates has kept shrinking: from the old 3 years to 825 days, down to the 398 days browsers have enforced since 2020. The CA/Browser Forum has also approved a stepwise reduction toward roughly 47 days by 2029. The practical consequence is that manual renewal is no longer sustainable: teams rely on ACME and short-lived certificates (Let's Encrypt issues for 90 days, renewed automatically). Decoding the certificate before a deploy, or during an incident, is still the fastest way to read the exact Not After date and know how many days are left.

PEM, DER and fingerprints. A certificate is essentially an ASN.1 structure encoded in DER (binary). PEM is that binary in base64, wrapped between the BEGIN/END delimiters: plain ASCII text you can copy anywhere. Extensions like .crt and .cer may hold either form. The fingerprint is not a field inside the certificate: it is the hash (SHA-256, or SHA-1 for compatibility) computed over the DER bytes of the whole certificate, and it uniquely identifies a copy, for example in certificate pinning or when comparing two exports.

Decoding is not validating. This tool reads and shows what the certificate claims; it does not verify the CA signature, it does not check revocation (OCSP/CRL) and it does not confirm the chain reaches a trusted root. A certificate can decode without errors and still be rejected by the browser because it is expired, has a hostname outside its SAN, is self-signed or is missing an intermediate. Decoding gives you the facts; trust is a separate judgement that depends on the trust store and the context.

Privacy by design. No upload, no remote fetch. The PEM is converted to DER, parsed and hashed entirely in your browser via WebCrypto. The domain the certificate belongs to is never contacted by our server. It is the right tool to inspect certificates of internal systems, staging environments unreachable from outside, intranet devices or certificates exported from an HSM that you do not want leaving your network.

Glossary

Technical terms used on this page, briefly explained.

x509 #
ITU-T standard defining the format of public key certificates. The profile used by the internet PKI (HTTPS, S/MIME, code signing) is specified by RFC 5280. The current version of the fields and extensions is v3.
Common Name (CN) #
An attribute of the Subject's Distinguished Name. It used to hold the site's hostname; today browsers ignore it for domain matching and rely on the SAN only. It remains a descriptive field, often a copy of the first SAN.
Subject Alternative Name (SAN) #
Extension listing every identity the certificate covers: DNS names (including wildcards like *.example.com), IP addresses, emails, URIs. It is the authoritative field for deciding which domains a certificate is allowed to protect.
Issuer #
Distinguished Name of the Certificate Authority that signed the certificate. In a self-signed certificate the Issuer equals the Subject. A leaf's Issuer must match the Subject of the intermediate that signs it.
Certificate Authority (CA) #
An entity that issues and signs certificates. Root CAs are preinstalled in the operating system and browser trust stores; intermediate CAs sign end-entity certificates so the root keys can stay offline and reduce risk.
Fingerprint #
Cryptographic hash (SHA-256 or SHA-1) computed over the DER bytes of the whole certificate. It is not stored inside the certificate: it is recomputed. It uniquely identifies a copy and is used in certificate pinning and manual comparisons.
Chain of trust #
The leaf -> intermediate(s) -> root sequence a client walks to validate a certificate. Each link is signed by the next; the chain is valid if it ends at a root present in the trust store. A missing intermediate breaks it.
PEM #
Privacy-Enhanced Mail: a text encoding of DER data in base64, wrapped between -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----. A single PEM file can hold several concatenated certificates (the chain).
DER #
Distinguished Encoding Rules: the canonical binary encoding of the certificate's ASN.1 structure. PEM is simply the DER in base64. Fingerprints and signatures are always computed over the DER bytes, never over the PEM text.
Serial number #
An integer that uniquely identifies the certificate at its issuer. RFC 5280 caps it at 20 octets; public CAs must include at least 64 bits of entropy in it to prevent collision attacks on the signature hash.

Frequently asked questions about the certificate decoder

Does the tool work offline?
Yes. Once the page has loaded, decoding runs entirely in the browser: ASN.1/DER parsing and fingerprint computation via WebCrypto, with no network calls. You can disconnect and keep using it, or save the page to run it on an air-gapped machine.
Does the certificate data stay in my browser?
Always. The certificate you paste is never sent to our server or any third party: it is processed locally and stays in memory until you clear the field or close the tab. A public certificate is not a secret, but this guarantees that certificates from internal systems or exported from an HSM never leave your network.
Which certificate formats does it accept (PEM, DER, base64)?
It accepts full PEM with BEGIN/END CERTIFICATE delimiters and also the bare base64 of the DER, which the tool wraps automatically. Raw binary DER cannot be pasted as text: convert it to PEM first with openssl x509 -inform der -in cert.der -out cert.pem. Private keys and CSRs are not certificates and are not decoded.
What is the difference between CN and SAN?
The Common Name is a Subject attribute that once held the hostname. Since 2017 browsers ignore it for domain matching and consider only the Subject Alternative Names. In practice: a domain is covered only if it appears in the SAN. If a certificate has your domain in the CN but not the SAN, the browser rejects it with ERR_CERT_COMMON_NAME_INVALID.
How do I see when the certificate expires?
The Validity section shows Not Before and Not After in human-readable form plus the days left to expiry. A badge turns yellow when fewer than 30 days remain and red when the certificate is already expired or not yet valid. The authoritative value is the Not After date, expressed in UTC.
Can I paste the whole chain (leaf + intermediates + root)?
Yes. Paste the PEM blocks one after another and tick "Analyze the full chain": the tool decodes every certificate and shows them in order, labelling the leaf, the intermediates and any self-signed root. It is useful to diagnose a missing or out-of-order intermediate, the most common cause of chain errors in production.
What is the fingerprint and what is it for?
It is the SHA-256 (or SHA-1 for compatibility) hash computed over the DER bytes of the whole certificate. It is not a stored field: it is recomputed every time. It uniquely identifies a specific copy, for example to compare the served certificate against the expected one, for certificate pinning, or to recognise two exports of the same certificate.
Why is my certificate "invalid" in the browser but decodes fine here?
Because decoding is not validating. The tool reads the certificate's fields; the browser verifies trust. A certificate can be well-formed and still be rejected if it is expired, if the domain is not in the SAN, if it is self-signed or issued by an untrusted CA, if an intermediate is missing from the chain, or if it has been revoked. Decoding gives you the facts to work out which case applies.
Does the tool verify the signature or check revocation (OCSP/CRL)?
No. It is a decoder, not a validator. It does not cryptographically verify the CA signature, does not query OCSP endpoints or download CRLs, and does not build the path up to a trusted root. Full validation needs tools that reach the network and the trust store, such as openssl verify or online SSL lab tests.
What is the difference between leaf, intermediate and root?
The leaf (or end-entity) is your site or service certificate, the one carrying the hostname in its SAN. Intermediates are CA certificates that sign leaves and are themselves signed by the root. The root is the self-signed CA at the top of the chain, preinstalled in the trust store: it is not served by the server because the client already holds it. A correct deployment sends leaf plus intermediates, never the root.

Who builds these tools?

Maurizio Fonte, senior IT consultant with 20+ years in PHP, Laravel, unmanaged Linux infrastructure, applied cybersecurity and AI/LLM integration. Production backends, legacy code modernization, security audits, custom AI agents and MCP servers: the work behind every tool published here.

About Maurizio Fonte