Back to blog
Threat Intel
Phishing Forensics

Postmortem: Why Your BIMI SVG Passed Converters but Failed in Gmail

When your BIMI logo drops silently at the receiver, the root cause is almost always buried deep within the XML syntax or the HTTP headers of your content delivery network.

MailSleuth Research
Email Security Team
September 25, 20267 min read
A magnifying glass inspecting glowing XML code and HTTP headers on a dark background.

You did everything exactly by the book. Your DMARC policy has been at p=reject for months, passing RFC 7489 alignment checks effortlessly across your sending infrastructure. You finally convinced the executive team to drop a few thousand dollars on a Verified Mark Certificate. You uploaded the brand logo to a highly rated online SVG converter, pasted the resulting URL into your DNS record, and waited for the magic to happen.

Forty-eight hours later, your test emails still arrive in Gmail with a generic gray initial circle instead of the corporate logo. The operational frustration is palpable because every single DNS checking utility confirms the BIMI record is perfectly valid and reachable.

This is the operational reality of Brand Indicators for Message Identification. Getting the DNS record right is only the first ten percent of the deployment job. The real friction lies in the payload itself. When you find your bimi svg not working despite perfect DMARC alignment and valid DNS syntax, the issue is almost always buried in the XML structure of the image file or the HTTP headers serving it to the receiver.

Beyond DMARC Alignment: The Tiny-PS Requirement

The core assumption most IT and security teams make is that a standard SVG file is just another flat image asset. In reality, Scalable Vector Graphics represent an XML-based document object model capable of executing arbitrary code, rendering external resources, and triggering complex animations. From a threat modeling perspective, allowing an untrusted XML file to render natively inside a webmail client is a massive attack surface. Historic vulnerabilities involving XML external entity injections and cross-site scripting have made email providers rightfully terrified of standard SVG files.

To mitigate this massive risk, the BIMI working group mandated a highly restricted subset of the standard known as SVG Tiny Portable/Secure, commonly referred to as Tiny-PS. This restrictive profile strips out almost everything that makes vector graphics dynamic, ensuring the payload is purely presentational. The file cannot call out to remote servers, it cannot execute scripts, and it cannot load external stylesheets.

Why Standard Design Tools Fail the Security Check

When your marketing or design team hands over a file exported directly from standard graphic design software, it is inherently non-compliant with BIMI standards. These applications prioritize visual fidelity and editing capabilities, injecting proprietary metadata, custom namespace declarations, and sometimes even base64-encoded raster fallback images directly into the XML tree.

Even if you run that raw file through an online converter that explicitly claims to output Tiny-PS, the automated scrubbing algorithms often fail. They frequently miss deeply nested proprietary tags or fail to update the base profile declaration correctly at the root level. When a receiver like Gmail or Yahoo parses the XML and encounters an unhandled tag, the validation routine immediately halts and silently drops the logo rendering entirely.

Manual XML Inspection and Structural Scrubbing

Relying blindly on automated conversion tools is a gamble you will usually lose. When the visual indicator fails to render in the inbox, you must open the file in a raw text editor and treat it like application source code. The root svg element is the first hurdle. It must explicitly declare the version attribute as 1.2 and the baseProfile attribute as tiny-ps. If these exact attributes are missing, or if they are set to older standard versions, the stringent security parsers at major mail providers will reject the document before reading line two.

The root <svg> element must contain version="1.2" and baseProfile="tiny-ps" while explicitly declaring the standard W3C namespace without proprietary extensions. — BIMI SVG Tiny-PS Implementation Guidelines

Once the root element is validated, the real forensic work begins. You must meticulously search the entire document tree for any banned elements. Interactive elements are explicitly forbidden. If a receiver finds an anchor tag linking out to a brand website, it rejects the file to prevent tracking and phishing vectors inside the email client. The same stringent rejection applies to script tags, which could theoretically be weaponized for session hijacking attacks against the webmail interface.

The Hidden Threat of Inline Styling

