Skip to content

BIMI Checker

BIMI publishes a DNS record pointing at your brand logo so participating mailbox providers can show it beside your messages. This checker reads the record at default._bimi, validates the logo and certificate URLs, and independently confirms the enforcing DMARC policy BIMI requires before any provider will display anything.

BIMI is a reward, not a control

Brand Indicators for Message Identification does nothing for security by itself. It is a small TXT record naming an image, and mailbox providers only look at it once a message has already passed authentication. The value of BIMI is that it gives an organisation a visible, commercial reason to finish a DMARC rollout that would otherwise stall at p=none — the logo appears only when the domain reaches enforcement.

That ordering matters when you are debugging. If the logo is not showing, the record is rarely the cause. Check the prerequisites first: an enforcing DMARC policy applying to 100% of mail, consistent SPF and DKIM passes with alignment on real traffic, and a sending reputation good enough that the provider chooses to display an indicator at all.

The record and its two tags

default._bimi.example.com. 3600 IN TXT "v=BIMI1; l=https://example.com/brand/logo.svg; a=https://example.com/brand/vmc.pem"
A complete BIMI assertion record
TagRequiredMeaning
v=BIMI1YesVersion. Must be the first tag or the record is ignored.
l=YesHTTPS URL of the logo, in SVG Tiny Portable/Secure format.
a=In practiceHTTPS URL of a PEM-encoded Verified Mark Certificate or Common Mark Certificate.
Read the full explanation of bimi checker results ↓

An empty l= is meaningful rather than broken: v=BIMI1; l=; is an explicit declination that tells participating providers this domain deliberately has no indicator. Use it on a subdomain that should never display a logo, such as a transactional-only sending domain, to stop providers inheriting one from the organisational domain.

The a= tag is technically optional in the specification but effectively mandatory in practice, because the two providers most people care about — Gmail and Apple Mail — both require a certificate. Fastmail and Zone historically displayed self-asserted logos without one. This checker reports a missing a= as a finding rather than an error, because the record is still valid; it just will not do much.

BIMI requires SVG Tiny Portable/Secure (SVG P/S), a deliberately restricted profile of SVG Tiny 1.2. It is not the SVG your design tool exports. The constraints exist because the file is rendered inside a mail client, where scripting or external references would be a security problem:

  • No <script>, no event handlers, no animation elements.
  • No external references — no linked images, fonts, or stylesheets. Everything must be inline.
  • The root element needs baseProfile="tiny-ps" and a version="1.2" attribute.
  • A <title> element is required and should contain the brand name.
  • Square aspect ratio, centred artwork, and a solid (non-transparent) background — providers crop to a circle or rounded square.
  • Kept small: under 32 KB is the usual working guidance, and smaller renders faster.
A file that ends in .svg and opens fine in a browser can still be rejected. Providers validate against the SVG P/S profile, not against "is this valid SVG". Convert with a purpose-built converter and check the output has baseProfile="tiny-ps" before publishing.

Both the logo and the certificate must be served over HTTPS with a valid certificate, from a host that does not require authentication and does not redirect through anything odd. Serve the SVG as image/svg+xml. Because providers fetch these URLs, keep them on infrastructure you control and expect to keep — a broken logo URL on an otherwise valid record just means no logo displays.

Verified Mark Certificates

A VMC is an X.509 certificate that binds your logo to a registered trademark, issued by a small number of certificate authorities after a verification process. A CMC (Common Mark Certificate) is the cheaper variant for marks that are not registered trademarks — it covers logos in prior use, and Gmail began accepting it later than VMCs. Either way the file at a= is a PEM bundle containing the certificate chain, and it embeds the exact logo it certifies.

The practical consequences: you cannot change your logo without reissuing the certificate, because the embedded copy would no longer match the file at l=. Certificates expire, typically annually, and an expired VMC stops the logo displaying with no other symptom. Put the expiry in the same calendar you use for your TLS certificates, and verify it the same way you verify those with the SSL certificate checker.

Why the logo is not showing

SymptomLikely cause
No BIMI record foundRecord published at the wrong name — it is default._bimi.example.com, not _bimi.example.com.
Record found, DMARC not enforcingp=none. BIMI requires p=quarantine or p=reject, applied to 100% of mail.
DMARC enforcing but pct is below 100A pct tag below 100 disqualifies the domain. Remove it or set pct=100.
Everything valid, still no logo in GmailMissing or expired VMC, an SVG that fails the P/S profile, or insufficient sending reputation.
Logo shows in some clients onlyNormal. Provider support varies, and each applies its own reputation threshold on top of the record.
Worked, then stoppedVMC expired, logo URL moved, or the DMARC policy was relaxed during an unrelated change.

