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. 1.2 MBMeta (Facebook & Instagram) (2 MB HTML (5 MB ZIP))
  2. 2.5 MBUnity Ads, IronSource / LevelPlay, AppLovin MAX, Vungle (Liftoff), Google Ads / AdMob, Mintegral, TikTok Ads, Pangle, Liftoff (5 MB (700 KB advised))
  3. 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
Official spec ↗
Unity AdsMRAID required
Published
5 MB
Format
Single .html
Exit
mraid.open()
Requests
Banned
We build to
5 MB
Official spec ↗
Published
5 MB
Format
Single .html
Exit
mraid.open()
Requests
Restricted
We build to
5 MB
Official spec ↗
AppLovin MAXMRAID required
Published
5 MB
Format
Single .html
Exit
mraid.open()
Requests
Banned
We build to
4 MBour safety margin
Official spec ↗
Vungle (Liftoff)MRAID required
Published
5 MB
Format
ZIP · also accepts .html
Exit
mraid.open()
Requests
Banned
We build to
5 MB
Official spec ↗
Google Ads / AdMobMRAID not used
Published
5 MB
Format
ZIP
Exit
ExitApi.exit()
Requests
Banned
We build to
5 MB
Official spec ↗
MintegralMRAID not used
Published
5 MB
Format
ZIP
Exit
window.install()
Requests
Banned
We build to
5 MB
Official spec ↗
TikTok AdsMRAID not used
Published
5 MB
Format
ZIP
Exit
window.openAppStore()
Requests
Banned
We build to
5 MB
Official spec ↗
PangleMRAID not used
Published
5 MB
Format
ZIP
Exit
window.openAppStore()
Requests
Banned
We build to
5 MB
Official spec ↗
LiftoffMRAID not used
Published
5 MB (700 KB advised)
Format
ZIP
Exit
postMessage("download")
Requests
Banned
We build to
5 MB
Official spec ↗
ChartboostMRAID required
Published
No published cap
Format
Single .html
Exit
mraid.open()
Requests
Banned
We build to
3 MBnetwork publishes no cap
Official spec ↗
InMobiMRAID supported
Published
Not published
Format
Single .html
Exit
mraid.open()
Requests
Banned
We build to
5 MBnetwork publishes no cap
Official spec ↗
MolocoMRAID forbidden
Published
Not published
Format
Single .html
Exit
FbPlayableAd.onCTAClick()
Requests
Banned
We build to
5 MBnetwork publishes no cap
Official spec ↗

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

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.

Related guides