Ad Network Guide

Playable Ads for TikTok Ads

TikTok Ads reaches over 1 billion monthly active users through an algorithmically curated full-screen, sound-on, vertical video feed. Its audience skews younger than any other major ad platform: Gen Z and younger Millennials who scroll quickly, respond to fast-paced visual content, and are accustomed to interactive media. TikTok's ad placements are full-screen and vertical, so a playable ad has the same shape as organic TikTok content and fills the screen in a way a banner or pre-roll does not.

ZIP (index.html + main.js + config.json)Size limit: 5 MBNot used — TikTok playable SDK

TikTok does not use MRAID for playable ads. Its documentation asks you to include TikTok's playable JS SDK in the creative and to trigger the store from your CTA with window.openAppStore(), and nothing else: no mraid.js, no JavaScript redirects and no HTTP requests at runtime. The config.json beside index.html is metadata about the creative rather than about your app: its playable_orientation field (0 for responsive, 1 for portrait only, 2 for landscape only) tells TikTok how the material may be shown.

The Playable Ads Maker generates a TikTok-ready ZIP containing index.html with every asset inlined, main.js with the playable itself, and a config.json whose playable_orientation matches your project. TikTok's playable SDK is included for you and your CTA calls window.openAppStore(), which opens the store set on your campaign. Playables run in Smart+ App Promotion campaigns in TikTok Ads Manager: you upload the ZIP there, preview it with TikTok's device simulator to confirm the portrait rendering, and launch. TikTok generates the end card that follows the playable itself, and the same campaign can also reach the TikTok Ad Network (formerly Pangle), its network of partner apps.

Export specifications

SpecificationValue
Accepted formatZIP
Playable Ads Maker exportsZIP (index.html + main.js + config.json)
Published size limit5 MB
Playable Ads Maker builds to5 MB
MRAIDNot used — TikTok playable SDK
Store-exit callwindow.openAppStore()
External requestsNone allowed at runtime
Preferred orientationPortrait (9:16): landscape supported but not recommended
config.json purposeplayable_orientation: 0 responsive, 1 portrait only, 2 landscape only
Campaign typeSmart+ App Promotion
End cardGenerated by TikTok
Runtime rulesNo mraid.js, no JS redirects, no HTTP requests

Size, format, MRAID and store-exit rows are taken from TikTok Ads’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 TikTok Ads requirements (size, packaging, MRAID and the store-exit call) in your browser, with nothing uploaded.

Check my TikTok Ads playable ad

How to upload to TikTok Ads

  1. Design your playable in portrait (9:16) orientation from the start: TikTok's feed is vertical, and a landscape creative will letterbox inside the player rather than filling the screen.
  2. Select the TikTok Ads preset in the Export modal. The CTA is wired to window.openAppStore(), which takes no URL: TikTok opens the store set on your campaign.
  3. The exporter generates index.html carrying TikTok's playable SDK and your styles, main.js with the playable, and a config.json whose playable_orientation matches your project. All three are packaged into a single ZIP.
  4. Download the ZIP and confirm its total compressed size is under 5 MB. TikTok states its limit against the ZIP after compression.
  5. In TikTok Ads Manager, create a Smart+ App Promotion campaign, the campaign type TikTok runs playables in. At the ad creative step, select Playable as the creative type and upload the ZIP file.
  6. Use TikTok Ads Manager's built-in Playable Preview tool to see the ad on a virtual phone screen and test that the interactive mechanic and CTA button are reachable with a thumb on a portrait screen.
  7. Set your audience, daily budget, and campaign optimisation goal (installs or in-app events), then publish. TikTok's algorithm distributes the playable across TikTok in-feed and, where the campaign includes it, the TikTok Ad Network (formerly Pangle).

File size tip

TikTok Ads publishes a limit of 5 MB; Playable Ads Maker builds TikTok Ads exports to 5 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 TikTok Ads playable ads

Start the action inside the first 3 seconds

