Each row links to the platform's own documentation. Values are quoted as published — not rounded, not paraphrased. Platforms change specs; the linked page always wins over this table.
| Field | Requirement | Source |
|---|---|---|
| Aspect ratio (TikTok Ads, Auction In-Feed, non-Spark) | Vertical (recommended): 9:16 | Horizontal: 16:9 | Square: 1:1 | ads.tiktok.com |
| Minimum resolution — vertical (Auction In-Feed) | 9:16, more than or equal to 540*960px | ads.tiktok.com |
| Minimum resolution — horizontal (Auction In-Feed) | 16:9, more than or equal to 960*540px | ads.tiktok.com |
| Minimum resolution — square (Auction In-Feed) | 1:1, more than or equal to 640*640px | ads.tiktok.com |
| Max duration (TikTok Ads, non-Spark In-Feed) | up to 10 minutes | ads.tiktok.com |
| Max file size (TikTok Ads, non-Spark In-Feed) | Less than or equal to 500 MB | ads.tiktok.com |
| Minimum bitrate (TikTok Ads, non-Spark In-Feed) | More than or equal to 516 kbps | ads.tiktok.com |
| Accepted containers (TikTok Ads, non-Spark In-Feed) | .mp4, .mov, .mpeg, .3gp .avi | ads.tiktok.com |
| Frame rate (TikTok Ads In-Feed) | Not stated — the ad spec article publishes no FPS/frame-rate requirement (confirmed absent, not merely unfound) | ads.tiktok.com |
| Safe zone (TikTok Ads In-Feed) — the classic trip-up | "The safe zone size is determined by the dimension (vertical, horizontal, or square), ad caption length, and any additional formats used." No pixel measurements are published inline; TikTok provides downloadable safe-zone template files (Standard LTR and Arabic RTL versions) instead. | ads.tiktok.com |
| Ad caption display limit (Spark Ads) | Extracted directly from the organic video captions. A maximum of 4 lines can be displayed, including emojis. | ads.tiktok.com |
| Account name (Nickname) display limit | Maximum 10 characters (CJK) or 20 characters (other languages) | ads.tiktok.com |
| Profile photo — dimension / ratio (ad unit) | 98x98px, Square 1:1 | ads.tiktok.com |
| Profile photo — format and file size (ad unit) | Formats: .jpg, .jpeg, .png; file size less than 50 KB | ads.tiktok.com |
| Profile photo — safe zone (ad unit) | "The key element should be in the center of the 66px*66px-sized image to prevent it from being cropped." | ads.tiktok.com |
| Spark Ads — format (per spec article) | .mp4 or .mov | ads.tiktok.com |
| Spark Ads — duration (per spec article) | "Video duration: No restrictions." — CONTRADICTS the Spark Ads article, see notes | ads.tiktok.com |
| Spark Ads — overall creative restrictions (per Spark Ads article) | "There are no restrictions on video ratio, video resolution, file type, video duration, bitrate, and file size." | ads.tiktok.com |
| Spark Ads — max video length (per Spark Ads article) | 10-minute maximum video length for content usable as a Spark Ad — CONTRADICTS "No restrictions" above, see notes | ads.tiktok.com |
| Spark Ads — account cap (trip-up) | Each TikTok Ads Manager account can support a maximum of 10,000 Spark Ads | ads.tiktok.com |
| Spark Ads — deletion rule (trip-up) | "Videos need to be un-authorized as a Spark Ad before it can be deleted" | ads.tiktok.com |
| Organic — accepted containers | MP4 (recommended), WebM, MOV | developers.tiktok.com |
| Organic — accepted codecs | H.264 (recommended), H.265, VP8, VP9 | developers.tiktok.com |
| Organic — maximum file size | Maximum of 4GB | developers.tiktok.com |
| Organic — minimum resolution | Minimum of 360 pixels for both height and width | developers.tiktok.com |
| Organic — maximum resolution | Maximum of 4096 pixels for both height and width | developers.tiktok.com |
| Organic — frame rate limits | Minimum of 23 FPS; Maximum of 60 FPS | developers.tiktok.com |
| Organic — maximum duration | Creators can post up to 3, 5, or 10-minute videos depending on account status; via API developers may send videos up to 10 minutes long (users can trim afterward to match their account limit) | developers.tiktok.com |
| Organic — photo post image specs | Formats: WebP, JPEG; resolution maximum 1080p; maximum of 20MB for each image | developers.tiktok.com |
| Organic — chunked upload rules (trip-up) | Chunk size "at least 5 MB but no greater than 64 MB, except for the final chunk, which can be greater than chunk_size (up to 128 MB)"; minimum of 1 chunk and a maximum of 1000 chunks; must be uploaded sequentially | developers.tiktok.com |
| Organic — caption/title max length | The maximum length is 2200 in UTF-16 runes | developers.tiktok.com |
| Organic — upload Content-Type values accepted | video/mp4, video/quicktime, video/webm | developers.tiktok.com |
| Organic — max photos per photo post | 最多可添加 35 张照片 (maximum 35 photos per post) | tiktok.com |
| Organic — aspect ratio (in-app / consumer surface) | No aspect ratio is published on TikTok's consumer support pages. 9:16 is only stated first-party in the ads context. Do not treat a 9:16 organic requirement as officially published.⚠ could not confirm on the official page | tiktok.com |
| Organic — max duration on consumer support surface (60-min upload claim) | Could not verify on any first-party page. The only first-party duration figures found are 3/5/10 minutes (developer docs). The widely-blogged 60-minute limit was NOT confirmed on a TikTok-owned page.⚠ could not confirm on the official page | tiktok.com |
| Organic — cover / thumbnail image spec | No cover/thumbnail pixel or file-size spec is published on the TikTok ad spec article or the consumer support posting page. The ads article's only image spec is the 98x98px profile photo.⚠ could not confirm on the official page | ads.tiktok.com |
| Global App Bundle image ads — aspect ratio & resolution | Vertical (recommended): 9:16, ≥720*1280px | Horizontal: 16:9, ≥1280*720px | Square: 1:1, ≥640*640px | ads.tiktok.com |
| Global App Bundle image ads — formats & size | Accepted formats: JPG, JPEG, PNG; File size within 100MB | ads.tiktok.com |
METHOD / ACCESS PROBLEMS. The WebSearch budget for this session was already fully consumed (200/200) before I made a single call, so I could not search — everything below came from direct URL fetches and one real browser render. Most guessed ads.tiktok.com/help/article/<slug> URLs return "The article you are looking for no longer exists or failed to load" (tiktok-video-ad-specifications, tiktok-ads-specifications, video-ad-specifications, creative-specifications, in-feed-ads, tiktok-video-ads all 404). I recovered the canonical article IDs from the Ad Review Checklist page, which links video specs as aid=6669199281502552069 and image specs as aid=6701253237862825989. Those two IDs are the load-bearing sources here; the human-readable slugs are unreliable. PAGES THAT WOULD NOT FETCH. support.tiktok.com now 302-redirects to www.tiktok.com/support/faq_detail?id=..., and those pages are JS-rendered — WebFetch returns only an empty "TikTok Support" shell. I rendered them in a real browser to get past this. The rendered "posting a post" FAQ contains NO technical specs at all (no duration, no file size, no aspect ratio, no format) — it is a pure how-to. TikTok's support search URL would not render either. business-api.tiktok.com/portal/docs also returns an unrendered shell. This is why several organic rows are marked unverified: the numbers are simply not published on a TikTok consumer page I could reach, and I declined to fill them from blogs. DIRECT CONTRADICTION BETWEEN TWO OFFICIAL PAGES — Spark Ads duration. The spec article (aid=6669199281502552069) states for Spark Ads (Pull): "Video duration: No restrictions." The Spark Ads article (ads.tiktok.com/help/article/spark-ads) states a 10-minute maximum video length, while also saying "There are no restrictions on video ratio, video resolution, file type, video duration, bitrate, and file size." The Spark Ads article therefore contradicts both the spec article and itself within the same page. Both are recorded above. Practical read: treat 10 minutes as the real ceiling. The two pages also disagree on format — the spec article restricts Spark Ads to ".mp4 or .mov" while the Spark Ads article says there is no file-type restriction. RECENCY. The In-Feed ad spec article carries "Last Updated: June 2026" — i.e. roughly one month old as of this check, so it is current. I could not diff it against an earlier revision (no archive access without search), so I cannot state which specific values changed in the last year. Treat "what changed recently" as unestablished rather than "nothing changed." SURFACE MAPPING CAVEAT. The ads numbers above are specifically TikTok Auction In-Feed Ads. The spec article contains no separate tables for Pangle or Global App Bundle *video*; the aid=6701253237862825989 article turned out to be Global App Bundle *image* ads (CapCut/Fizzo placements), not a general TikTok image spec — I labeled those rows accordingly rather than presenting them as sitewide. SCOPE NOTE. The task brief lists Amazon main-image video duration, A+ module counts, and Reels/Shorts safe zones as examples. Those are not TikTok surfaces and no TikTok-owned page covers them, so I did not produce rows for them; the TikTok equivalent of the safe-zone concern is captured in the Safe Zone row, where TikTok deliberately publishes downloadable templates instead of pixel numbers. FRAME RATE ASYMMETRY (easy to get wrong). TikTok publishes explicit frame-rate bounds for organic posting (23–60 FPS, developer docs) but publishes NO frame-rate requirement for In-Feed ads. I verified that absence on the page rather than assuming it, so do not carry the 23–60 FPS figure over to ad creative as if it were an ad spec.
Platforms can change them at any time. Every row here links to the source, so if something looks off, the linked page wins — and tell us. Checked: 2026-07-25.
Aspect ratio and duration are chosen before generating, and templates come preset to common platform ratios. Delivery parameters like codec, container and file size depend on what you do after export; this page lists the requirements so you can check them.
Yes. The template library includes a cross-platform adaptation that recomposes one key visual into 1:1 / 9:16 / 16:9 rather than cropping it.