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.

Build network-ready playables

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.

Further reading