Reference · 13 networks
Playable ad size limits by network
Every figure comes from the network’s own documentation, and every row links to the page it was taken from. Where a network publishes no cap, this says so rather than inventing one.
Strictest to most lenient
- 1.2 MBMeta (Facebook & Instagram) (2 MB HTML (5 MB ZIP))
- 2.5 MBUnity Ads, IronSource / LevelPlay, AppLovin MAX, Vungle (Liftoff), Google Ads / AdMob, Mintegral, TikTok Ads, Pangle, Liftoff (5 MB (700 KB advised))
- 3.no published capChartboost, InMobi, Moloco
Every network compared
Sorted strictest first. The published limit is the network’s own figure, in its own words; the second-to-last column is what Playable Ads Maker’s exporter builds to.
- Published
- 2 MB HTML (5 MB ZIP)
- Format
- ZIP · also accepts .html
- Exit
FbPlayableAd.onCTAClick()- Requests
- Banned
- We build to
- 2 MB
- Published
- 5 MB
- Format
- Single .html
- Exit
mraid.open()- Requests
- Banned
- We build to
- 5 MB
- Published
- 5 MB
- Format
- Single .html
- Exit
mraid.open()- Requests
- Restricted
- We build to
- 5 MB
- Published
- 5 MB
- Format
- Single .html
- Exit
mraid.open()- Requests
- Banned
- We build to
- 4 MBour safety margin
- Published
- 5 MB
- Format
- ZIP · also accepts .html
- Exit
mraid.open()- Requests
- Banned
- We build to
- 5 MB
- Published
- 5 MB
- Format
- ZIP
- Exit
ExitApi.exit()- Requests
- Banned
- We build to
- 5 MB
- Published
- 5 MB
- Format
- ZIP
- Exit
window.install()- Requests
- Banned
- We build to
- 5 MB
- Published
- 5 MB
- Format
- ZIP
- Exit
window.openAppStore()- Requests
- Banned
- We build to
- 5 MB
- Published
- 5 MB
- Format
- ZIP
- Exit
window.openAppStore()- Requests
- Banned
- We build to
- 5 MB
- Published
- 5 MB (700 KB advised)
- Format
- ZIP
- Exit
postMessage("download")- Requests
- Banned
- We build to
- 5 MB
- Published
- No published cap
- Format
- Single .html
- Exit
mraid.open()- Requests
- Banned
- We build to
- 3 MBnetwork publishes no cap
- Published
- Not published
- Format
- Single .html
- Exit
mraid.open()- Requests
- Banned
- We build to
- 5 MBnetwork publishes no cap
- Published
- Not published
- Format
- Single .html
- Exit
FbPlayableAd.onCTAClick()- Requests
- Banned
- We build to
- 5 MBnetwork publishes no cap
The “builds to” column is ours, not the networks’
It is the size Playable Ads Maker holds its own exports to. Where it is below the published figure it is a safety margin on our side: AppLovin MAX publishes 5 MB and we build to 4 MB. Where a network publishes no cap at all, the figure is our own ceiling: Chartboost 3 MB, InMobi 5 MB, Moloco 5 MB. The spec checker grades your file against the published figure and only mentions ours as a suggestion.
How to get under the limit
Measure what the network measures
Single-file networks weigh the .html; ZIP networks weigh the archive; Meta weighs the index.html inside its ZIP. Compare the right number before you start cutting.
Convert images before you inline them
Base64 makes every byte about a third bigger, so a PNG saved as WebP (or a JPEG at a sensible quality) saves more once inlined than it did on disk. Trim transparent borders and scale sprites to the size they are drawn at.
Re-encode audio as mono, at a speech-grade bitrate
A phone speaker cannot tell stereo from mono, and one looping track plus a few short effects is all a playable needs. Audio is often the second-largest thing in the file after video.
Cut video first
When a creative carries video, it is almost always most of the bytes. Shorten it, lower its resolution to the size it plays at, and leave the rest of the file alone until the video is right.
Subset fonts to the characters you use
A full display font can outweigh the whole game. Keep only the glyphs your copy — and every translation of it — actually draws.
Minify, and drop engine code you do not call
Minify every script, and prefer an engine build with unused modules removed. Then check the file against each network before you upload rather than after a rejection.
Check your file against these limits
Drop your .html or .zip into the spec checker for a pass or fail against each network’s published cap, packaging and store-exit call, or run it in the MRAID validator to watch how it behaves inside a container. Both run in your browser; nothing is uploaded.
Questions about playable ad size limits
What is the largest playable ad any network publishes a limit for?
5 MB. 9 of the 13 networks compared here publish exactly that ceiling, and none publishes a higher one. Chartboost, InMobi and Moloco publish no figure at all — which is not the same as having no limit, since a large file still has to load inside a phone's ad WebView before anyone sees it.
Why is Meta's playable limit 2 MB when others allow more?
Meta documents two numbers: the ZIP it accepts, and a tighter cap on the index.html inside it — "2 MB HTML (5 MB ZIP)" in its own wording. The HTML is what has to load before the ad can start, so that is the number to build to. It is the strictest published figure of the 13 networks here.
Does the limit apply to the ZIP, or to the files inside it?
It depends on what the network takes. Networks that accept a single .html weigh that file. Networks that take a ZIP weigh the archive — TikTok and Pangle state their cap as the size after compression — while Meta additionally caps the entry HTML inside the ZIP. That is why the same creative can be comfortably inside one network's limit and over another's.
Why does Playable Ads Maker build AppLovin exports to 4 MB when AppLovin allows 5 MB?
As a safety margin, not because AppLovin requires it. A file that lands just under a published cap can tip over after a last-minute asset swap or a re-export, and a rejection after the work is done costs more than one extra compression pass. The spec checker grades your file against AppLovin's own 5 MB and only notes our stricter figure as a suggestion.
If a network publishes no cap, can a playable be any size?
In principle; in practice no. Chartboost publishes no hard cap — its guidance reads: "Chartboost recommends keeping the rendered size under 5 MB" — and Playable Ads Maker builds Chartboost exports to 3 MB. Liftoff lists its limit as "5 MB (700 KB advised)", advising far smaller than its ceiling for creatives without video. Load time on a mid-range phone is the real limit everywhere.
Do base64-inlined assets count toward the size limit?
Yes — the network weighs the file you upload, and an inlined image is part of that file. Base64 encoding adds roughly a third to every asset, so a creative whose source images total 3 MB will be noticeably bigger once everything is embedded. Compress images and audio before inlining them, not after.
How do I know these figures are current?
Every row links to the network page the figure was taken from. Networks move and revise those pages without notice, so treat the link as the authority: if it disagrees with the table, the network's page wins. The table and the spec checker are generated from the same data, so correcting one corrects both.