Skip to content
bolt playables Back to site
  1. Home
  2. Playable ad specs
  3. Unity Ads

unity ads playable specs.

Unity Ads takes a playable as one inlined, minified index.html under 5 MB, with no links to other files. It must follow MRAID 3.0 (Unity injects it), wait for viewableChange before starting, and open the store with mraid.open() using your own store URL. It must work in portrait and landscape, never open the store on the first touch, and respect the iOS mute switch and screen lock. Every pack is checked by a human moderator.

Last checked October 16, 2026 against Unity's Grow (Unity Ads user acquisition) documentation

Unity Ads playable specs at a glance

File formatOne index.html, all assets inlined, minified. No links to other files or folders.
Max file sizeUnder 5 MBUnity's moderation page says under 6 MB; its spec pages say 5 MB. Build to 5 MB.
MRAIDMRAID 3.0, injected by the Unity Ads webview
StartWait for ready, then viewableChange / mraid.isViewable() before starting. Pause when it's hidden.
CTA callmraid.open(storeUrl); with your App Store or Google Play URL
External requestsNot needed. Analytics calls may be allowed if they carry no personal data.
OrientationPortrait and landscape, scaling to the screen, without breaking on rotation
RedirectsNever automatic, and never on the first touch
Close buttonControlled by the Unity SDK. Don't cover or block it.
SoundTurns off with the iOS mute switch; stops when the screen locks and resumes on unlock
FormatsStandalone playable, or a 15–60 s video with a playable end card. Rewarded and interstitial.
TestingThe Ad Testing for Unity Ads app, then human moderation

Required code

This follows the bootstrap in Unity's best-practices guide: wait for MRAID, then start only once the ad is actually on screen:

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 onViewable(viewable) {
  if (viewable) startGame(); else pauseGame();
}

function onReady() {
  mraid.addEventListener("viewableChange", onViewable);
  if (mraid.isViewable()) startGame();
}

if (mraid.getState() === "loading") {
  mraid.addEventListener("ready", onReady);
} else {
  onReady();
}

installButton.addEventListener("click", function () {
  mraid.open(STORE_URL);
});

Unity attributes starts, views and clicks on its servers, so you don't need tracking calls. Unity's docs don't ask for a mraid.js script tag, since the webview injects MRAID.

Standalone playable or playable end card

  • Playable: the whole ad is the interactive demo.
  • Video and playable end card: a 15–60 second video, then the playable as its end card. Unity says the playable can start loading with the video, and it must respect isViewable so it doesn't run hidden.

Both run through Unity's rewarded and interstitial ad units and use the same single-file spec.

Moderation checks

Every new creative pack is reviewed by a person at Unity, and packs stay Pending until the organization has added funds. Moderators check that:

  • the content scales to the screen and doesn't break when the device rotates
  • the install button is easy to reach, not covered, and goes to the right store
  • the iOS mute switch turns sound off, and locking the screen stops it
  • the code is minified and there are no errors in the console
  • it runs smoothly, without stutter or pixelated art
  • it plays for a reasonable length before the end screen and isn't too hard for its audience
  • it makes no unnecessary network requests

It also needs to run on Android 4.4+ and iOS 9+.

How to test a Unity playable

  1. Host the HTML at a URL ending in .html (HTTPS for iOS), or upload it to a playable creative pack in the Unity dashboard.
  2. Install Ad Testing for Unity Ads (iOS, Android).
  3. Use Show QR code in the dashboard, scan it, and play the ad in Unity's own webview. Rotate the phone, flip the mute switch and lock the screen while it plays.

Why Unity rejects playables

Unity's “Rejected” status page names these as the common causes:

  • The ad doesn't work properly when switching between portrait and landscape.
  • Sound doesn't stop when the screen locks, or doesn't come back on unlock.
  • Sound ignores the iOS mute switch.
  • The content breaks Unity's advertising content policies.

Failing the moderation checks above (file size, unminified code, console errors, an obstructed install button) also gets packs rejected. Hover over a rejected pack's name in the dashboard to see why.

Common questions

What is the file size limit for Unity Ads playables?

Under 5 MB for the single index.html. One Unity moderation page says 6 MB, but the playable specification pages say 5 MB, so build to 5 MB.

Which MRAID version does Unity Ads use?

MRAID 3.0. The Unity Ads webview injects MRAID, so the playable can call its methods directly.

What is the CTA call for Unity playables?

mraid.open() with your app's App Store or Google Play URL. The playable can't open the store automatically or on the user's first touch.

Can a Unity Ads playable be a ZIP?

No. Unity requires a single index.html with all assets inlined and no links to other files or folders.

Why was my Unity playable rejected?

Unity's most common reasons are breaking on orientation change, sound that doesn't stop when the screen locks, ignoring the iOS mute switch, and content policy violations. Hover over the pack name in the dashboard to see the exact reason.

How do I test a Unity Ads playable?

Install the Ad Testing for Unity Ads app, then scan the QR code from your creative pack, or load a hosted .html URL, to play it in Unity's webview on a real phone.

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.

  • Unity Grow: Playable asset specifications
  • Unity Grow: Playable best practices
  • Unity Grow: Playable end cards
  • Unity Grow: Test creative packs
  • Unity Grow: Moderation checks
  • Unity Grow: Rejected creatives
  • Unity Grow: Ad format references
skip the spec sheet.

We build custom playables and package them for every network on this list, ready to upload. Packaging is included in the price.

Get a quote

Specs by network

  • All networks compared
  • AppLovin
  • Meta (Facebook)
  • Google Ads
  • Unity Ads
  • Liftoff (Vungle)
  • Moloco
  • Mintegral
  • Chartboost
  • TikTok
  • Snapchat
  • Adikteev
bolt playables

Custom playable ads, built by the team that makes them. 7,000+ shipped for every major ad network.

[email protected] LinkedIn

Services

  • Custom playables
  • playable.ad soon

Studio

  • Why direct
  • Work
  • How it works
  • FAQ
  • Contact

Resources

  • Playable ad specs
  • Playable ad examples
  • What are playable ads
  • How to make a playable ad
  • MRAID explained
  • Interactive end cards
  • Video playables

Clients

  • Get started
  • Client sign in

Playable ad specs

  • AppLovin
  • Meta (Facebook)
  • Google Ads
  • Unity Ads
  • Liftoff (Vungle)
  • Moloco
  • Mintegral
  • Chartboost
  • TikTok
  • Snapchat
  • Adikteev

© Bolt Playables

  • Privacy
  • Terms