The most common culprit hiding in converted files is inline styling. Many vector rendering tools export graphics with a style block located at the top of the document, which then references CSS classes on the geometric paths below. The Tiny-PS specification explicitly prohibits this architecture. All styling must be applied via direct presentation attributes like fill and stroke on the geometric elements themselves.

If you see a style tag anywhere in the document, the file will fail validation. Furthermore, you must aggressively delete any custom XML namespaces. Tags beginning with application-specific prefixes or attributes defining external graphical states will cause the strict parser to throw a fatal error. The final document must contain nothing but the root node, a title tag for accessibility, and the pure geometric paths required to draw the logo.

CDN Headers and the Content-Type Trap

Let us assume you have manually scrubbed the XML perfectly. The base profile is completely correct, there are no style blocks present, and every visual path is explicitly declared with presentation attributes. You host the file on a cloud storage bucket behind a content delivery network and update your DNS text record. You wait the requisite time for DNS propagation, yet the logo still refuses to show up in any test messages.

This is where security engineers often waste days chasing nonexistent caching issues or questioning their DMARC alignment. The failure has absolutely nothing to do with the domain name system or the internal structure of the XML. It is entirely about how your web server delivers the payload over the HTTP protocol.

Validating the HTTP Response

Mail providers validate the HTTP headers of the remote image before they parse the body of the file. If the Content-Type header returned by the server is not exactly image/svg+xml, the validation routines treat the file as a potentially hostile misconfiguration and abort the transaction.

You can verify this behavior instantly from the command line using a basic curl command with the dash I flag to fetch only the HTTP headers. When you examine the raw server response, you might discover that your content delivery network is serving the pristine file as an application/octet-stream or as plain text/xml simply because the MIME type was not explicitly mapped in the underlying storage bucket configuration.

Gmail is notoriously unforgiving regarding this specific protocol detail. Their validation infrastructure expects the exact MIME type to be declared upfront. Modifying the object metadata in your storage provider to force the correct Content-Type header is a mandatory operational step that almost all automated setup guides fail to mention.

Validating Both Layers of the Stack

A proper deployment strategy requires treating the brand indicator as a distinct engineering release with its own testing lifecycle. You cannot simply rely on sending test emails to yourself and waiting to see what happens in the inbox. The feedback loop is far too slow and completely opaque.

You must validate the domain name system layer and the HTTP transport layer concurrently. The text record located at the default selector must point to a secure HTTPS uniform resource locator. The server responding to that specific address must return a perfectly formatted Tiny-PS payload, accompanied by the strict MIME type, while presenting a valid TLS certificate.

HTTP/2 200
Content-Type: image/svg+xml
Content-Length: 4096
Strict-Transport-Security: max-age=31536000 — Expected Curl Response Headers for BIMI Assets

If your organization requires a Verified Mark Certificate to satisfy the strict requirements of providers like Gmail and Apple Mail, the operational complexity doubles. You now have a privacy-enhanced mail formatted certificate chain that must exactly match the public key associated with the registered trademark. That certificate file must also be hosted securely and served with the appropriate headers. A single misconfiguration in either the certificate hosting or the logo hosting will result in a total, silent failure at the receiver end.

The takeaway

Fixing a broken deployment is an exercise in precise, unforgiving technical debugging. It requires stepping entirely away from graphical interfaces and digging directly into XML namespaces, HTTP response headers, and RFC specifications. The automated converters available online are fine for generating a rough baseline file, but they cannot replace the manual verification required to satisfy the stringent security parsers at major mail providers. You have to assume the file is broken until you prove otherwise through manual inspection.

If you are exhausted by silent inbox failures and ambiguous vendor documentation, this is exactly the type of edge case MailSleuth.AI is built to monitor. We expose the exact authentication and alignment failure modes directly from the receiver perspective, allowing you to stop guessing about XML profiles and start fixing the actual broken headers holding your brand back.

#bimi#email-forensics#dmarc#svg-tiny-ps#dns
MailSleuth Research
Email Security Team

We dissect phishing campaigns and email infrastructure so you don't have to.