> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snowdoughnut.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TikTok creative specs

> TikTok paid creative: In-Feed video, Spark Ads, carousel, and TopView, with resolution minimums, duration limits, and safe-zone guidance.

TikTok paid placements. Current as of 28 July 2026.

## Video placements

| Format                  | Ratio and minimum                                           | Duration                       | File                                                       |
| :---------------------- | :---------------------------------------------------------- | :----------------------------- | :--------------------------------------------------------- |
| **In-Feed (non-Spark)** | 9:16 min 540 × 960 · 16:9 min 960 × 540 · 1:1 min 640 × 640 | Up to 10 minutes               | MP4, MOV, MPEG, 3GP, AVI. Max 500 MB. Min bitrate 516 kbps |
| **Spark Ads (pull)**    | Uses the existing organic video                             | As published organically       | MP4 or MOV                                                 |
| **TopView**             | 9:16, min 540 × 960                                         | 5–60 s, **9–15 s recommended** | MP4, MOV, MPEG, 3GP. Max 500 MB. Min bitrate 2,500 kbps    |

Build vertical at **1080 × 1920**. The figures above are minimums, not targets.

<Warning>
  TopView creative requires pre-approval. Build the schedule around that rather than discovering it at launch.
</Warning>

## Carousel

| Property  | Spec                                        |
| :-------- | :------------------------------------------ |
| Images    | Upload 2–35; TikTok displays 2–20           |
| Format    | JPG, JPEG, PNG                              |
| File size | 100 KB or less per image suggested          |
| Landscape | 1200 × 628                                  |
| Square    | 640 × 640                                   |
| Vertical  | 720 × 1280                                  |
| Music     | **Required**, minimum 2 seconds             |
| Copy      | One caption, CTA, and URL across all images |

## Safe zones

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 480" width="100%" role="img" aria-label="A 9:16 vertical canvas with indicative top and bottom interface bands and a clear centre area.">
  <rect width="760" height="480" fill="#ffffff" />

  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="300" y="26" fill="#212529" font-weight="650" font-size="15">9:16 vertical — interface areas are indicative</text>

  <rect x="300" y="40" width="225" height="400" fill="#f1f3f5" stroke="#adb5bd" stroke-width="2" />

  <rect x="300" y="40" width="225" height="52" fill="#e03131" fill-opacity=".13" />

  <rect x="300" y="330" width="225" height="110" fill="#e03131" fill-opacity=".13" />

  <rect x="300" y="92" width="225" height="238" fill="#2f9e44" fill-opacity=".08" />

  <rect x="300" y="92" width="225" height="238" fill="none" stroke="#2f9e44" stroke-width="2.5" />

  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="412" y="70" fill="#e03131" font-size="11" text-anchor="middle">interface</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="412" y="206" fill="#2f9e44" font-weight="650" font-size="11.5" text-anchor="middle">KEEP KEY ELEMENTS HERE</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="412" y="380" fill="#e03131" font-size="11" text-anchor="middle">caption, CTA,</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="412" y="394" fill="#e03131" font-size="11" text-anchor="middle">interaction icons</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="280" y="52" fill="#212529" font-weight="650" font-size="26" text-anchor="end">9:16</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="280" y="76" fill="#495057" font-size="13" text-anchor="end">1080 × 1920 px</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="280" y="104" fill="#868e96" font-size="11" text-anchor="end">Band sizes shown are</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="280" y="118" fill="#868e96" font-size="11" text-anchor="end">illustrative, not measured.</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="280" y="132" fill="#868e96" font-size="11" text-anchor="end">Use TikTok's template for</text>
  <text font-family="ui-sans-serif, system-ui, Segoe UI, Arial, sans-serif" x="280" y="146" fill="#868e96" font-size="11" text-anchor="end">exact pixels.</text>
</svg>

<Warning>
  The bands above show **where** the interface sits, not how big it is. The usable area changes with caption length and which interactive elements are present, so there is no single correct number. TikTok publishes downloadable placement-specific safe-zone templates — drop one into your artboard and design against it.
</Warning>

## Copy limits

| Field                                       | Limit               |
| :------------------------------------------ | :------------------ |
| Caption (TopView, non-Spark and Spark push) | 100 characters      |
| Caption lines shown (Spark)                 | 4 before truncation |
| Account name                                | 20 Latin characters |

Captions render in TikTok's standard white font. They do **not** support clickable links, @ mentions, or hashtags.

## Working notes

* **Vertical first.** 9:16 is the native experience; landscape and square are fallbacks.
* **Music is not optional on carousel.** A carousel without a track will not run.
* **Watch the carousel file size.** 100 KB per image is tight; compress deliberately rather than letting an export tool decide.

## Related resources

* [Image and video specs](/image-and-video-specs)
* [TikTok In-Feed copy template](/tiktok-in-feed-copy-template)
* [TikTok Carousel copy template](/tiktok-carousel-copy-template)
* [TikTok TopView copy template](/tiktok-topview-copy-template)
* [Creative brief](/creative-brief)
