Playable ad specs by ad network

Almost every ad network caps a playable ad at 5 MB and wants one self-contained build with no external requests. They differ in the package (single HTML or ZIP), the API (MRAID or the network’s own) and the exact call that opens the store. Here is each network’s rule, with a link to its documentation.

Checked against each network’s documentation on

Specs at a glance

Tap a network for its full rules and sources

Rules most networks share

  • Size. 5 MB on every network here, 4 MB for ironSource Exchange tags. Google, Meta and TikTok count the whole ZIP.
  • Self-contained. No external requests: assets are inlined or packed in the ZIP. Google only allows Google Fonts and its hosted libraries.
  • Store click. The store opens only from a deliberate tap, through the network’s own call — never an automatic redirect.
  • Sound. Waits for the first interaction (stated by AppLovin, Google and Liftoff).
  • Orientation. Portrait and landscape on most networks; Meta asks for portrait and a responsive layout.
  • Close button. Leave it to the network: AppLovin Exchange, ironSource, Mintegral and Liftoff draw their own.

Requirements by network

AppLovin playable ad specs

Format
Single HTML file, all assets embedded (base64 or base122)
Max size
5 MB
MRAID / API
MRAID 2.0
Store click
mraid.open()
  • External network calls are prohibited.
  • The ad must work in both portrait and landscape.
  • No store redirect on the first tap and no auto-redirect; any timer starts only after the first interaction.
  • Audio stays muted until the first interaction; provide a UI fallback if WebGL is used.
  • On AppLovin Exchange (for DSPs) rewarded MRAID ads run up to 30 seconds, need a loading indicator and must not draw their own close button.

Source:AppLovin creative guidelinesAppLovin Exchange creative types

Unity Ads playable ad specs

Format
Single inlined, minified index.html
Max size
Under 5 MB
MRAID / API
MRAID 3.0
Store click
mraid.open(storeUrl)
  • No network requests (XHR), except analytics calls without personal data.
  • Support both portrait and landscape.
  • Start the content only after the MRAID viewableChange event.
  • No automatic redirect, including on the very first touch, and never block the close button.

Source:Unity playable specificationsUnity playable best practices

ironSource playable ad specs

Format
Direct: the Unity Ads spec. Exchange: HTML/JS snippet
Max size
4 MB (Exchange)
MRAID / API
MRAID 2.0 (Exchange)
Store click
mraid.open(url)
  • ironSource Ads direct demand sunset on April 30, 2026 and advertisers moved to Unity Ads, so direct playables follow the Unity Ads spec above.
  • On ironSource Exchange (programmatic) the tag is an HTML/JS snippet, not a full HTML document, and external assets need absolute HTTPS URLs.
  • ironSource draws the timer and close button; a loading screen is required; read the ad size only through mraid.getMaxSize().

Source:ironSource Ads sunset guideironSource Exchange MRAID spec

Mintegral playable ad specs

Format
ZIP; the ZIP, its assets folder and the HTML share one name
Max size
5 MB (ZIP)
MRAID / API
Mintegral JavaScript API
Store click
window.install && window.install();
  • Call window.gameReady() when loading completes, window.gameEnd() on a win or loss and window.gameRetry() on replay; define gameStart() and gameClose() for the host to call.
  • All resources are local with no dynamic requests; files other than JS and HTML are converted to base64.
  • A CTA button stays visible for the whole playable; no close button or loading page of your own; auto-redirects are blocked.
  • Adapt to portrait and landscape with free rotation, and make it work with a mouse in a desktop browser, where the test tool runs.

Source:Mintegral playable docsPlayable testing guide (linked by Mintegral)

Meta playable ad specs

Format
Single HTML with data-URI assets, or ZIP with index.html (up to 100 files)
Max size
5 MB
MRAID / API
No MRAID: must work without mraid.js
Store click
FbPlayableAd.onCTAClick()
  • No external network calls (XMLHttpRequest is not allowed) and no JavaScript redirects.
  • Built in portrait orientation and responsive.
  • Needs a companion video; app promotion objective only; runs in Facebook and Instagram Feed, Stories, Reels and Audience Network.

Source:Meta playable ad specificationsMeta: upload a playable ad

TikTok playable ad specs

Format
ZIP with index.html and config.json at the top level
Max size
Under 5 MB (compressed)
MRAID / API
TikTok Playable SDK (not MRAID)
Store click
window.openAppStore();
  • Include Playable-sdk.js at the bottom of the body, before your own scripts.
  • config.json sets the orientation: 0 either, 1 portrait only, 2 landscape only. The TikTok and TikTok Ad Network pages spell the key and SDK path with different letter case, so test the upload.
  • No HTTP requests, no dynamic loading from external networks and no JavaScript redirects.
  • Each ad needs at least one video, image or carousel asset next to the playable. TikTok Ad Network (formerly Pangle) runs playables as rewarded and interstitial at 1280×720 or 720×1280.

Source:TikTok playable adsTikTok Ad Network playable adsTikTok Ad Network asset specs

Liftoff (Vungle) playable ad specs

Format
Single HTML, or ZIP with one root folder
Max size
5 MB
MRAID / API
MRAID 2.0 (Vungle Exchange)
Store click
mraid.open()
  • mraid.open is preferred; window.Liftoff.open() inside window.Liftoff.ready() or window.open also work, never window.location.
  • If the ZIP root holds several HTML files, one must be index.html; assets by relative path only; file names ASCII and case-sensitive; no <iframe>.
  • No close button of your own: a 50×50 px area in each top corner may be covered. Sound starts only after user interaction.

Source:Liftoff interactive ad integrationLiftoff creative specsVungle Exchange specs

Don’t want to juggle these rules? Every playable we build ships as a ready-to-ship archive for each network you need — 2D in 2 days from $300, 3D in 4 days from $500.

Playable ad specs FAQ

Quick answers on size, format and the store click

What is the maximum file size of a playable ad?

5 MB on AppLovin, Unity Ads, Mintegral, Google Ads, Meta, TikTok and Liftoff. ironSource Exchange programmatic tags allow 4 MB. Google, Meta and TikTok count the whole ZIP, and TikTok measures it after compression.

Do playable ads have to use MRAID?

No. AppLovin (MRAID 2.0), Unity Ads (MRAID 3.0), ironSource Exchange and Liftoff use MRAID. Google Ads uses its ExitApi, Meta requires the ad to work without mraid.js, TikTok rejects the mraid.js format and Mintegral uses its own JavaScript API.

How does a playable ad open the app store?

Through the network’s own call after a deliberate tap: mraid.open() on AppLovin, Unity Ads, ironSource and Liftoff, ExitApi.exit() on Google Ads, FbPlayableAd.onCTAClick() on Meta, window.install() on Mintegral and window.openAppStore() on TikTok.

Can one playable build run on every ad network?

Not as is. Networks differ in the package (single HTML or ZIP), the store-click call and the required hooks, so each network needs its own build. Arc Studio delivers a ready-to-ship archive for every ad network you need with each playable.

Does ironSource still accept playable ads?

ironSource Ads direct demand sunset on April 30, 2026 and advertisers moved to Unity Ads, so direct playables follow the Unity Ads spec: a single index.html under 5 MB, MRAID 3.0 and mraid.open() for the store link. Programmatic ironSource Exchange tags use MRAID 2.0 with a 4 MB limit.