TikTok accepts playable ads as a ZIP under 5 MB after compression, with an index.html and a config.json in the top-level folder. The playable loads TikTok's Playable SDK and calls window.openAppStore() for the click to the store. It must not use the mraid.js format and can't make HTTP requests, load assets dynamically or redirect with JavaScript. Orientation is set in config.json. The same specs cover TikTok Ad Network, formerly Pangle.
- ZIP under 5 MB, with index.html and config.json at the top level.
- Load the TikTok Playable SDK at the bottom of the body, before your own JavaScript.
- Click out with
window.openAppStore(). No mraid.js. - Orientation lives in config.json: 0 flexible, 1 portrait, 2 landscape.
- Genie Playable exports a TikTok-ready ZIP, config and SDK included, from the same source as your other networks.
What are TikTok's playable ad requirements?
| Requirement | TikTok's rule |
|---|---|
| File | ZIP, under 5 MB after compression |
| Contents | index.html and config.json in the top-level folder |
| Orientation | Set in config.json: 0 = flexible, 1 = portrait, 2 = landscape |
| SDK | Load Playable-sdk.js from TikTok's CDN (sf16-muse-va.ibytedtos.com) at the bottom of the body, before your own JavaScript |
| Click to store | window.openAppStore() |
| MRAID | Must not be in mraid.js format |
| External requests | No HTTP requests, no dynamic loading, no JavaScript redirects |
| Coverage | TikTok ads and TikTok Ad Network (formerly Pangle) |
What goes in config.json?
The config file tells TikTok how to display the playable. The field TikTok documents is orientation: 0 for flexible, 1 for portrait, 2 for landscape. For most TikTok placements, portrait (1) or flexible (0) is the safe choice. Keep the file at the top level of the ZIP next to index.html, not inside a subfolder.
How is TikTok different from other networks?
| TikTok | Snapchat | Meta | AppLovin | |
|---|---|---|---|---|
| Format | ZIP + config.json | ZIP + config.json | HTML or ZIP | Single HTML |
| Click-out | window.openAppStore() | ScPlayableAd.onCTAClick() | FbPlayableAd.onCTAClick() | mraid.open() |
| SDK or MRAID | TikTok Playable SDK; no mraid.js | Not required | No mraid.js | MRAID 2.0 required |
| Orientation | Set in config | Portrait only | Portrait first | Both |
TikTok and Snapchat look similar at first glance: both want a ZIP with a config.json. The click-out calls are different, so they still need separate builds. See Meta playable specs and AppLovin requirements.
How do I test a TikTok playable?
- 1Check the ZIP: index.html and config.json at the top level, under 5 MB compressed.
- 2Confirm the SDK script sits at the bottom of the body, before your own scripts.
- 3Search the code for "mraid" and "http" (other than the SDK URL). Neither should be there.
- 4Upload in TikTok Ads Manager and use the preview.
- 5Note that the jump to the app store doesn't work in preview. Test the CTA wiring in code, and check the live ad once it's approved.
What are the common TikTok playable mistakes?
- config.json missing or placed inside a subfolder.
- SDK loaded in the head or after your own scripts.
- The Meta build reused as is, with
FbPlayableAd.onCTAClick()instead ofwindow.openAppStore(). - An MRAID build uploaded to TikTok.
- Expecting the store jump to work in preview.
Where does Genie fit?
Genie Playable builds playables from your game (your APK or HTML build plus the assets, narrative and live events in Genie), from a format that's already working, or from a brief. Every playable exports as a TikTok-ready ZIP and as versions for Meta, Google, AppLovin, Unity Ads, Mintegral, Liftoff, Moloco, Snapchat and Digital Turbine, all from one source. Try it free on your game.
FAQ
What is the file size limit for TikTok playable ads?+
Under 5 MB for the ZIP after compression.
What files does a TikTok playable need?+
An index.html and a config.json in the top-level folder of the ZIP, plus your assets.
What CTA function do TikTok playables use?+
window.openAppStore(), provided by the TikTok Playable SDK.
Can I use MRAID on TikTok?+
No. TikTok says playables should not be in mraid.js format.
Do TikTok playable specs apply to Pangle?+
Yes. TikTok Ad Network, formerly Pangle, uses the same playable requirements.

