Mailgun's 25 MB message cap: fit a video clip or send a link
Mailgun supports messages up to 25 MB in total, attachments included. Use Sume video trim to cut a clip under that, or send a link when the video is longer.

Mailgun states that the maximum message size it supports is 25 MB, and that cap covers the whole message, attachments included. A product video of a few seconds can fit, while a long one cannot, so the choice is between cutting the clip and linking to it.
The limit is from Mailgun's sending messages documentation, read 2026-10-03. That page shows how to attach files but gives no separate per-attachment limit, so this post treats 25 MB as the single number to design against.
What does Mailgun document?
The page gives one limit for the message. It does not list a separate figure for each attachment, and it does not say how base64 encoding is counted, so a safety margin is sensible.
| Item | What the page says |
|---|---|
| Maximum message size | 25 MB |
| Scope | The whole message, attachments included |
| Per-attachment limit | Not stated on the page |
Two ways to deliver the video
Attach a short clip, or put the video on a page and link to it. Attaching keeps everything in the message and works offline, but it spends the 25 MB budget. A link costs almost nothing in message size and lets you show a longer video, at the price of one more click for the reader.
A rule of thumb that does not depend on any vendor figure: if the clip is under about ten seconds and you are willing to downscale it, attach it; otherwise link.
Cutting the clip with Sume video trim
Import the source with POST /v1/media-imports first, because Sume's video trim only reads clips on media.sume.com. A job costs $0.02 and returns a new MP4.
Trim the clip first. Send start and either end or duration, plus output with a smaller width and height (256-2160) and an fps of 24, 25, 30 or 60. precision has to stay exact, the default, for output to be accepted. Add audio: "drop" for a silent loop. Sume's docs offer no file-size or bitrate target, so you steer size with length, frame size and audio, then measure the result.
- Cut length with
startplusendorduration(0.2 s to 900 s). - Lower
output.widthandoutput.height(256 to 2160). - Pass
fps24, 25, 30 or 60 if the source runs faster than the email needs.
Verify the size, then send
Download the finished MP4 and read its byte size. Leave margin under 25 MB for the message body and for encoding growth, because Mailgun's page does not say how it counts size. If the result is too big, trim again with a smaller frame or a shorter range.
For a poster image that links to the full video, video frames can pull a still from the clip at a time you choose.
A test that costs almost nothing
Because Mailgun's page does not say how it counts size, send a test message through your own domain's sandbox or to an address you control, with the real clip attached. A refusal tells you the clip is too big. A delivered message tells you it fits, but check the received size in the mail client as well.
If you send to many recipients, remember each message carries its own copy of the attachment, so a smaller clip also reduces the bandwidth of the whole send.
Sources
Related posts
More in Media tools
- Sume media import returns unsupported_platform for a YouTube link
POST /v1/media-imports takes public TikTok and Instagram URLs only. A YouTube link returns 422 unsupported_platform; upload the file you own instead.
- MediaConvert lists ProRes and MXF input; Sume lists none - test first
AWS MediaConvert publishes a container and codec table. Sume's docs name no codec list, only a HEAD video check, so test a master with the free filter check.
- Microsoft Premium Streaming video ads: specs, $25 budget, CPCV
Microsoft Premium Streaming (CTV) video: three-star lengths 10 to 90 s, 10,000+ kbps, a budget above 25 USD and CPCV bidding. Build and check a clip with Sume.
- Mux animated GIF: 10 s and 640 px caps vs a Sume trimmed clip
Mux animated.gif and animated.webp stop at 10 seconds, 640 px and 30 fps. Sume trim can return a clip up to 900 seconds as MP4, with no GIF or WebP.
Written by Sume