CAA Record Checker
This CAA record checker shows which certificate authorities may issue for a domain, as a CA reads it: parents, CNAMEs, wildcards and its certificates.

The verdict, per CAWho may issue, with each CA's mark, and the chip row for TLS, wildcard, S/MIME and mark certificates.Your certificatesThe certificates in use, from the Certificate Transparency logs, read against today's CAA: a CA it would refuse is named first.How a CA reads itThe climb from the name to its TLD: where the records were found, the names a CA never asks, and every CNAME on the way.ViewsEvery CA's verdict, each record in plain words with fixes, the authoritative servers and the commands to check it yourself.What is a CAA record?
A CAA record (Certification Authority Authorization, DNS type 257) names the certificate authorities that may issue certificates for a domain. Before issuing, every CA must look for one; if a set applies and doesn't name that CA, it must refuse.
Each record holds one property: a flags number, a tag and a value. issue names a CA for certificates, issuewild for wildcards, iodef an address for reports. A name can hold many records, and the tags may repeat: one record per CA.
CAA is optional. With no record anywhere up the tree, any CA may issue. It binds CAs when they issue, not browsers: a certificate already issued stays valid when the records change.
How do CAs look up CAA?
A CA asks for CAA at the exact name first. If it finds nothing, it asks the parent, then the parent's parent, up to and including the top-level domain (never the root), and applies the first set it finds. For *.example.com it starts at example.com.
CNAMEs are followed at each name, so a name that aliases to a CDN gets the CDN's records. But the climb then goes on from the name's own parent, never from the alias target's: a host's parents don't leak onto its customers. RFC 6844, the older version, did climb the target's parents, and a few CA documents still describe that.
This is why dig CAA alone can mislead: it shows only the name you ask. The checker shows every step, and the names a CA never asks because it stopped above them.
- www.shop.example.comtypedno CAA
- shop.example.comCNAME to stores.example.netstores.example.netCAA here: applies
0 issue "digicert.com"example.net never asked: an alias target's parent - example.comnot asked · 0 issue "letsencrypt.org"
- comnot asked
- .the root is never asked
issue vs issuewild
issue covers a name and its wildcards. issuewild covers wildcard certificates only, and once one issuewild record exists, the issue records stop counting for wildcards. An issuewild record alone leaves the bare name open to any CA.
So add issuewild only when wildcards need different CAs, or issuewild ";" to forbid them. A wildcard deeper down, like *.shop.example.com, follows the same set when shop.example.com has no CAA of its own.
Some CAs add the bare name to a wildcard order (*.example.com and example.com), so an issuewild-only grant can still fail there: the bare name needs issue too.
| Records at example.com | example.com | *.example.com | *.shop.example.com |
|---|---|---|---|
0 issue "letsencrypt.org" | Let's Encrypt | Let's Encrypt | Let's Encrypt |
0 issue "letsencrypt.org"0 issuewild "digicert.com" | Let's Encrypt | DigiCert | DigiCert |
0 issuewild "digicert.com" | any CA | DigiCert | DigiCert |
0 issue "letsencrypt.org"0 issuewild ";" | Let's Encrypt | no CA | no CA |
Which CAA value does my CA or host need?
Each CA publishes the domain it reads in CAA: letsencrypt.org for Let's Encrypt, pki.goog for Google Trust Services, digicert.com for DigiCert. A host or CDN needs the CAs it gets certificates from, which its own docs list.
The CCADB collects every publicly trusted CA's values in its List of CAA Identifiers; the CAs fill it in themselves, so a few spell them oddly. Where a CA's own page differs, both are shown. Retired and distrusted CAs aren't offered: Buypass stopped issuing TLS certificates, and Chrome and Mozilla no longer trust new Entrust ones.
| Host or CA | issue values | Wildcards | Note |
|---|---|---|---|
| Cloudflare | letsencrypt.orgpki.goog; cansignhttpexchanges=yesssl.comsectigo.com | same as issue | Adds records for its own CAs once any CAA record exists (hidden in its dashboard). Sectigo is used for backup certificates only (Cloudflare's certificate-authorities page). |
| Cloudflare for SaaS | pki.goog; cansignhttpexchanges=yesletsencrypt.orgssl.comany one | not stated | |
| Cloudflare Pages | letsencrypt.orgpki.goog; cansignhttpexchanges=yesssl.com | same as issue | |
| AWS Certificate Manager | amazon.comamazontrust.comawstrust.comamazonaws.comany one | same as issue | ACM ignores iodef. |
| Google Cloud | pki.googletsencrypt.org | not stated | Per-project DNS authorizations use pki.goog only. |
| Firebase Hosting | letsencrypt.orgpki.goog | not stated | |
| Azure App Service | digicert.com | no CA | The free certificate doesn't cover wildcards. |
| Azure Front Door | digicert.com | not stated | |
| Vercel | letsencrypt.org | not stated | Adds a Let's Encrypt record at the apex on its own DNS. When an issuewild record exists it must also permit Let's Encrypt. A name that CNAMEs to Vercel picks up Vercel's own CAA. |
| Netlify | letsencrypt.org | not stated | |
| GitHub Pages | letsencrypt.org | not stated | |
| Fastly | certainly.comletsencrypt.orgglobalsign.comany one | not stated | |
| Shopify | letsencrypt.orgpki.goog; cansignhttpexchanges=yesssl.com | not stated | Already permits its CAs on domains it manages. Restricting parameters such as accounturi or validationmethods can still block Shopify. |
| Squarespace | letsencrypt.org | not stated | |
| Wix | remove CAA records | not stated | Wix says CAA isn't supported and asks pointed domains to remove their CAA records. |
| Heroku | letsencrypt.org | not stated | |
| Render | letsencrypt.orgpki.goog | same as issue | |
| Fly.io | letsencrypt.org | not stated | |
| WP Engine | letsencrypt.orgpki.goog; cansignhttpexchanges=yesssl.com | same as issue | |
| Akamai | letsencrypt.orgdigicert.com | not stated | Akamai prints no CAA values: these are the CAs' own (Let's Encrypt, DigiCert). |
| Bunny.net | letsencrypt.org | not stated | |
| DigitalOcean load balancers | letsencrypt.orgpki.googany one | not stated | |
| DigitalOcean App Platform | letsencrypt.orgpki.goog | not stated | |
| Google Sites | letsencrypt.org | not stated | |
| Webflow | letsencrypt.orgpki.goog; cansignhttpexchanges=yes | not stated |
| Host or CA | issue values | Wildcards | Note |
|---|---|---|---|
| Let's Encrypt | letsencrypt.org | not stated | |
| Google Trust Services | pki.goog | not stated | |
| SSL.com | ssl.com | same as issue | |
| GlobalSign | globalsign.com | not stated | |
| ZeroSSL | sectigo.com | not stated | ZeroSSL's certificates are issued by Sectigo; zerossl.com is no CAA value. |
| DigiCert | digicert.com | not stated | |
| Sectigo | sectigo.com | same as issue | Sectigo doesn't support parameters that restrict issuance further. |
| GoDaddy | godaddy.comstarfieldtech.comany one | not stated | |
| Certum | certum.plcertum.euany one | same as issue |
- Buypass: Buypass stopped issuing TLS certificates; its last ones expired by 2026-10-31.
- Entrust: Chrome and Mozilla stopped trusting new Entrust TLS certificates (from November 2024); the CAA value Entrust-branded certificates need today isn't confirmed from a primary page.
- Azure CDN from Microsoft (classic): Managed certificates ended; the last were valid until April 14, 2026.
- Azure Front Door (classic): Classic no longer offers managed certificates.
Generate a CAA record
List one issue record per CA you use, each with flags 0, at the apex. Leave out issuewild unless wildcards need other CAs, and add iodef only if you want reports. The Generate tab writes the set and each DNS host's own form.
Before publishing, check the CAs behind your current certificates: a set that leaves one out makes its next renewal fail. The generator warns about that before the Copy button, using the Certificate Transparency logs.
DNS hosts name the fields differently: Cloudflare asks for a tag and a CA domain name, Route 53 wants each line in one value box, and a few hosts' forms can't hold parameters or a ; record.
example.com. 3600 IN CAA 0 issue "letsencrypt.org" example.com. 3600 IN CAA 0 issue "pki.goog" example.com. 3600 IN CAA 0 iodef "mailto:security@example.com"
Cloudflare
| Name | Tag | CA domain name |
|---|---|---|
@ | issue | letsencrypt.org |
@ | issue | pki.goog |
@ | iodef | mailto:security@example.com |
Amazon Route 53
Value
0 issue "letsencrypt.org" 0 issue "pki.goog" 0 iodef "mailto:security@example.com"
What does the CAA critical flag (128) do?
Flags 128 marks a record critical: a CA that doesn't understand its tag must refuse to issue. On a tag no CA knows, it blocks every CA, including the ones the issue records name. Keep flags at 0 unless you mean that.
Only the top bit counts. The other bits are reserved and ignored when read, so 130 still reads as critical and 1 reads as 0. Some DNS hosts' forms label the flag as 1 or 0: the critical bit is the value 128 on the wire.
flags 0 on an unknown tag
0 issue "letsencrypt.org"0 tbs "Unknown"Let's Encrypt may issue
flags 128 on an unknown tag
0 issue "letsencrypt.org"128 tbs "Unknown"every CA must refuse
000000000not critical100000001not critical12810000000critical13010000010critical
What if my DNS can't answer CAA?
A CA can't skip a CAA lookup that fails. On a DNSSEC-signed zone every failure is a refusal. On an unsigned zone a CA may treat it as permission, but only after retrying, and many CAs refuse on any error.
A nameserver doesn't need to know CAA: it only has to answer NOERROR with no records. Failures usually come from DNSSEC signatures that break on empty answers, servers that answer NOTIMP or REFUSED to an unknown type, and firewalls that drop it (a timeout).
Lock CAA to your ACME account
Add accounturi to an issue record and only that ACME account may get certificates from the CA; add validationmethods and only those methods count. Every TLS CA must honour both from 15 March 2027. Until then, only some say they do.
A record with two accounturi values, or one that isn't a URI, authorizes nobody. The account URI is public, so anyone can see which domains share an account. A lock at a CA that doesn't enforce it does nothing yet.
| CA | Says it enforces locks | Methods it lists |
|---|---|---|
| Certum | yes | http-01ca-tbr-19dns-01ca-tbr-7ca-tbr-18ca-tbr-4 |
| Google Trust Services | may | – |
| Let's Encrypt | yes | http-01dns-01tls-alpn-01 |
| Sectigo | no | – |
| 62 other CAs | doesn't say |
Every TLS CA from March 15, 2027
Does CAA cover S/MIME and mark certificates?
Yes, but not through issue. S/MIME certificates answer only to issuemail, and BIMI mark certificates (VMC and CMC) only to issuevmc. A set with issue records alone leaves both open to any CA.
The tags share one set, so a critical flag on one kind's tag can block a CA of another kind. CAs check issuemail since 2025 and list their values in their policy documents.
0 issue "letsencrypt.org" | 0 issue "letsencrypt.org"0 issuemail "sectigo.com"0 issuevmc "digicert.com" | |
|---|---|---|
| TLS certificate | decided by issueLet's Encrypt | decided by issueLet's Encrypt |
| Wildcard | decided by issueLet's Encrypt | decided by issueLet's Encrypt |
| S/MIME (alice@example.com) | decided by issuemailany CA | decided by issuemailSectigo |
| Mark certificate (BIMI) | decided by issuevmcany CA | decided by issuevmcDigiCert |
CAA record questions
How do I check for CAA records?
dig CAA example.com +short shows the records at one name only, so run it for each parent too, since a CA keeps climbing until it finds a set.What happens if a domain has no CAA record?
Do CAA records apply to subdomains?
What CAA record does Let's Encrypt need?
0 issue "letsencrypt.org". That one record covers the name and its wildcards unless you also publish issuewild records, which must then name letsencrypt.org too. To lock it to your account, add ; accounturi= with the account URL your ACME client shows, and optionally validationmethods=dns-01 or http-01.Does a CAA record affect existing certificates?
What is iodef in a CAA record?
mailto: or an https: URL. CAs aren't required to send one, many don't, and it isn't an alert service. It never restricts issuance, so a set with only iodef records lets any CA issue.How long does a CAA change take to apply?
Why does my CAA lookup fail with SERVFAIL?
Missing something?Suggest a feature or a new tool
Related tools
SSL Certificate Check
Verify SSL certificate validity and security details
Certificate Decoder
Decode an SSL certificate or a whole chain: every field, each link checked, trust in the 4 browser root stores, PEM and DER
DNS Lookup
Every DNS record from the domain's own nameservers, beside Google's and Cloudflare's cache
NS Lookup
Discover nameservers for any domain with provider detection
DNS Health Check
Grade a domain's DNS: delegation, nameservers, SOA, DNSSEC and mail in 40 checks
Subdomain Finder
Discover all subdomains of any domain