In 2026, every major ad network caps playable ads at about 5 MB, requires a self-contained HTML5 file with no external requests, and uses its own click-out call. What breaks uploads is the difference in file format (one inlined HTML file or a ZIP with index.html), whether MRAID is required or forbidden, and a few network-specific hooks. AppLovin and Unity want one HTML file with MRAID. Meta and Moloco forbid mraid.js. Google, TikTok, Mintegral and Snapchat want a ZIP.
- 5 MB is the ceiling everywhere, Meta included. Aim for 2 to 3 MB in practice, since inlining assets as base64 adds about a third.
- Two families: MRAID networks (AppLovin, Unity, Liftoff, Digital Turbine) and networks that want no mraid.js (Meta, Moloco, TikTok).
- The click-out call differs on every network. It's the most common reason a playable that works on one network fails on another.
- ironSource Ads stopped serving on 30 April 2026. Advertisers moved to Unity Ads.
- Genie Playable exports network-ready variants for all ten networks below from one source, built from your game.
What are the playable ad specs for each network?
| Network | Max size | Format | MRAID | Click-out call | Orientation | How to test |
|---|---|---|---|---|---|---|
| AppLovin | 5 MB | One HTML file, all assets inlined (base64 or base122) | Required, v2.0. Wait for ready | mraid.open() | Portrait and landscape | Playable Preview web tool and app (QR) |
| Unity Ads | Under 5 MB | One inlined, minified index.html | Required, 3.0 compliant. Wait for viewableChange | mraid.open() | Both | Ad Testing app (QR from dashboard) |
| Meta Facebook, Instagram, Audience Network | 5 MB for HTML or ZIP (max 100 files) | Single HTML with data URIs, or ZIP with index.html at root | Must work without mraid.js | FbPlayableAd.onCTAClick() | Portrait, responsive | Ads Manager preview |
| Google Ads App campaigns, including AdMob inventory | 5 MB ZIP, max 512 files | ZIP with full HTML structure, UTF-8 | Not required | ExitApi.exit() via exitapi.js | Set with the ad.orientation meta tag | HTML5 Validator |
| TikTok Including TikTok Ad Network, formerly Pangle | Under 5 MB ZIP | ZIP with index.html and config.json | Not in mraid.js format | window.openAppStore() via the TikTok Playable SDK | Set in config.json (flexible, portrait or landscape) | Ads Manager preview |
| Mintegral | 5 MB ZIP | ZIP, folder and HTML with identical names; non-JS assets in base64 | Not specified | window.install(), plus required gameReady() and gameEnd() | Both, free rotation | Mindworks Playable Test Tool (all green) |
| Moloco | Under 5 MB | Single HTML only (no ZIP), data URIs | Must not include mraid.js | FbPlayableAd.onCTAClick() | Both | Ads Manager preview |
| Snapchat | 5 MB ZIP | ZIP with index.html and config.json | Not required | ScPlayableAd.onCTAClick() | Portrait only | Not documented |
| Liftoff (Vungle) | Not published | ZIP with index.html | MRAID 2.0 (exchange docs) | Official docs conflict: parent.postMessage('download','*') or mraid.open(). Confirm with your account manager | Not documented | Creative Verifier app |
| Digital Turbine DT Exchange | Not published | MRAID 2.0 creative | MRAID 2.0 | mraid.open() | 320x480 or 480x320 | DT test app |
Each network has its own page in this hub with the full rules, common rejections and a checklist to run before you upload.
What rules apply to every network?
- No external requests. No XHR, no assets from a CDN, no JavaScript redirects. Google is the one exception and allows Google Fonts plus Google-hosted jQuery, GreenSock and CreateJS.
- Sound off until the first interaction. AppLovin and Google state it outright. Treat it as universal.
- No store redirect on the first tap, and no auto-redirects. The player plays first.
- Works offline once loaded. Everything the playable needs is inside the file.
- Responsive layout. Most networks need portrait and landscape. Meta and Snapchat are portrait first.
Where do popular guides disagree with the official specs?
Several widely shared spec guides are out of date. Here's what the networks' own docs say as of September 2026.
| What you'll read elsewhere | What the official docs say |
|---|---|
| "Meta allows 2 MB for HTML and 5 MB for ZIP" | 5 MB for both a single HTML file and a ZIP (max 100 files) |
| "Unity requires MRAID 2.0" | Unity Grow's spec says MRAID 3.0 compliant |
| "Google allows 5.2 MB" | 5 MB ZIP |
| "Snapchat has no advertiser upload for playables" | App Playables can be uploaded in Snapchat Ads Manager |
| "Mintegral orientation isn't documented" | Both orientations required, with free rotation |
| "The ironSource sunset finished on 31 May 2026" | Serving stopped on 30 April 2026. 31 May was the last day to download reports |
What file size should I actually aim for?
Aim for 2 to 3 MB and treat 5 MB as a hard ceiling. No network publishes a smaller target, but three things eat your headroom: base64 inlining (about a third more), localized variants, and a second layout for the other orientation. Heavier files also load slower and lose players before the first tap. If one build has to serve both Meta and Moloco, the setup that works for both is a single HTML file with no mraid.js.
Can I use one playable file for every network?
You can use one source, not one file. The mechanic, the art and the logic can be shared. The packaging can't: HTML or ZIP, MRAID or none, a different click-out call, and hooks like Mintegral's gameReady() and gameEnd().
"A unit that passes on AppLovin can bounce on Unity."
The fix is to generate each network variant from one build, instead of editing copies by hand.
That's how Genie Playable works. Your team builds or iterates once, and Genie exports the network-ready versions. Try it free on your game.
Which networks support playable ads in 2026?
AppLovin, Unity Ads, Mintegral, Moloco, Liftoff, Digital Turbine and Google (App campaigns, including AdMob inventory) run playables at scale on in-app inventory. Meta, TikTok and Snapchat support them too, and Meta now runs playables across Feed, Stories, Reels and Audience Network. AppLovin carries the largest share of playable traffic, around 59% according to AppAgent's analysis of Apptica data. ironSource Ads hasn't served ads since 30 April 2026.
FAQ
What is the maximum file size for a playable ad?+
About 5 MB on every major network in 2026, including AppLovin, Meta, Google, TikTok, Unity, Mintegral, Moloco and Snapchat.
Do all networks require MRAID?+
No. AppLovin, Unity, Liftoff and Digital Turbine use MRAID. Meta and Moloco require playables to work without mraid.js, TikTok says not to use the mraid.js format, and Google and Snapchat don't require it.
Why does my playable work on AppLovin but fail on Meta?+
Usually the click-out call and MRAID. AppLovin needs mraid.open(). Meta needs FbPlayableAd.onCTAClick() and has to run without mraid.js.
Is ironSource still accepting playables?+
No. ironSource Ads stopped serving on 30 April 2026 and advertisers moved to Unity Ads. ironSource Exchange still serves programmatic demand.
How often do these specs change?+
Networks update their docs a few times a year, usually without an announcement. We re-verify this page every quarter. Check the date at the top.