TikTok users make a keep-or-swipe decision within the first 1–2 seconds of any content. Your playable must begin with immediate visual action, not a loading screen, not a slow pan, and not a static logo. Start mid-animation: show the game mechanic already in motion, with a single prominent tap target visible before the first second has elapsed. Playables that open with a 'Press play to start' screen get much lower engagement on TikTok than on any other network.

Check config.json's orientation against the canvas you designed on

config.json is metadata about the creative, not about your app: it carries a single playable_orientation field, where 0 means responsive (either orientation), 1 portrait only and 2 landscape only. The exporter sets it from your project, so a playable designed on a landscape canvas and intended for the vertical feed will declare the wrong thing. Open config.json from the downloaded ZIP and confirm the number matches how you want the ad shown. Your store URLs are not in this file or in the creative: window.openAppStore() opens the store set on your campaign.

Design touch targets for single-thumb use on a 6-inch portrait screen

TikTok's primary device is a large-screen phone held vertically in one hand. Interactive elements in the bottom 30% of the screen are easy to reach with a thumb; elements near the top require two-handed use and are commonly ignored. Place your core interaction tap target in the lower-centre or lower-left of the screen and keep the CTA button large (minimum 48px tappable area) in the lower-centre. Avoid interactions that require two simultaneous taps or swipe gestures that conflict with TikTok's own scroll gesture.

Playable Ads Maker does the TikTok Ads packaging (ZIP (index.html + main.js + config.json)), wires the window.openAppStore() store exit and inlines every asset when you export.

Build your playable ad

Frequently asked questions

Why does TikTok use its own SDK instead of MRAID for playable ads?

TikTok's in-app webview uses TikTok's own playable SDK rather than an IAB MRAID-compatible one, and its documentation asks the creative to load that SDK itself and call window.openAppStore() from the CTA. It also tells you not to ship mraid.js, so MRAID calls inside a TikTok webview do nothing, which is why a non-TikTok preset export on TikTok has a CTA that looks like it works and never opens the store.

What is config.json and what does it need to contain?

config.json sits beside index.html in the ZIP and describes the creative, not your app: it carries the playable_orientation field: 0 for responsive, 1 for portrait only, 2 for landscape only. It does not hold store URLs or a bundle ID. The Playable Ads Maker writes it from your project; the store comes from your campaign, opened by window.openAppStore().

Does TikTok measure the compressed ZIP size or the unzipped content size?

The compressed ZIP. TikTok documents a .zip under 5 MB after compression, so it is the archive you upload that counts. Google also measures the .ZIP; Meta is the one that adds a separate limit on the index.html inside its ZIP. Base64-inlined assets do not compress much, so treat the unzipped size as a close guide rather than expecting the ZIP to rescue an oversized build.

Can TikTok playable ads run on the TikTok Ad Network (formerly Pangle)?

Yes. TikTok Ads Manager lets you include the TikTok Ad Network (the partner-app network formerly called Pangle) alongside TikTok-owned inventory within the same App Promotion campaign. The same ZIP file serves both surfaces. Partner-app inventory tends to have different demographic characteristics than TikTok in-feed (more diverse age ranges and more gaming-app contexts) so performance metrics often differ between the two placement types within the same campaign.

How does portrait-first orientation affect my playable's performance on TikTok?

TikTok's entire in-feed experience is built around portrait content. Users never rotate their phones to landscape to consume TikTok content. A playable designed in landscape orientation is letterboxed into a portrait container with black bars, which reduces the effective screen area for your interaction and signals to users that the ad was not purpose-built for TikTok. Designing natively in 9:16 portrait from the start (rather than adapting a landscape creative) consistently outperforms in TikTok's A/B creative test data.

Building for TikTok Ads: strategy guides

Related ad networks

Mobile DSP

TikTok Ad Network (formerly Pangle)

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

Social

Meta (Facebook & Instagram)

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

Mobile DSP

Google Ads / AdMob

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

← Back to all ad networks