SSL Certificate Decoder — Read PEM, CRT and CSR Files

Paste a PEM certificate, a chain or a CSR, or upload a .crt file, to see SANs, expiry, issuer, key type and fingerprints. Decoded in your browser.

Only certificates and CSRs are needed. Never paste a private key into a website; if you do here, it is ignored.

Loading decoder…

Runs entirely in your browser. Certificates are decoded locally; nothing is uploaded and no OCSP or CT lookups are made. Browse all free tools.

Found a problem, or something that could be better? We read every message and we fix things quickly.

This free SSL certificate decoder reads an X.509 certificate and shows what is inside: the domain names it covers (Subject Alternative Names), who issued it, when it expires and how many days are left, the key type and size, the extensions, and its SHA-256 and SHA-1 fingerprints. Paste PEM text, a whole chain from a fullchain.pem, or a certificate signing request (CSR) before you send it to a CA. You can also upload .crt, .cer, .der and .pem files.

Decoding happens in your browser; nothing is uploaded and no network lookups are made. That also means the tool reports what the certificate says, not whether it is trusted: it does not verify signatures, check revocation (OCSP or CRL) or look up Certificate Transparency logs. For a chain, it checks that each certificate’s issuer name matches the next certificate’s subject, which catches the most common ordering mistake. It reads RSA, ECDSA and Ed25519 certificates, unlike many JavaScript decoders that only handle RSA.

How to use

  1. Paste a certificate starting with -----BEGIN CERTIFICATE-----, several of them, or a CSR starting with -----BEGIN CERTIFICATE REQUEST-----. Or click Upload and pick a .crt, .cer, .der or .pem file.
  2. Check the coloured status line on each certificate: valid with days remaining, expiring soon (under 30 days), expired or not yet valid.
  3. Confirm the Subject Alternative Names list every hostname the certificate must cover. Browsers ignore the Common Name.
  4. For a chain, read the Chain order box: the server certificate should come first, followed by each issuer in turn.
  5. Copy a fingerprint or the PEM of any single certificate with the buttons on its card.

Frequently asked questions

How do I check when an SSL certificate expires?

Paste the certificate here and read the Valid until line and the status above it, which shows the days remaining. To get the certificate a live site is serving, run openssl s_client -connect example.com:443 -servername example.com -showcerts, or in the browser click the padlock (or site settings icon), open the certificate viewer and export it. You can also check from the command line with openssl x509 -in cert.pem -noout -enddate.

What is the difference between PEM, DER, CRT and CER?

PEM and DER are encodings; CRT and CER are just file extensions. DER is the binary form of the certificate. PEM is the same bytes in Base64 between -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- lines, and one PEM file can hold several certificates. A .crt or .cer file can contain either encoding (Windows usually means DER by .cer). This decoder accepts both.

What is a Subject Alternative Name (SAN)?

The SAN extension lists every hostname and IP address the certificate is valid for, such as example.com, www.example.com and *.example.com. Browsers check only this list; the Common Name in the subject has been ignored by Chrome since version 58 (2017). A certificate without a matching SAN fails with a name mismatch error even if the Common Name is right.

What is a certificate fingerprint?

A hash of the whole certificate in its DER form, shown as hex. It identifies one exact certificate: if a single byte differs, the fingerprint changes. SHA-256 fingerprints are the modern standard; SHA-1 fingerprints are still shown by some tools and older systems. Fingerprints are not secret. The SPKI pin shown here is different: it hashes only the public key, so it stays the same when a certificate is renewed with the same key.

How long can an SSL certificate be valid?

For publicly trusted TLS certificates, the CA/Browser Forum limit was 398 days from September 2020. Ballot SC-081 lowers it in steps: 200 days for certificates issued from 15 March 2026, 100 days from 15 March 2027, and 47 days from 15 March 2029. Certificates from a private or internal CA are not bound by these limits. This tool warns when a leaf certificate exceeds the limit for its issue date.

Is it safe to paste my certificate here?

Yes. A certificate is public by design: every visitor to your site receives it. Decoding also happens locally in your browser. The private key is a different matter: never paste a private key into any website. If one is included in what you paste, this tool ignores it and tells you.

Reading a certificate: what each field means

• Subject and Issuer: distinguished names. CN is the common name, O the organisation, C the country. On a self-signed or root certificate they are identical.

• Validity: Not Before and Not After, in UTC. Clients reject the certificate outside this window, so a wrong clock on a device can make a valid certificate fail.

• Serial number: unique per CA; it is what a revocation list refers to.

• Public key: RSA keys are 2048 bits or more; ECDSA keys use a named curve, usually P-256 or P-384, and are much shorter for similar strength. Ed25519 is rarely used for public TLS so far.

• Key usage and extended key usage: what the key may do. A TLS server certificate needs TLS Web Server Authentication; a CA certificate needs Certificate Sign.

• Basic constraints: CA:TRUE marks a certificate that can issue others; a path length limits how many intermediates may follow it.

• Authority Information Access: where to fetch the issuer certificate (CA Issuers) and where to ask about revocation (OCSP).

Fixing chain problems

Most "certificate not trusted" errors that work in one browser but fail in another, or in curl, come from the chain the server sends. The server should send its own certificate first, then the intermediate that issued it, and so on; it should not need to send the root, which clients already have. Browsers can sometimes fetch a missing intermediate themselves (using the AIA URL), but curl, Java, Python and most mobile apps cannot, so they fail.

Paste the server’s full chain here (for Let’s Encrypt, fullchain.pem; for other CAs, your certificate followed by the CA bundle) and check that each "is issued by" line is green. If the order is wrong, reorder the PEM blocks in your server configuration. If a link is missing, add the intermediate certificate your CA provides.

Related free tools

  • JWT Decoder — Decode a JWT's header and payload, read the expiry in plain language, verify HS, RS, PS and ES signatures, or sign a new token. Nothing leaves your browser.
  • Base64 Encoder / Decoder — Encode text or files to Base64, turn images into data URIs with CSS and <img> snippets, and decode Base64 back to a previewable file. Nothing leaves your browser.
  • Password Generator — Generate a strong random password, a memorable passphrase or a PIN. Runs entirely in your browser, nothing is sent or stored.
  • curl to Code — Paste a curl command, including Chrome "Copy as cURL", and get the same request in Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget or HTTPie.
  • YAML Validator — Validate YAML with the exact line and column of each error, and catch the mistakes parsers accept silently: yes/no booleans, tabs, duplicate keys.