AppLovin playable specs at a glance
| File format | One .html file. No ZIP. |
|---|---|
| Max file size | 5 MB or smaller |
| Assets | All embedded as base64 or base122. External resources are prohibited. |
| External requests | None. External network calls are prohibited. |
| MRAID | MRAID 2.0. Wait for ready (or check mraid.getState() isn't loading) before any MRAID call or layout. |
| CTA call | mraid.open(storeUrl);Anything else and AppLovin says the click-through fails. |
| Orientation | Must work in both portrait and landscape |
| Timing | The ad's timer starts at the first interaction. No store redirect on the first tap, no auto-redirect. |
| Sound | Muted until the first interaction. Stops when the ad closes or is hidden. |
| WebGL | Needs a fallback if WebGL fails to start or loses its context |
| Analytics | Optional: window.ALPlayableAnalytics.trackEvent() |
| Testing | AppLovin Playable Preview and the Playable Preview app |
Required code
AppLovin's SDK provides the mraid object. Don't touch MRAID or size the layout until it's ready, then send every install tap through mraid.open():
var STORE_URL = /iPhone|iPad|iPod/.test(navigator.userAgent)
? "https://apps.apple.com/app/id000000000"
: "https://play.google.com/store/apps/details?id=com.your.game";
function start() {
layout(); // size for the current orientation
installButton.addEventListener("click", function () {
mraid.open(STORE_URL);
});
}
if (window.mraid && mraid.getState() === "loading") {
mraid.addEventListener("ready", start);
} else {
start();
}
AppLovin doesn't say whether to include a <script src="mraid.js"></script> tag. Most AppLovin playables include it in the head; the SDK supplies the file either way.
Gameplay and sound rules
- The first tap plays. It must never open the store. Only a deliberate tap on an install button or the end screen should.
- No auto-redirect. The playable can't open the store or a landing page on its own, on load or on a timer.
- Timers start at the first interaction, not when the ad loads.
- Sound stays muted until the first interaction, and stops when the ad is closed or hidden.
- Load fast. AppLovin says the ad must become interactive “in a reasonable time frame”. Inlining everything helps; keep the first frame light.
- WebGL needs a fallback. If the context fails or is lost, show a UI fallback instead of a black screen.
AppLovin's spec for programmatic buyers on its exchange adds two rules: AppLovin supplies the close button, so remove your own, and rewarded MRAID playables are capped at 30 seconds. Its advertiser docs don't repeat them, but building to them costs nothing.
Optional: AppLovin playable analytics
AppLovin can report how far players get if the playable sends events. It's optional; if you use it, DISPLAYED is required:
function track(name) {
if (typeof window.ALPlayableAnalytics !== "undefined") {
window.ALPlayableAnalytics.trackEvent(name);
}
}
track("DISPLAYED");
track("CHALLENGE_STARTED");
track("CHALLENGE_PASS_50");
track("CHALLENGE_SOLVED");
track("CTA_CLICKED");
track("ENDCARD_SHOWN");
AppLovin says the events aren't meant for playables with fewer than three interactions or no challenge. COMPLETED is deprecated.
How to test an AppLovin playable
- Open AppLovin Playable Preview and upload the HTML file, or paste a URL to a hosted copy.
- Play it, rotate it with the Rotate control, and tap install. You should see “You have successfully clicked.”
- Scan the QR code with the Playable Preview app (iOS, Android) and play it on a real phone. Redirects there only confirm that one happens when expected.
Why AppLovin rejects playables
AppLovin reviews creatives automatically; a failing one shows Rejected in the Media Library and can't be added to a creative set. It doesn't publish a list of reasons, but its spec makes the usual ones clear:
- Over 5 MB, or more than one file.
- A web font, CDN library, analytics call or any other network request.
- The CTA uses
window.openor a link instead ofmraid.open(). - The first tap opens the store, or the ad redirects on its own.
- Sound before the first tap.
- Broken or cropped in one orientation.
- MRAID calls before
ready, which can leave a blank ad on some devices. - Misleading designs and other breaches of AppLovin's demand partner policies.
Common questions
What is the file size limit for AppLovin playable ads?
5 MB or smaller, for one HTML file with every asset embedded as base64 or base122.
Which MRAID version does AppLovin use?
MRAID 2.0. Wait for the ready event, or check that mraid.getState() isn't 'loading', before calling any MRAID method.
What is the CTA call for AppLovin playables?
mraid.open(). AppLovin says the click-through fails if a playable uses anything else.
Can an AppLovin playable be a ZIP?
No. AppLovin requires a single HTML file with every resource embedded.
Can an AppLovin playable open the store on the first tap?
No. The first tap must start play. AppLovin also bans auto-clicks and auto-redirects without user interaction.
How do I test an AppLovin playable?
Upload the HTML file to AppLovin Playable Preview at p.applov.in/playablePreview, tap the CTA to confirm the click registers, rotate it, then scan the QR code to play it in the Playable Preview app on a phone.
Is AppLovin now called Axon?
AppLovin's advertiser platform is branded Axon, with Axon Ads Manager for self-serve. The creative specs are the same and are still published on support.applovin.com.
Sources
Networks change their specs without notice. These are the pages this summary was checked against. If anything here disagrees with them, follow the network.