Free tool · no signup
Playable ad tester
Drop in your playable ad and see, network by network, whether it will pass: AppLovin, Meta, Google, Unity, Mintegral, TikTok, Liftoff, Moloco and Pangle. It runs in your browser, so the file never leaves your machine.
No file to hand?
Tired of rebuilding the same ad for every network?
Make It Playable builds playables from your website and packages each one for the network it's going to, with every check on this page run before you download.
What the tester checks
The upload rules that get playables rejected, and the mistakes that let an ad through but stop it counting clicks.
- Packaging
- A single HTML file or a ZIP with index.html at the root, whichever the network takes.
- File size
- Against each network's limit.
- Outside files
- Scripts, images, fonts or stylesheets loaded from the internet, which ad players block.
- Network requests
- fetch, XMLHttpRequest and WebSockets, which fail inside an ad.
- Viewport and touch
- A mobile viewport, and taps that respond instantly.
- CTA exit
- The exact call each network counts as a click, and SDK bridges that would block it.
- Old WebViews
- ES5-only JavaScript and CSS older Android WebViews ignore, where the network needs it.
- Disclaimers
- The verbatim disclaimer Mintegral always needs, and others need when a reward is shown.
- Copy rules
- Money language Google rejects, reward wording Unity flags, and earnings promises.
Playable ad requirements by network
What each network expects from the file. The tester checks all of it.
AppLovin playable requirements
- Upload as
- One self-contained HTML file
- Max size
- 5 MB
- CTA call
- mraid.open() with no URL; the store link is set on the campaign
- JavaScript
- Modern JavaScript is fine
- Disclaimer
- When a reward or payout is shown
Meta Ads playable requirements
- Upload as
- One self-contained HTML file
- Max size
- 5 MB
- CTA call
- FbPlayableAd.onCTAClick()
- JavaScript
- Modern JavaScript is fine
- Disclaimer
- When a reward or payout is shown
Google App campaigns playable requirements
- Upload as
- One self-contained HTML file
- Max size
- 5 MB
- CTA call
- ExitApi.exit(), with Google's exitapi.js loaded in <head>
- JavaScript
- Modern JavaScript is fine
- Disclaimer
- When a reward or payout is shown
Unity Ads playable requirements
- Upload as
- ZIP with index.html at the root
- Max size
- 5 MB
- CTA call
- mraid.open(storeUrl) with the store URL passed in
- JavaScript
- ES5 only, for older WebViews
- Disclaimer
- Not required
Mintegral playable requirements
- Upload as
- ZIP with index.html at the root
- Max size
- 5 MB
- CTA call
- window.install(), plus the gameReady() and gameEnd() lifecycle calls
- JavaScript
- ES5 only, for older WebViews
- Disclaimer
- Always, word for word
TikTok Ads playable requirements
- Upload as
- ZIP with index.html at the root
- Max size
- 5 MB
- CTA call
- window.openAppStore()
- JavaScript
- Modern JavaScript is fine
- Disclaimer
- When a reward or payout is shown
Liftoff / Vungle playable requirements
- Upload as
- ZIP with index.html at the root
- Max size
- 5 MB
- CTA call
- mraid.open(url) with the destination passed in
- JavaScript
- ES5 only, for older WebViews
- Disclaimer
- When a reward or payout is shown
Moloco Ads playable requirements
- Upload as
- One self-contained HTML file
- Max size
- 5 MB
- CTA call
- mraid.open(url) with the destination passed in
- JavaScript
- Modern JavaScript is fine
- Disclaimer
- When a reward or payout is shown
Pangle playable requirements
- Upload as
- ZIP with index.html at the root
- Max size
- 5 MB
- CTA call
- window.openAppStore()
- JavaScript
- ES5 only, for older WebViews
- Disclaimer
- When a reward or payout is shown
Where each network can send the click, and who it suits, is on the networks and compliance page.
Playable ad tester FAQ
Yes. There's no signup and no limit. The tester runs in your browser, so your ad is never uploaded to us or anyone else.
AppLovin, Meta Ads, Google App campaigns, Unity Ads, Mintegral, TikTok Ads, Liftoff / Vungle, Moloco Ads and Pangle. For Google Display, DV360 and programmatic banners, which use fixed-size HTML5 bundles instead, see the export templates. Google Display HTML5 template.
The file you would upload to the network: a single .html for AppLovin, Meta, Google App campaigns and Moloco, or a .zip with index.html at the root for Unity Ads, Mintegral, TikTok, Liftoff and Pangle. You can drop either into the tester; it will tell you which shape each network wants.
Mostly because every network wants the click to leave the ad differently: mraid.open() on AppLovin, mraid.open(url) on Unity, FbPlayableAd.onCTAClick() on Meta, ExitApi.exit() on Google, window.install() on Mintegral and window.openAppStore() on TikTok. Some also run ads in old WebViews that only understand ES5 JavaScript, and some need a ZIP instead of an HTML file. Playable ad specs, network by network.
A pass means nothing in the file breaks the network's technical upload rules we check for. Networks also review the creative itself and run their own validators, so preview it in the network's own tool before you spend.
The preview plays your ad with stand-ins for each network's bridge (MRAID, Meta, Google, Mintegral and TikTok). It reports JavaScript errors on load, and when you tap your CTA it shows which exit call fired, so you can see the click-out actually works.
The studio doesn't patch other people's files. It builds new playables from your website or a short prompt and runs every one of these checks for each network before you download, so the file you get is already right for where it's going. See how the studio works.
More about the format on the playable ads FAQ.