Ad Network Guide

Playable Ads for Meta (Facebook & Instagram)

Meta's advertising ecosystem spans Facebook Feed, Instagram Feed, Instagram Stories, Reels, and Audience Network: together reaching over 3.2 billion monthly active people, a wider demographic spread than any other single platform. Unlike gaming-only networks, Meta's audience includes large non-gaming groups, which suits apps with broad appeal: lifestyle tools, social apps, casual games, fintech and subscription products. Playable ads on Meta open full screen from inside a social feed, where an ad you can play stands out from the posts around it.

ZIP (index.html + main.js)Size limit: 2 MB HTML (5 MB ZIP)Must not require mraid.js

Meta does not use MRAID. Its playable specification says the asset must not require mraid.js, must make no HTTP requests and must not redirect with JavaScript; the store exit is FbPlayableAd.onCTAClick(), which takes no URL. Meta sends the user to the destination configured on the campaign. Size is two numbers: Meta accepts a ZIP of up to 5 MB, but the index.html inside it must stay under 2 MB (2 MB HTML (5 MB ZIP)). The Playable Ads Maker's Meta export calls FbPlayableAd.onCTAClick() and nothing else, ships no mraid.js tag, and is held to 2 MB.

Uploading to Meta is done through Meta Ads Manager: create an App Install or App Engagement campaign, advance to the ad creative step, select Playable as the format, and upload your ZIP. Meta also accepts the playable as a single self-contained .html file; the ZIP is what the Meta export produces. Meta's audience is social first rather than gamers first, so the playables that do best there lean on social context, achievement sharing and a clear reward moment, which work for casual gamers and non-gamers.

Export specifications

SpecificationValue
Accepted formatZIP, or a single .html
Playable Ads Maker exportsZIP (index.html + main.js)
Published size limit2 MB HTML (5 MB ZIP)
Playable Ads Maker builds to2 MB
MRAIDMust not require mraid.js
Store-exit callFbPlayableAd.onCTAClick()
External requestsNone allowed at runtime
PlacementsFacebook Feed, Instagram Feed, Stories, Reels, Audience Network
Review time estimate24 hours (automated)

Size, format, MRAID and store-exit rows are taken from Meta (Facebook & Instagram)’s own documentation; “Playable Ads Maker builds to” is our exporter’s own target. Every network side by side: playable ad size limits by network.

If you already have a build, drop the ZIP into the free Playable Ad Spec Checker and it will grade it against these Meta (Facebook & Instagram) requirements (size, packaging, MRAID and the store-exit call) in your browser, with nothing uploaded.

Check my Meta (Facebook & Instagram) playable ad

How to upload to Meta (Facebook & Instagram)

  1. Build your playable in the editor, keeping in mind that Meta's audience includes non-gamers. Design the interaction to be intuitive without gaming conventions, with clear tap targets and visible instructions.
  2. Select the Meta (Facebook & Instagram) preset in the Export modal. It wires your CTA to FbPlayableAd.onCTAClick(), leaves out mraid.js, and packages index.html and main.js into a ZIP.
  3. Check the sizes Meta checks: the ZIP must be 5 MB or less and the index.html inside it under 2 MB (2 MB HTML (5 MB ZIP)). The export modal holds a Meta build to 2 MB and shows the estimate before you download.
  4. Open Meta Ads Manager and create a new campaign with an App Install or App Engagement objective.
  5. At the Ad creative step, choose the playable format and select your ZIP file.
  6. Use Meta's built-in device preview tool to see how the playable renders on a phone screen within the Facebook and Instagram feed format before submitting.
  7. Set your audience targeting, budget, placements, and schedule, then publish the campaign. Meta's delivery system begins serving the playable within a few hours of approval.

File size tip

Meta (Facebook & Instagram) publishes a limit of 2 MB HTML (5 MB ZIP); Playable Ads Maker builds Meta (Facebook & Instagram) exports to 2 MB. If your export is too large, reduce image resolution, switch to WebP at 75–80% quality, or trim animation frame counts in the Playable Ads Maker Export modal. The live size estimate updates as you adjust each setting.

Tips for Meta (Facebook & Instagram) playable ads

Design for a social-scroll context, not a gaming session pause

