| Field | Value | Copy |
|---|---|---|
| {{ key }} | {{ value }} | |
| No decoded fields. | ||
| # | SAN value | Copy |
|---|---|---|
| {{ idx + 1 }} | {{ name }} | |
| No SAN entries found. | ||
A certificate signing request, or CSR, is the formal request a system sends when it wants a certificate issued. In PKCS #10 form it carries the subject name, the public key that should appear in the certificate, optional requested extensions, and a self-signature made with the matching private key.
That sounds simple until a renewal fails because the wrong hostnames were requested, the key profile is out of date, or an inherited request does not match the key pair you expected. For public TLS work, the requested Subject Alternative Name list usually matters more than the common name alone, because current service-identity rules look to SAN for the DNS names or IP addresses a certificate covers.
A readable decode is useful because a CSR asks for certificate content without guaranteeing that the request is sensible. The subject can look familiar while the SAN set is incomplete. The key can parse cleanly while still falling below current policy. A request can also be self-signed correctly and still be rejected by a certificate authority because the names, extensions, or validation evidence do not meet issuance rules.
The safest mental model is simple: a CSR is a signed request, not an issued certificate. A good review checks what identity is being asked for, what public key is attached, and which extra constraints or usages are being requested before the request leaves your system.
A PKCS #10 request has three high-level pieces. The first is the certification request information, which contains the subject name, the SubjectPublicKeyInfo block, and a set of attributes. The second names the signature algorithm. The third is the signature itself. That structure matters because most human review questions map directly to one of those parts: who the certificate is meant to represent, which public key is being bound, what extra extensions were requested, and whether the request was signed by the holder of the private key.
The attribute set is where many practical surprises live. A common attribute is extensionRequest, which can carry Subject Alternative Name values, key usage bits, extended key usage values such as serverAuth, and basic constraints. Another possible attribute is challengePassword. That password is defined in PKCS #9, but many current web PKI workflows do not depend on it, so its presence is something reviewers often want surfaced rather than ignored.
Identity review also has an important boundary. The subject distinguished name can include fields such as common name, organization, organizational unit, locality, state, country, and email address, but those fields do not all carry the same weight in every certificate profile. For publicly trusted TLS server certificates, current rules require SAN to be present with DNS names or IP addresses in the issued certificate, and modern service-identity guidance treats SAN as the authoritative source for host coverage. In private PKI or non-TLS uses, the local policy can be different, which is why a missing SAN is a strong warning for web server work but not universal proof of a bad request.
| CSR part | What it usually carries | Why people check it |
|---|---|---|
| Subject distinguished name | Common name plus optional O, OU, L, ST, C, and email values | Shows the requested identity wording and helps catch wrong organization or host labels. |
| SubjectPublicKeyInfo | The public key algorithm and key material | Confirms which key pair the future certificate would bind and whether the key profile still fits policy. |
| extensionRequest attribute | SAN values, key usage, extended key usage, and basic constraints when requested | This is where host coverage and intended certificate use often become obvious. |
| challengePassword attribute | An optional single password-style string | Useful to notice because many modern issuance flows do not need it, while older workflows sometimes still include it. |
| Self-signature | The algorithm identifier and signature over the request information | Shows that the requester possessed the private key at the time the CSR was created. |
Fingerprint fields answer a different question from the subject and SAN fields. They do not describe identity at all. They help you compare requests and public keys exactly. A whole-request digest changes whenever any part of the CSR changes. A SubjectPublicKeyInfo digest changes only when the public key changes. That makes the SPKI value useful when you want to confirm key continuity across a renewal even if the subject or SAN list has been edited.
The request review cues surfaced here are advisory rather than absolute policy checks. A weak hash or a small RSA key is a strong sign that the request should be regenerated. A missing SAN or a common name that does not appear in SAN is a strong sign of trouble for web server certificates. A present challenge password is not automatically invalid, but it is worth noticing because many teams did not intend to include it.
| Visible cue | Best first reading | Where it matters most |
|---|---|---|
| Signature does not verify | The request is not self-consistent with its embedded public key. | Treat it as a broken CSR and regenerate it before submission. |
| RSA key below 2048 bits | The key is below the modern 112-bit security floor used by current guidance. | Public TLS and other current security baselines usually expect a stronger key. |
| SHA-1 or MD5 signature digest | The request was signed with a legacy digest choice. | A fresh request should normally use a stronger digest family. |
| No SAN values or common name missing from SAN | The visible host identity may not match the requested service identities. | This is especially important for web server certificates. |
serverAuth without digitalSignature |
The requested usages do not line up well with common modern TLS certificate profiles. | Useful when the CSR is intended for a public-facing TLS endpoint. |
| Challenge password present | An extra CSR attribute was included. | Worth checking if the request came from an older generator or template. |
Start with the exact CSR you plan to submit, not a copied summary from another system. If you already have a standard PEM block, paste it directly. If you only have the base64 body, the decoder can wrap it in the normal certificate-request boundaries and try the parse from there.
The fastest first pass is to decode once, read the CSR Overview, then move through Request Anatomy and Subject Alternative Names. For a server certificate, the SAN tab deserves more trust than a familiar-looking common name. A request for www.example.com that leaves out example.com will still look neat at a glance while asking for the wrong coverage.
Key Algorithm, Key Size (bits), and SPKI SHA-256 (hex) with your expected inventory before you reuse it.This is a review surface, not a certificate-ordering workflow. The practical next step is to line up the SAN list and the public-key fingerprint with your issuance plan before you send the CSR to any issuer or automation pipeline.
CSR input, drop a text CSR file on the field, or use the upload control. If the field is empty, the page stops and asks for a PEM-encoded CSR.Decode CSR. When the parse succeeds, CSR Overview shows the common name, signature state, SAN count, and warning count.Request Anatomy and read Subject CN, Subject DN, Key Algorithm, Key Size (bits), Signature Alg., and the fingerprint rows first.Subject Alternative Names and confirm that every intended DNS name or IP address is present. If the list is empty or incomplete for your use case, stop there and rebuild the CSR.JSON when you want the full structured decode, and use the copy or download actions when you need a CSV, DOCX, PEM, DER, or JWK artifact for follow-up.BEGIN CERTIFICATE REQUEST and END CERTIFICATE REQUEST, or paste only the base64 body and try again. Raw binary DER uploads are not the dependable path here because the upload flow reads files as text.The three most important result groups are the identity fields, the warning list, and the fingerprint fields. Verified = Yes is a useful floor because it shows the request was signed with the matching private key, but it does not say anything about domain control, organizational approval, or whether an issuer will accept the request.
| Visible result | Best first reading | What to check next |
|---|---|---|
| Warnings = 0 | The request passed this page's structural and policy-style checks. | Still confirm that SAN coverage and key continuity match the real issuance plan. |
| Verified = No | The signature failed against the embedded public key. | Do not submit the request. Regenerate it from the original private key. |
| SAN count = 0 | No Subject Alternative Name values were requested. | For a web server certificate, rebuild the CSR with the full DNS or IP set you need. |
| SPKI SHA-256 changed | You are looking at a different public key, even if the subject text stayed similar. | Decide whether the renewal is meant to reuse the existing key or rotate it. |
| Challenge password present | The CSR includes an extra attribute beyond the basic identity and extension set. | Check whether that attribute was intentional or inherited from an older template. |
The common overread is to stop once the subject looks right and the signature verifies. The safer habit is to compare the SAN list and the SPKI fingerprint before making any trust decision. Those two checks catch many of the mistakes that turn into wrong-certificate deployments later.
A request for www.example.com decodes with SAN values for www.example.com and example.com, an RSA 2048 key, a SHA-256 signature digest, and no warnings. That is the pattern most teams hope to see during an ordinary web renewal: the requested names are explicit, the key profile is current enough, and the request is self-signed correctly.
A teammate hands over a CSR whose Subject CN is api.example.com. The request verifies, but the SAN list contains only internal-api.example.net, and the warning list notes that the common name is not listed in SAN. The fix is not to trust the familiar common name. The fix is to regenerate the request with the real service identities you intend to certify.
A file named request.der is uploaded and the decode does not succeed. The corrective path is to convert the request to a standard PEM block or paste the base64 body directly, then decode again and confirm that CSR Overview appears. In this flow, file uploads are read as text, so raw binary DER is the common reason a seemingly correct request still fails to parse.
The decode, verification, and fingerprint work happen in the browser, and this tool does not post the CSR to a helper endpoint. The important caveat is that changed input is mirrored into the page URL, so the request can still end up in browser history, copied links, or screenshots until you clear it.
The safest input is a standard PEM block using BEGIN CERTIFICATE REQUEST and END CERTIFICATE REQUEST, or the raw base64 body alone. If your source is raw DER or another non-text form, convert it to PEM first.
The JWK output is built only for RSA and EC public keys. If the parsed key cannot be expressed in that format here, the JWK actions stay absent.
Verified = Yes mean the issuer will approve the request?No. It only proves that the request was signed with the matching private key. It does not prove domain control, organization validation, or issuer acceptance.
Current TLS service-identity guidance and public web PKI rules rely on SAN for the DNS names or IP addresses a certificate covers. The common name can still be present, but it is not the field you should trust for host coverage.
Because structural validity and policy fit are different questions. A request can be signed correctly and still ask for weak key material, a legacy digest, missing SAN values, or an unexpected challenge password.