Why is embedding an MP4 in an email a bad idea?
Embedding an MP4 directly inside an email body fails for six concrete reasons. Each reason on its own is enough to justify a different approach. Combined, they make the pattern indefensible at scale.
Email clients do not consistently support inline video playback. Apple Mail supports HTML5 video tags on macOS and iOS in some configurations. Outlook on Windows and Outlook for the web do not. Gmail does not render HTML5 video natively. Yahoo Mail does not. Most enterprise email clients sandbox or strip the video tag entirely. The result is that any video tag in a marketing email is, in practice, a fallback exercise for the majority of inboxes.
File size kills deliverability. A 30-second 1080p MP4 typically weighs 8 to 15 megabytes. Most email service providers (ESPs) including Mailchimp, Klaviyo, Iterable, and Braze either reject messages with attached video or strip the attachment before send. Gmail caps the total message size at 25 megabytes, and the rest of the message has to fit inside that envelope. Even where the message squeezes through, large attachments push the message toward spam filters because attachment size is a signal that gateways watch.
Mobile clients struggle with embedded video. Most subscribers open marketing email on mobile, and mobile clients have inconsistent codec support, autoplay restrictions, and battery-driven playback controls that make the inline experience unreliable. The video may load slowly, fail to autoplay, or render a broken thumbnail. Each of these is a worse outcome than a clean thumbnail with a clear call to action.
Analytics are blind. An embedded MP4 inside an email gives the marketer no signal about who watched, how long, or where they dropped off. The video plays or it does not. There is no event stream back to the ESP. There is no way to trigger a follow-up workflow based on completion. The personalization layer downstream has nothing to consume.
Personalization is structurally impossible. A pre-rendered MP4 attached to an email is the same file for every recipient. The only way to personalize it is to render a separate file per subscriber, which inflates storage costs, breaks ESP attachment limits, and creates a render queue that decouples the data from the send. By the time the per-recipient render is ready, the behavioral trigger that justified the campaign has expired.
Updates require resends. If anything in the video needs to change after send (a date correction, a price update, a copy fix), the only options are to send a follow-up email or to live with the error. The file in the recipient’s inbox cannot be updated.
For a deeper architectural treatment of why static MP4 fails the modern marketing stack, see MP4 is dead: long live the MP5.