Snapchat playable specs at a glance
| File format | .zip with index.html and config.json at the root |
|---|---|
| Max file size | Up to 5 MB |
| Orientation | Portrait only. The orientation value in config.json must be 1. |
| MRAID | Not used. The asset shouldn't require mraid.js. |
| CTA call | ScPlayableAd.onCTAClick(); |
| External requests | None. No external HTTP requests or dynamic asset loading. |
| Redirects | No JavaScript redirects |
| Ad formats | Attached to Single Image or Video ads, Story ads and AR ads, behind a “Try It Out” button |
| Campaign | App Promotion objective, App Install or App Purchase goal |
| Testing | No separate tool. Upload in Ads Manager and preview there. |
Required code
Snap provides ScPlayableAd inside the app. Call it from every install button, guarded so the file still runs in a browser:
installButton.addEventListener("click", function () {
if (typeof ScPlayableAd !== "undefined") {
ScPlayableAd.onCTAClick();
}
});
Next to index.html, add a config.json with the orientation set to portrait:
{ "playable_orientation": 1 }
Snap's help page says config.json holds the playable's orientation and the value must be 1, but it doesn't print the key name. playable_orientation is the key TikTok uses for the same file, and it's what the common playable tools write. Confirm with your Snap rep if an upload is refused.
How Snapchat playables run
The playable isn't a standalone ad. It's a Playable Asset you attach to a Single Image or Video ad, a Story ad or an AR ad in Ads Manager (Ad creatives → Playable asset → Upload). Snapchatters tap Try It Out to open it full screen, and Ads Manager reports CTA clicks and playtime. App Playables need the App Promotion objective with an App Install or App Purchase goal.
Snap introduced the format in 2025 and early reports described it as in testing for some campaign types. If you don't see the playable option in your account, ask your Snap rep to enable it.
Porting from another network
Snap's spec is close to TikTok's: a ZIP with index.html and config.json, no MRAID, no network calls. The differences are that Snap is portrait only, uses ScPlayableAd.onCTAClick() instead of window.openAppStore(), and doesn't need an SDK script tag. Older guides that describe Snap playables as MRAID 2.0 with a snapchatCta() hook are out of date.
Why Snapchat rejects playables
Snap doesn't publish a playable error list. Going by its spec, these are the things that fail:
- The ZIP is over 5 MB.
index.htmlorconfig.jsonisn't at the root.- The orientation in
config.jsonisn't1, or the game only works in landscape. - The playable loads
mraid.js, fonts, analytics or anything else from the network. - It redirects without a tap, or the install button doesn't call
ScPlayableAd.onCTAClick().
Snap's general ad policies apply too, such as not imitating the Snapchat interface.
Common questions
Does Snapchat support playable ads?
Yes. Snapchat's App Playables let app advertisers attach an HTML5 playable to an image, video, Story or AR ad under the App Promotion objective. Users open it with a Try It Out button.
What is the file size limit for Snapchat playable ads?
Up to 5 MB for the ZIP.
What is the CTA function for Snapchat playables?
ScPlayableAd.onCTAClick(). Snap requires the playable to call it when the user taps the install button.
Do Snapchat playables use MRAID?
No. Snap's spec says the asset shouldn't require mraid.js. Older guides that describe an MRAID 2.0 setup are out of date.
Can Snapchat playables be landscape?
No. Snap supports portrait only, and the orientation value in config.json must be 1.
How do I test a Snapchat playable?
Snap has no separate test tool. Upload the ZIP as a Playable Asset in Ads Manager and preview the ad there.
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.