The report bounced: attachment too large
Message exceeds the maximum size — or worse, no bounce at all and a
recipient who never mentions it.
The limits you are hitting
| Where | Cap |
|---|---|
| Gmail | 25 MB (auto-switches to a Drive link above it) |
| Outlook.com / Exchange default | 20 MB |
| Many corporate gateways | 10 MB, or lower |
| iCloud Mail | 20 MB |
And a detail that catches people: attachments are base64-encoded in transit, which inflates them by about a third. A 20 MB file is roughly 27 MB on the wire — over Gmail's cap despite looking under it.
What is making it big
In descending order of blame:
Inlined chart libraries, repeatedly. plotly.js is around 3 MB.
Export ten figures with include_plotlyjs=True on each and you have
inlined it ten times. Inline once:
parts = [fig.to_html(full_html=False, include_plotlyjs=(i == 0))
for i, fig in enumerate(figs)]
Base64 media. Screenshots, videos and traces in test reports. In
Playwright, screenshot: 'only-on-failure' and video: 'retain-on-failure' usually remove most of the payload with no loss to
anyone reading a green run.
The whole dataset, embedded. Reports that support client-side filtering ship the raw rows. Aggregate to what the charts actually plot, or cap the table and link the full extract.
Font files, inlined. Rarely worth their size in a report nobody prints.
gzip -9 report.html will often cut what remains by 80% — but a
recipient who has to un-gzip is a recipient who might not.
Why zipping is a bad answer
It is the reflex, and it introduces two problems:
- Corporate mail gateways commonly quarantine or strip archives that contain HTML, because that combination is a phishing pattern. The message arrives with the attachment removed and no explanation.
- The recipient unzips and double-clicks
index.html, landing onfile://— where XHR-loading reports render blank (Allure, Playwright) and relative asset paths break (lost CSS).
Email clients also strip <script> and external stylesheets from
inline HTML bodies, and Outlook on Windows renders with the Word engine —
no flexbox, no grid. Details in
emailing an HTML report.
Send a link instead
There is no attachment cap on a URL. Publish the report, paste the address:
- It opens in the browser, on a phone, in a Slack unfurl.
- Interactivity survives — scripts run in a sandboxed iframe
(
allow-scripts, noallow-same-origin). - Access is per-report: private, invited people only, anyone with the link, or public.
- Replies land as comments on the paragraph in question, instead of a reply-all thread where nobody can tell which chart "this number looks wrong" refers to (comment on HTML).
Limits: entry HTML 5 MB; assets 25 MB per file, 250 MB and 500 files per report — so the multi-megabyte media that broke your mail server uploads as assets rather than being inlined into the document.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.
Publish the report and send a link →