Converting your logo to SVG Tiny PS for BIMI
BIMI requires the SVG Tiny Portable/Secure profile. What that profile forbids, how to convert a normal SVG, and the validation errors you will likely hit.

On this page(8 sections)
- Why BIMI uses a restricted SVG profile
- What the profile forbids
- Design decisions before you touch code
- Converting step by step
- 1. Export a clean SVG
- 2. Strip what is not allowed
- 3. Fix the root element
- 4. Simplify paths and reduce size
- 5. Validate
- Hosting the file
- Common conversion mistakes
- Checklist
- Bottom line
Your designer exports a perfectly good SVG logo, you point your BIMI record at it, and every validator rejects it. The file is not broken.
It just is not written in the narrow dialect BIMI requires, SVG Tiny Portable/Secure, and getting there takes a few deliberate edits.
Why BIMI uses a restricted SVG profile
A BIMI logo is fetched by a mailbox provider and rendered inside an inbox that millions of people use. Full SVG is a large format: it can run scripts, pull in external resources, animate, embed other images and reference fonts. Any of those features in an untrusted file is a security and consistency problem for the provider.
SVG Tiny Portable/Secure, usually shortened to SVG Tiny PS, is a profile built on SVG Tiny 1.2 that removes the risky and unpredictable parts. The BIMI working group published it so that every provider renders logos the same way and none of them executes anything from a sender's file.
What the profile forbids
The specific rules are long, but the ones that break real logos are predictable:
| Not allowed | Why it shows up in exports |
|---|---|
script elements and event handlers |
Rare in logos, but some tools add them |
External references (xlink:href to URLs, external CSS, web fonts) |
Fonts and linked assets from design tools |
Embedded raster images (image elements, base64 PNG) |
Logos that include a photo or texture |
| Animation elements | Animated brand marks |
x and y attributes on the root svg element |
Default in some exporters |
| Interactive features and foreign objects | Generated by web-oriented tools |
The profile also requires a few things that ordinary exports often lack:
- The root element must declare
version="1.2"andbaseProfile="tiny-ps". - A
titleelement containing the brand name must be present as a child of the root. - A
viewBoxshould define the coordinate system; fixed pixel widths are unnecessary.
Design decisions before you touch code
Before converting, settle the artwork itself, because BIMI displays logos small and often cropped:
- Square canvas. Many clients mask the logo into a circle. Use a square
viewBoxand keep the mark centered with some padding so nothing important is clipped. - Solid background. A transparent background can disappear against dark mode. Put a filled rectangle or circle behind the mark in your brand color or white.
- Simple shapes. At avatar size, fine detail and small text become noise. A symbol or monogram usually works better than a full wordmark.
- Convert text to paths. Fonts cannot be referenced, so any lettering must be outlined into vector paths in your design tool.
If the logo is part of a Verified Mark Certificate application, the SVG you publish must match the mark represented in the certificate, so make the design decisions once and keep the file stable.
Converting step by step
1. Export a clean SVG
From your design tool, export with text outlined, no embedded images, no linked assets and minimal metadata. Then open the file in a text editor. Exports are often full of editor-specific namespaces and comments you will remove anyway.
2. Strip what is not allowed
Remove:
- Editor namespaces and metadata blocks (for example, attributes from illustration tools).
- Any
script,foreignObject,animateorimageelement. xandyattributes on the rootsvg.styleblocks that import fonts or external resources. Inline presentation attributes such asfillare fine.
3. Fix the root element
A compliant root element and title look like this:
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny-ps"
viewBox="0 0 512 512">
<title>Example Inc</title>
<rect width="512" height="512" fill="#0B3D91"/>
<path fill="#FFFFFF" d="M136 136h240v60H196v40h150v60H196v80h-60z"/>
</svg>
Note the absence of width, height, x and y on the root. The viewBox is square, the background is a filled rect, and the mark is a single path.
4. Simplify paths and reduce size
Run the file through an SVG optimizer to merge paths and drop redundant precision, but configure it carefully. Default optimizer settings can remove the title element or the baseProfile attribute, which you need. Re-check those two things after every optimization pass.
BIMI guidance recommends keeping the file small, on the order of tens of kilobytes. A simple mark is usually a few kilobytes.
5. Validate
Use a BIMI validator or an SVG Tiny PS checker. Several free web-based BIMI inspectors check record syntax and logo compliance together. Fix each error and re-run. The most common remaining errors after a first pass are a missing title, a leftover x/y on the root, and an optimizer having removed baseProfile.
Hosting the file
The logo must be served over HTTPS from the URL in the l= tag of your BIMI record:
default._bimi.example.com. TXT "v=BIMI1; l=https://example.com/brand/logo.svg; a=https://example.com/brand/vmc.pem"
Hosting tips:
- Use a stable path that will survive website redesigns. A dedicated path like
/brand/logo.svgis safer than a build-hashed asset URL. - Serve the right content type.
image/svg+xmlis the expected MIME type. - Avoid redirects and bot protection. Mailbox providers fetch the file automatically; challenge pages and login walls break that.
- Keep it public. No authentication, no geographic blocking.
curl -sI https://example.com/brand/logo.svg
# HTTP/2 200
# content-type: image/svg+xml
Common conversion mistakes
- Leaving text as text. Without the font, receivers cannot render it, and the profile disallows font references.
- Embedding a PNG inside the SVG. This is the quickest way to make a vector file that is not really vector, and it is forbidden.
- Transparent background. Technically allowed in some validators' eyes but visually unreliable; use a solid fill.
- Optimizing after validating. Always validate the exact file you publish.
- Changing the logo after getting a certificate. A VMC or CMC is tied to the mark; a redesign means a new certificate.
Checklist
- Square artboard, centered mark, solid background, text converted to paths.
- Root element with
version="1.2"andbaseProfile="tiny-ps", a squareviewBox, noxory. - A
titleelement with the brand name. - No scripts, animation, raster images or external references.
- Optimized, then re-validated.
- Served over HTTPS as
image/svg+xmlat a stable, public URL.
Bottom line
BIMI rejects most logo exports because SVG Tiny PS is a deliberately small subset of SVG. Settle the design for small, circular display, outline the text, strip forbidden elements, fix the root attributes, add a title, and validate the exact file you host. Done once carefully, the file rarely needs to change again.
Start with Koltrix
Your domain, one inbox, and an API that sends.
A team inbox where AI sorts and drafts (nothing is sent without your click), plus the transactional API and SMTP relay your product sends with. 7 days free, no card.

