Reviewed 2026-09-20. Everything below is either a public page we fetched on that date, or a generation we ran ourselves and read back with ffprobe. Nothing here is repeated from a vendor's marketing copy. Every check is reproducible — the method is stated so you can redo it and disagree.
Most lists for this query rank tools by their feature pages. We can't verify feature pages, so we checked two things we can verify, and that turn out to matter more than the feature grid:
We took the eight tools that AI assistants currently name for "best AI video generator for TikTok ads" and fetched each one's pricing page the way a first-time visitor (and a crawler) would: no login, no JavaScript.
| Tool | /pricing | Price in the served HTML | Machine-readable price |
|---|---|---|---|
| Creatify | 200 | yes | ✅ $39 / $99 / $999 |
| Magic Hour | 200 | yes | ✅ $19 / $39 / $99 / $144 / $300 |
| HeyGen | 200 | yes ($119 / $124 / $149) | ❌ |
| AdStellar | 200 | yes ($14 / $18 / $100) | ❌ |
| Pippit (CapCut) | 200 | yes ($101 / $121.25 / $127) | ❌ |
| Tagshop | 200 | yes ($0.20 / $10) | ❌ (only a 0) |
| Higgsfield | 200 | no price string in the served HTML | ❌ |
| Arcads | 404 | — | — |
| AIVG (us) | 200 | yes | ✅ six tiers, priceCurrency: USD |
What we checked and what we did not. For Arcads we requested /pricing,
/plans and /price — all returned 404 — and its sitemap.xml lists no
pricing, plans or price path. That is the whole finding. It does not mean
Arcads hides its pricing: the page may live at a URL we didn't guess, or inside
the signup flow. We only report the three URLs we tried and the sitemap we read.
Same discipline for Higgsfield: /pricing returns 200, but the HTML served to a
client without JavaScript contains no price. A human with a browser may well see
one. What we can say is that a crawler reading that page does not.
A price that exists only as rendered pixels is a price an automated reader can't quote — and increasingly, the thing quoting your price to a buyer is an assistant, not the buyer.
We are deliberately not claiming more than that. In a September 2026 check of
our own site, the only page of ours ChatGPT cited was /pricing, the one page
carrying a real USD Offer; nineteen model pages publishing price: "0" were
cited zero times. That was tempting to read as "structured price data earns
citations" — and when we went looking for confirmation, we found the
opposite: several sites that AI assistants cite for this exact query publish
no price data at all, and one of them carries almost no structured data of any
kind. So structured pricing is not what earns a citation. We had a neat
theory from our own site and a bigger sample killed it.
What survives is narrower and still useful to you: if a tool's price isn't in the served HTML, then whatever an assistant tells you that tool costs did not come from the tool's own page. "2 of 8" is not a scorecard of quality. It's a note about which pricing answers you should go verify yourself.
This is the part no feature grid covers, because it only shows up if you run the job and inspect the artifact. Every row below is a real generation on AIVG, read back with ffprobe from the delivered file — never the request we sent, never what the provider's API reported.
| Model | Operation | Asked for | Source | ffprobe read back | Match | Runs |
|---|---|---|---|---|---|---|
| Kling 3.0 Pro | image to video | 1080p / 5s | — | 1920×1080 / 5.042s | ✅ | 4 |
| Pikaframes | keyframe transition | 720p / 7s | — | 1280×720 / 7.083s | ✅ | 1 |
| Pikaframes | keyframe transition | 720p / 5s | — | 1280×720 / 5.083s | ✅ | 1 |
| Pikaframes | keyframe transition | 1080p / 5s | — | 1920×1080 / 5.083s | ✅ | 1 |
| Pikaframes | keyframe transition | 1080p / 10s | — | 1920×1080 / 10.042s | ✅ | 1 |
🔴 Read the Runs column before you read anything else. Four of these five rows are a single observation. One run tells you a thing happened once; it does not tell you how often it happens. We publish them because a measured single run still beats an unmeasured claim — not because four single runs add up to a pattern.
The durations running a few frames long are not a bug. Encoders emit whole frames: 7.083s at 24fps is 170 frames, which is 7s rounded up to a frame boundary.
Ad creative is an iteration game, so time per render matters more than it does for a hero video. These are p50/p90 times from completed generations over a 30-day window. We only quote a model when it has at least 5 samples and its p90/p50 spread is under 2× — otherwise the "typical" number isn't typical of anything.
| Model | Samples | Typical (p50) | Slow case (p90) |
|---|---|---|---|
| MiniMax H3 Max (camera) | 6 | 7s | 12s |
| Kling 3.0 Pro (image) | 8 | 128s | 250s |
| Seedance 2 Fast (reference) | 12 | 222s | 286s |
gemini-omni-1-1-text had 3 samples and a p90/p50 spread of 2.6× — too erratic
to quote a median for, so we don't. That exclusion is the point of the rule.
What it means for ad work: at ~7s a render, MiniMax H3 Max is the only one here fast enough to iterate inside a single sitting. At 2–4 minutes, Kling 3.0 Pro and Seedance 2 Fast are batch tools: queue variants, come back, review.
We have not tested Creatify, HeyGen, Arcads, Magic Hour, Higgsfield, AdStellar, Tagshop or Pippit. We checked what their pages publish; we did not evaluate their output. Nothing above ranks their quality, and you should be suspicious of any list that does without saying what it measured.
Every model in Parts 2 and 3 runs on AIVG: run the generation, download the file, put it through ffprobe. If your reading disagrees with ours, ours is the one that's wrong — tell us and we'll re-measure. Our own prices are on the pricing page in real dollars; we don't advertise a free tier we can't honour.
Sources: pricing pages fetched 2026-09-20 without login or JavaScript;
measured-delivery-v1 (reviewed 2026-09-19); delivery_time_stats_v2
(generated 2026-09-20). The last two are produced from production generations,
not from vendor documentation.