Sending from a subdomain adds a wrinkle. Providers look for a BIMI record on the exact From: domain first, then fall back to the organisational domain. But the DMARC policy that applies to a subdomain may come from the parent's sp= tag — so a parent with p=reject; sp=none publishes an enforcing policy that does *not* enforce for the subdomain you are actually sending from. This checker reports both the policy source and any weakening sp= value.

Checking BIMI from the command line

# The BIMI assertion record (default selector)
dig +short default._bimi.example.com TXT

# The prerequisite: DMARC must be quarantine or reject at 100%
dig +short _dmarc.example.com TXT

# Fetch the logo and confirm it is really SVG Tiny P/S
curl -sS https://example.com/brand/logo.svg | head -3
# look for: baseProfile="tiny-ps" version="1.2"

# Fetch the VMC and read the trademark and expiry out of it
curl -sS https://example.com/brand/vmc.pem \
  | openssl x509 -noout -subject -enddate -ext subjectAltName
The record, its prerequisites, and the files it points at

The last command is the one to run before every renewal cycle. -enddate gives you the expiry, and the subject line carries the organisation name that was verified. If openssl cannot parse the file, providers cannot either — a common cause is a PEM bundle saved with Windows line endings or with the chain in the wrong order.

Non-default selectors are supported through a BIMI-Selector: header added to outgoing mail, letting you show a seasonal or campaign-specific logo. It is rarely worth the operational cost: each selector needs its own record, and any logo change needs a matching certificate. Start with default and stay there unless you have a concrete reason not to.

Frequently asked questions

Do I need a VMC for BIMI to work?
For Gmail and Apple Mail, yes — they require a Verified Mark Certificate or a Common Mark Certificate and will not display a self-asserted logo. Some other providers have shown logos without one. Since Gmail and Apple represent the bulk of most audiences, budget for the certificate or accept that most recipients will not see the logo.
What is the difference between a VMC and a CMC?
A VMC certifies a registered trademark and is the original, more expensive option. A CMC covers marks in prior use that are not registered trademarks, which makes BIMI reachable for organisations without a trademark portfolio. Both are issued by the same small set of CAs, and both go in the a= tag identically.
Why does my BIMI record validate but no logo appears?
A valid record is necessary, not sufficient. Work through it in order: is DMARC at quarantine or reject with no pct tag below 100; do real messages actually pass DMARC with alignment; is the VMC current; does the SVG conform to the Tiny P/S profile. After all that, providers still apply their own reputation threshold — a domain with poor sending history may authenticate perfectly and still not get an indicator.
Can I use a PNG or JPEG logo?
No. BIMI accepts only SVG Tiny Portable/Secure. Raster formats are rejected outright, and so is ordinary SVG that includes scripts, animation, or external references. Convert your artwork specifically to the tiny-ps profile and confirm the root element carries baseProfile="tiny-ps".
Does BIMI improve deliverability?
Not directly. Nothing about the BIMI record influences filtering decisions. The indirect benefit is real but comes from the prerequisite: reaching an enforcing DMARC policy genuinely improves how your mail is treated, and BIMI is often the argument that gets that work funded. Measure the improvement against DMARC enforcement, not against the logo.
Where exactly does the record go?
At default._bimi.<your-domain> as a TXT record — the selector label comes first, exactly as with DKIM. Publishing at _bimi.<domain> is the most common mistake and produces a record no provider will ever query.
I send from a subdomain. Do I need a separate record?
Not necessarily — providers fall back to the organisational domain's record. But check the DMARC side carefully: if the parent domain publishes sp=none, the subdomain is not under an enforcing policy and BIMI will not apply to it regardless of which record is found. Either remove the weakening sp= or publish an enforcing DMARC record on the subdomain itself.
How often does the certificate need renewing?
VMCs and CMCs are typically issued for one year. When you renew, the logo file must remain byte-identical to the one embedded in the new certificate, so treat any rebranding as a combined DNS, file, and certificate change rather than three separate ones. An expired certificate removes the logo silently, with no bounce and no report.