X.509 Certificate Decoder: Read SSL/TLS Certificates, CSRs and CRLs Online
Decode any SSL/TLS certificate, CSR or CRL in your browser. Check chains, key matches, expiry and hostnames. Free, no upload, no account.
What it does
Paste a certificate, drop a .pem, .crt, .cer, .der, .p7b, .csr or .crl file, and the decoder shows everything inside it in plain language: who it was issued to and by, when it expires, which hostnames it covers, what the key is, and what the certificate is allowed to do.
It goes further than a field dump. It flags problems (expired, weak signature, missing Subject Alternative Name, a CA that cannot sign), builds the chain from the certificates you give it and checks every signature, tests whether a hostname would match, and tells you whether a certificate, a CSR and a private key belong together.
How it works
The decoder contains its own ASN.1 DER/BER reader, so there is no library to download and it works offline once the page has loaded. Your browser’s built-in WebCrypto does the hashing and the signature checks.
Reading the file
- The input is turned into raw bytes first. PEM blocks, bare base64, hex (including
30:82:…style), JSON or JWT headers carrying anx5carray, and binary DER files are all recognized. - Each object is classified by its structure (certificate, CSR, CRL, PKCS#7 bundle, public key) rather than by file extension, so a certificate named
.txtstill decodes.
Decoding and checking
- Every extension is decoded by name: basicConstraints, keyUsage, extended key usage, SAN, key identifiers, CRL and OCSP addresses, policies, name constraints, must-staple and embedded Certificate Transparency SCTs. Anything unknown is shown as raw ASN.1 instead of being hidden.
- Signatures are verified with WebCrypto for RSA (PKCS#1 and PSS), ECDSA on P-256, P-384 and P-521, and Ed25519. When a browser cannot verify an algorithm, such as Brainpool curves or MD5, the tool says so instead of guessing.
- Chains are built by matching issuer names and key identifiers, then each link is verified with the issuer’s real public key. Path length, CA flags and key usage are checked along the way.
- Fingerprints (SHA-1, SHA-256, SHA-384, SHA-512) are computed over the exact DER bytes. The SPKI pin is the SHA-256 of the public key structure, which stays the same when a certificate is renewed with the same key.
How to use it
- Paste PEM or base64 into the box, or drop one or more files. A private key mixed into a paste is removed automatically and never decoded or saved.
- Pick a certificate from the chips. Overview gives the verdict and the lint findings, Details and Extensions show every field, ASN.1 shows the raw structure, and Raw & export gives you PEM, DER, text and JSON.
- Open Chain to see the leaf-to-root order, which signatures verified, and what is missing. Download a correctly ordered
fullchain.pem. - Open Match & test to try a hostname against every certificate and to check a private key against what you loaded.
- Change “Check validity as of” in the sidebar to ask whether a certificate was, or will be, valid on a given date.
- Optionally add your own root certificates under Trust anchors to see whether a chain ends at a root you trust.
If the certificate came out of a JWT or JWK header, the JWT decoder shows the surrounding token. If it arrived as a long base64 blob that is really a file, the Base64 to file reconstructor turns it back into a .cer or .p7b first. When you need the list of hostnames in a certificate for a spreadsheet or a scan, send them straight to the Domain extractor from the Export tab. To check that a fingerprint you were given matches a downloaded file, the hash generator computes the same digests.
What the checks look for
- Dates: expired, not yet valid, expiring within 30 days, and lifetimes longer than the public-TLS limit for the issue date (398 days now, 200 days from 15 March 2026, 100 days from 15 March 2027, 47 days from 15 March 2029). The lifetime note is informational because private CAs are not bound by it.
- Algorithms and keys: SHA-1 or MD5 signatures, RSA under 2048 bits, tiny curves, even or factorable RSA moduli, unusual exponents, and EC points that are not on the curve.
- Names: no SAN, malformed wildcards, internal or private names, empty subjects without a critical SAN.
- Structure: CA certificates without basicConstraints or keyCertSign, mismatched signature algorithms, duplicate extensions, unknown critical extensions, negative or oversized serial numbers, and date encodings that break RFC 5280.
- Revocation: load a CRL for the same issuer and the decoder marks any certificate whose serial appears in it. The CRL’s own signature is verified when its issuer certificate is loaded.
Supported formats
| You have | Supported |
|---|---|
| PEM (certificate, trusted certificate, CSR, CRL, public key, PKCS#7) | Yes, including bundles with several blocks and stray text |
DER / .cer / .crt / .csr / .crl | Yes |
PKCS#7 .p7b / .p7c (including BER indefinite-length) | Yes, certificates and CRLs are extracted |
| Base64 or hex without headers | Yes |
JSON or JWT header with x5c | Yes |
PKCS#12 .p12 / .pfx | No. They hold private keys behind a password; the tool shows the openssl command to extract the certificates |
| Encrypted private keys | Not decrypted. They are rejected with an explanation |
Limitations
- Browsers cannot open raw TLS connections, so the tool cannot fetch a live website’s certificate for you. Run
openssl s_client(a copyable command is on the Export tab) and paste the result. - Browsers do not expose their built-in list of trusted roots. Chains are judged against the trust anchors you add yourself, otherwise they are only checked for correctness.
- Revocation is checked against CRLs you load, not against live OCSP servers, which mostly do not allow browser requests.
- MD5 fingerprints are not offered because WebCrypto does not provide MD5.
FAQ
How can I decode a certificate without OpenSSL?
Paste the PEM text (the part between -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----) or drop the file. The Raw & export tab also produces an openssl x509 -text style listing, so you can compare it with command-line output.
Is it safe to paste a certificate here, and what about private keys?
Certificates are public data, and nothing you paste or add is sent anywhere. If a private key ends up in the paste box, the tool strips it out, does not decode it and does not save it. The optional private-key checker on the Match & test tab compares only the public half, holds the key in memory for that page view and forgets it on refresh.
Why does it say the chain is incomplete?
Servers should send the leaf certificate plus every intermediate. If an intermediate is missing, some clients fail even though your browser works, because browsers can cache or download intermediates. The Chain tab names the missing issuer and shows the download address from the certificate’s Authority Information Access field when there is one, and it exports a correctly ordered chain once you add the missing certificate.
What is the SPKI pin and how is it different from the fingerprint?
The fingerprint hashes the whole certificate, so it changes at every renewal. The SPKI pin hashes only the public key, so it stays the same as long as you reuse the key. That makes it the value used for public key pinning, and a quick way to see that a certificate and a CSR use the same key.
How do I check that a certificate and private key match?
Load the certificate, then paste the private key into the checker on the Match & test tab. For RSA the moduli are compared; for EC and Ed25519 the derived public key is compared. A match means the pair belongs together; it does not prove the key is the one your server is using.
Why does a wildcard certificate not cover my bare domain?
A wildcard such as *.example.com matches exactly one label, so a.example.com matches but example.com and a.b.example.com do not. The hostname tester explains which case applies and what to add to the SAN.
Privacy
Almost everything is local. Decoding, signature checks, chain building, hostname matching, key matching and every export run entirely in your browser. Nothing you paste, drop or type is uploaded, and there is no account.
Your pasted text and added files are saved in this browser (IndexedDB) so a refresh does not lose your work. Private keys are never saved, and the sidebar has a Clear saved data button that removes everything.
Two optional features use the internet, and both are off every time the page loads until you tick them:
- DNS checks (CAA and TLSA): looks up DNS records through Cloudflare or Google’s DNS-over-HTTPS service, whichever you choose. Only the hostnames from the certificate are sent to that resolver.
- crt.sh lookup links: adds links to crt.sh, a third-party certificate transparency search. Nothing is sent unless you click a link, and then only the certificate fingerprint goes to crt.sh.
The first time you open the tool, only the page itself loads. No external script is downloaded for this tool.