Unlike Unity Ads or AppLovin where users are mid-session in a game, Meta users encounter playables while scrolling through social content. They have no intent to see an ad and no in-game reward motivating them to engage. The first 2 seconds of your playable have to stop the scroll. Use bold colours, immediate movement, and a clear interactive invitation like 'Tap to play' displayed immediately on load. A slow-loading or delayed-start experience will be swiped past before the mechanic appears.

Do not add mraid.js or a second exit call to a Meta build

Meta's specification says a playable must not require mraid.js and must not redirect with JavaScript, so a creative carrying MRAID wiring or a window.open() fallback is a defect on Meta, not extra compatibility. The store exit is FbPlayableAd.onCTAClick() alone. The Playable Ads Maker's Meta export is built that way; if you edit the HTML after export, do not paste in the MRAID exit from another network's build.

Design portrait-first and keep the layout responsive

Meta's specification asks for a portrait, responsive playable. Build the core interaction for a tall phone screen, keep the tap targets and the CTA away from the edges, and let the layout adapt to the shape it is given rather than depending on one exact aspect ratio. The same creative runs across Feed, Stories and Reels placements.

Avoid gameplay that closely mimics your app without being your actual app

Meta's content review team specifically checks that playable ad gameplay is a genuine representation of the app being advertised, not a fabricated mechanic designed purely to maximise ad engagement. Ads that show a match-3 mechanic but advertise a slot machine app, for example, are rejected and may result in account flags. Build your playable around a condensed but real version of your app's core loop to avoid policy issues and to improve post-install retention.

Playable Ads Maker does the Meta (Facebook & Instagram) packaging (ZIP (index.html + main.js)), wires the FbPlayableAd.onCTAClick() store exit and inlines every asset when you export.

Build your playable ad

Frequently asked questions

Does Meta use MRAID for playable ads?

No. Meta's playable specification says the asset must not require mraid.js; the store exit is FbPlayableAd.onCTAClick(). A creative built for an MRAID network, with mraid.js and mraid.open(), is the wrong build for Meta. The Playable Ads Maker's Meta export calls FbPlayableAd.onCTAClick() only and ships no mraid.js tag.

What is FbPlayableAd.onCTAClick() and where does it come from?

FbPlayableAd is a JavaScript object Meta provides to the playable at runtime. Calling FbPlayableAd.onCTAClick() tells Meta the user tapped the CTA; Meta then sends them to the destination configured on the campaign, which is why the call takes no URL. Outside Meta's container (opening the file in a desktop browser, for example) the object does not exist and the exported CTA does nothing, which is expected.

Can I run the same ZIP on Facebook Feed, Instagram Stories, and Audience Network simultaneously?

Yes. A single ZIP upload in Meta Ads Manager serves across all selected placements. Meta's delivery system adapts the aspect ratio and rendering context per placement automatically. You select which placements to enable in the campaign's Placements section: Automatic Placements is the recommended starting point as it lets Meta's delivery algorithm optimise across all available surfaces.

How does Meta's playable ad review process work?

Meta runs automated policy scanning immediately on upload. This typically completes within minutes and catches technical issues like a missing FbPlayableAd.onCTAClick() call, file size violations, and prohibited content categories. A secondary human review may follow for flagged creatives or new advertiser accounts. Meta's review policy prohibits misleading gameplay, before/after imagery, and any content that violates the standard Meta Advertising Policies that apply to all ad formats.

Does Meta's size limit apply to the ZIP or to the HTML inside it?

Both, with different numbers. Meta accepts a ZIP of up to 5 MB, and separately requires the index.html inside it to stay under 2 MB: "2 MB HTML (5 MB ZIP)" in its own terms. That makes Meta the strictest published limit of the networks Playable Ads Maker exports to, and the export modal holds a Meta build to 2 MB and shows the estimate before you download.

Building for Meta (Facebook & Instagram): strategy guides

Related ad networks

Social

TikTok Ads

ZIP (index.html + main.js + config.json) · 5 MB

Mobile DSP

Google Ads / AdMob

ZIP (index.html + main.js) · 5 MB

Mobile DSP

InMobi

Single HTML file · 5 MB

← Back to all ad networks