Base64 Image in Gmail Signature Not Working? Why & the Fixes

You built a signature with an embedded logo — <img src="data:image/png;base64,..."> — and it looked right when you pasted it into Gmail's signature box. Then you sent a test email and the logo was gone: blank space, a broken-image icon, or nothing at all. This is expected Gmail behavior, not a glitch. Gmail does not render Base64 data URI images in signatures (or in received mail generally), and its signature editor was never built to accept raw HTML. Here is what is happening and the two fixes that work.

Why Base64 fails in Gmail signatures

Three separate mechanisms work against a Base64 signature logo in Gmail:

None of these can be turned off with a setting. The fix is to stop shipping Base64 in the signature — not to shrink it and hope.

The 10,000-character trap

Gmail caps signatures at about 10,000 characters — tags, inline styles, URLs and Base64 strings all count. The math is unforgiving:

How to check: open Settings → See all settings → General → Signature, click into the signature box, select all, and paste into any character counter. Over 10,000 = that is your problem. The fix: replace the Base64 string with a hosted image URL — one <img> line is ~80 characters instead of 8,000+ — and keep lean signatures under ~5,000 characters.

Fix 1: Upload the logo in Gmail's signature editor (recommended)

  1. Open Settings → See all settings → General → Signature (or the quick settings panel).
  2. Create or edit your signature, click the image icon in the editor toolbar, and choose Upload from computer.
  3. Size it with the Small / Medium / Large options, save changes at the bottom, and send a test to another inbox to confirm it renders.

Why this works: Gmail re-hosts the uploaded file on Google's own servers and rewrites the signature to reference that copy. That is why Gmail-to-Gmail signature logos display reliably even though Gmail strips your hand-made data URIs — the hosted copy is a normal image URL by the time the mail is sent.

Gotcha: if you upload "from URL" instead of your computer, Gmail depends on the original source staying reachable. If that source later 404s, the signature breaks for new sends (old sent copies may still show it, masking the regression). Always upload the file itself.

Fix 2: Use a hosted HTTPS image URL

For teams that manage signature HTML through Workspace tooling or a mail-merge system, hosting the logo yourself is the standard:

Diagnosis checklist

  1. Shows in the editor, gone in sent mail? Classic data-URI stripping (or raw-HTML serialization). Apply Fix 1.
  2. Signature completely missing, not just the image? Plain-text mode strips all HTML — check the three-dot menu in the compose window. Also check that you are editing the signature for the right send-as alias: each alias has its own signature slot, and "Signature defaults" must be set per address.
  3. Over 10,000 characters? Truncation. Replace Base64 with a hosted URL (Fix 2) and re-count.
  4. Hosted URL broken for recipients only? The URL requires auth, expired, or is hotlink-protected. Test in an incognito window, then re-upload from the computer (Fix 1).
  5. Works for you, not for a coworker on Outlook? Different client, different rules — see Base64 images not showing in Outlook.

Client compatibility at a glance

Base64 (data URI) images in signatures and email
ClientRenders Base64 images?Reliable alternative
Gmail (web & apps)NoSignature editor upload (Gmail hosts it)
Outlook (all builds)NoCID attachment via editor / mail library
Yahoo MailNoHosted HTTPS image
Apple Mail (macOS)YesData URI genuinely works
iOS MailYesData URI generally works
ThunderbirdYesData URI works

Full client-by-client table and the encoder for the clients that do support data URIs: Base64 image in email signature — generator & guide.

Frequently asked questions

Why is my Base64 image not working in my Gmail signature?

Gmail strips data URI images during sanitization and the signature editor does not accept raw HTML. The logo shows in the editor preview but disappears in sent mail. Upload the image via the signature editor instead.

Can Gmail signatures contain Base64 images?

Not reliably. Gmail re-serializes signature HTML and drops data URIs. Use the editor's image upload or a hosted HTTPS URL.

Why does the signature image show in compose but not in the sent email?

The compose preview renders HTML that the sanitizer will remove on send. Also make sure plain-text mode is off, and that the signature is assigned to the right send-as alias.

What is the Gmail signature character limit?

About 10,000 characters, counting all HTML — and a single Base64 logo can be 8,000+ characters. Exceeding it causes silent truncation. Swap Base64 for a hosted URL and stay under ~5,000 characters.

What is the most reliable way to add an image to a Gmail signature?

Settings → Signature → image icon → upload from your computer. Gmail re-hosts the file, which is why Gmail-to-Gmail signature logos work even though Gmail strips data URIs.

Can I use a hosted image URL instead?

Yes — public, stable, HTTPS, and tested in an incognito window. Private Drive links and hotlink-protected servers are the usual failure modes.

Still want a Base64 data URI for the clients that support it (Apple Mail, Thunderbird) or for previewing the logo before upload? The email signature encoder produces a ready-to-paste snippet locally — nothing is uploaded.