Logo requirements
Specific SVG requirements to be valid for BIMI
BIMI doesn't accept a regular PNG or JPEG export of your logo. Your logo must be encoded as an SVG that conforms to a specific, restricted profile of the format called SVG Tiny Portable/Secure (SVG Tiny P/S). This guide explains what that means, what's acceptable and what isn't, and provides some examples of logos to help guide how to optimize yours for BIMI
It's best to have a designer you're working with create a logo specific for BIMI use. You can send them a link directly to this guide. Using an existing logo but saved as or exported as SVG may result in a logo that is not acceptable.
What is SVG Tiny P/S?
A regular SVG file is really just XML, which means it can contain things like embedded scripts, links to external resources, animations, and even raster images (like a JPEG hidden inside the file). That flexibility is a problem for BIMI, because your logo is a file that email clients fetch and render directly inside a recipient's inbox. If arbitrary SVGs were allowed, a malicious actor could use them to track opens, load different content after the fact, or otherwise abuse the trust BIMI is meant to establish.
SVG Tiny P/S is a locked-down profile, defined by the AuthIndicators Working Group, that strips out all of that. It's based on the older SVG Tiny 1.2 specification, with additional restrictions on top. The result is a format that can only describe static self-contained vector art.
What's required
At a minimum, your SVG file needs to:
- Declare the correct profile. The
<svg>element must includeversion="1.2"andbaseProfile="tiny-ps". - Include a
<title>element. This is required by the spec and is typically your brand name. - Use a square canvas. Your
viewBoxshould have equal width and height (e.g.viewBox="0 0 120 120"). Non-square logos will be rejected or distorted. - Have a solid background. The canvas should be filled edge-to-edge with a solid color, not left transparent. See below for why this matters.
- Be entirely self-contained. No links to external stylesheets, fonts, images, or scripts. Every color, shape, and style needs to be defined inline in the file itself.
Many email clients, including Gmail, crop your logo into a circle when displaying it. Keep the important parts of your mark inside a centered circular "safe zone," not out near the corners of the square canvas, or they'll get clipped.
What is and isn't acceptable
| Category | Acceptable | Not acceptable |
|---|---|---|
| Background | Solid fill color, edge-to-edge | Transparent background, gradients that shift depending on the client |
| Artwork | Flat vector shapes and paths | Embedded raster images (JPEG/PNG), photographic detail |
| Interactivity | None | <script> tags, onclick/hover handlers, animation (<animate>, SMIL) |
| External references | None — everything defined inline | Linked web fonts, xlink:href to remote images, @imported stylesheets |
| Text | Converted to outlines/paths | Live <text> elements (font rendering isn't guaranteed across clients) |
| Shape | Square canvas (1:1) | Rectangular, portrait, or landscape canvases |
| Detail level | Simple mark, monogram, or icon | Fine detail, small text, or complex illustration that won't hold up at ~20–40px |
Most of these rules exist because of the security restrictions in SVG Tiny P/S, but a few, like keeping the design simple, aren't strictly required by the spec. They're just good practice, since your logo will often be displayed at a very small size in an inbox list.
Good examples
Simple marks with a solid, edge-to-edge background color tend to work best. A few examples:
Each of these uses one or two flat shapes, one or two colors, and a background that fills the entire canvas. Nothing here depends on a font, an external file, or fine detail that would disappear at inbox scale.
Here's what the source for the first one looks like:
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.2" baseProfile="tiny-ps" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 120 120">
<title>Northloop Financial</title>
<rect width="120" height="120" fill="#14335c" />
<circle cx="60" cy="60" r="26" fill="none" stroke="#ffffff" stroke-width="10" />
</svg>An example that would be rejected
For comparison, here's the kind of file that looks reasonable at a glance but fails SVG Tiny P/S:
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="120">
<defs>
<linearGradient id="bg">
<stop offset="0%" stop-color="#14335c" />
<stop offset="100%" stop-color="transparent" />
</linearGradient>
</defs>
<rect width="300" height="120" fill="url(#bg)" />
<image href="https://example.com/photo.jpg" width="120" height="120" />
<text x="140" y="65" font-family="Brand Sans">Northloop</text>
<script>console.log('loaded')</script>
</svg>This fails for several reasons:
- Wrong profile declaration — it's missing
baseProfile="tiny-ps"and usesversion="1.1"instead of1.2. - Non-square canvas —
300x120isn't a 1:1 aspect ratio. - Transparent, gradient background — the fill fades to
transparent, so the logo will look different depending on what the email client renders behind it. - Embedded remote image —
<image href="https://example.com/photo.jpg">pulls in an external raster file, which isn't allowed. - Live text with a custom font —
font-family="Brand Sans"won't render consistently (or at all) if the recipient's client doesn't have that font. - A
<script>tag — scripting of any kind is disallowed outright.
Validating before you submit
Before you send your SVG off to a Certificate Authority, it's worth validating it against the SVG Tiny P/S profile. Most CAs run this validation as part of certificate issuance and will reject files that don't conform, but catching problems yourself first avoids a slow round trip during an already lengthy verification process.
The BIMI group has a free tool to validate your logo is acceptable for BIMI use: