CSR Decoder
Before a Certificate Authority signs a TLS certificate, you hand them a Certificate Signing Request (CSR), a blob of base64 that contains the subject you want on the cert and your public key, plus a signature proving you hold the matching private key. This decoder takes a PEM-encoded CSR and shows you its subject fields and public key parameters, so you can check the Common Name, the organisation and the key size before submitting it to a CA.
How to decode a CSR
-
1
Paste the CSR
Include the `-----BEGIN CERTIFICATE REQUEST-----` and `-----END CERTIFICATE REQUEST-----` markers. Whitespace is tolerated.
-
2
Run the decoder
The request is parsed and its subject fields and public key are read out.
-
3
Review the output
Check the subject fields such as the Common Name and the organisation, plus the key algorithm and size.
-
4
Act on the result
If the subject or the key looks wrong, regenerate the CSR before handing it to a CA.
What the decoder shows
A CSR is an ASN.1 structure (PKCS #10). The decoder reads two things from it:
- Subject: the Distinguished Name fields that were requested, typically the country (C), organisation (O), organisational unit (OU), locality (L), state (ST) and common name (CN).
- Public key: the algorithm (RSA, EC, DSA) and the key size in bits.
The signature inside the CSR is what proves to the CA that the submitter holds the matching private key. This decoder does not display it; the CA verifies it when the request is processed.
Example output
For a typical domain certificate request, the output looks like this:
Subject: commonName=www.example.com, organizationName=Example Inc., countryName=US
Key bits: 2048
Key type: RSA
The exact attribute names in the subject depend on how the request was generated.
Fields to double-check
- Common Name (CN): should be the primary hostname. Modern browsers ignore CN and look only at SANs, but many CAs still require a valid CN.
- Country (C): 2-letter ISO code (US, GB, DE), not a full name. CAs reject wrong codes.
- Key size: RSA 2048 is the floor; 3072 or 4096 for higher security. ECDSA P-256 is a good modern alternative and produces a smaller cert.
About Subject Alternative Names (SANs)
The decoder shows the subject of the request but not the SAN extension. Browsers match certificates against SANs rather than the CN, so if the certificate needs extra hostnames, include them when the request is generated, for example:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr -addext "subjectAltName=DNS:example.com,DNS:www.example.com"
When the decoder cannot parse the CSR
The most common causes are a truncated or broken PEM block:
- Truncated text: re-paste the complete block including both markers.
- Inserted line breaks: paste the block exactly as it was generated.
- Wrong content: a public key, certificate or private key pasted by mistake will not parse as a CSR.
Generating a certificate request
A CSR is always generated alongside a private key. Typical command:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr
Or for ECDSA:
openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout example.key -out example.csr
Guard the private key; if it leaks, the certificate must be revoked.
Frequently Asked Questions
A CSR contains only public information (subject fields and public key) plus a signature, so it is safe to share with a CA or paste into a decoder. What must stay secret is the matching private key.
No. This decoder expects the text PEM form with BEGIN/END CERTIFICATE REQUEST markers. To use a binary DER request, convert it to PEM first, for example with openssl req -in request.der -inform DER -out request.pem.
No. Most public CAs (Let’s Encrypt, DigiCert, Sectigo) only require CN and SANs; they ignore O, OU, L, ST, C for domain-validated certs. Organisation-validated and Extended-Validation certs verify those fields separately.
Most often because the pasted text was truncated or had line breaks inserted, or because a key or certificate was pasted instead of a CSR. Re-paste the complete block between the two markers.
Related Tools
ASCII Table Reference
Full ASCII table from 0 to 127 with decimal, hex, octal, binary, standard names and HTML numeric-reference notation, including NUL, LF and DEL.
HEX Color Picker
Pick or enter a HEX colour and get RGB, HSL, approximate CMYK, relative luminance and contrast ratios against white and black.
Color Palette Generator
Generate monochromatic, analogous, complementary, triadic or tetradic color palettes from a base HEX color and export copy-ready CSS variables.
HTML Character Reference
Searchable list of HTML entities, their named and numeric codes, and a one-click copy for special characters and symbols.
FPS Counter
Measure browser FPS with requestAnimationFrame, smoothing, min/max frame rate, warnings and an optional graph. Runs locally with no upload or API.
JSON Formatter
Paste JSON to pretty-print with 2 or 4 spaces, minify it to compact output, or run a quick syntax check before copying the result.