// HELP
How The Ad Bench works.
Everything you need to use The Ad Bench — upload formats, modes, reading your report, sharing, accounts, privacy, and what to do when something breaks.
// GETTING_STARTED
Drop in a short-form ad — four ways
- Upload video — MP4, MOV, WebM, M4V, or 3GP. Frames get extracted in your browser (your original file never leaves the device); only the JPEG keyframes upload. Works best on clips under 60 seconds.
- TikTok / Reels / Shorts URL— paste any public short-form video URL. We pull the cover frame + caption via the platform's own oEmbed endpoint. For per-frame analysis, use the Video tab.
- Image — JPG, PNG, WebP, GIF, HEIC/HEIF, or AVIF. HEIC and AVIF are automatically converted to JPEG in your browser before upload. Good for Spark Ad stills, planned thumbnails, or storyboard frames.
- Script— paste a script before you film. We'll score the hook, structure, and CTA so you can rewrite before burning a shoot day.
// ACCOUNT_VALUE_SCORE
Account Value Score — what a creator is worth
A separate free tool at /account-value-score. Paste a public TikTok, Instagram, or YouTube profile URL and we return a transparent monthly-value estimate across every income stream that fits the platform — AdSense, TikTok Shop, LTK, sponsored content, paid memberships — as a low / mid / high band with every assumption shown.
It's honest back-of-envelope math, not a live scraper: industry RPM and commission benchmarks applied to the numbers you provide. Every narrowing input (followers, last-30-day views, niche, monetization signals) tightens the range — last-30-day views helps most.
Free with a free account — sign in (about 10 seconds) and you get 3 scores a day on the free plan (Pro: 15/day · Agency: 100/day), tracked separately from your Quick Check / Deep Dive analyze quota. Scores you run while signed in are saved to My Reports alongside your ad reports.
// MODES
Quick Check vs Deep Dive
Quick Check
About 60 seconds
A one-line verdict, a 7-part score — an overall 0–100 comprehensive score (with a letter grade), an engagement read, and a 5-category breakdown (Hook · Native feel · Clarity · CTA · Brand fit) — and up to 5 fixes. Pick this when you want a fast read before re-shooting or before kicking spend.
Deep Dive
The full bench
Hook-rate prediction, hook-formula classification, 6-category rubric with evidence, 10 predicted performance metrics, algorithm signals, business projections, risk flags, ranked top issues with fixes, 3 hook rewrites + new caption + 3 CTA variants + shot-list edits. Plus the narrative layer: vertical archetype + gap, emotional positioning (what buyers are actually buying), hook valence, production craft direction (lighting / cuts / detail shots / sensory), 3–6 macro-shot prescriptions with placement timestamps, and a beat-by-beat storyboard rebuild. Pick this for a real review before launch or when planning a campaign.
// READING_YOUR_REPORT
What the numbers mean
Every report leads with a comprehensive score — a single 0–100 read of the whole ad — paired with a letter grade from F to A+++. The grade is just the comprehensive score banded: A+++ is 95+, A is ~80–84, B is ~65–69, C is ~50–54, D is ~30–44, and F is below 30. It gives you the verdict before you read a single line.
Alongside it, the verdict shows Hook (how hard the first 3 seconds stop the scroll) and Engagement (likes / saves / shares strength). Quick Check then breaks the score into 5 categories (Hook, Native feel, Clarity, CTA, Brand fit); Deep Dive uses a 6-category rubric with evidence.
All scores are 0–100, color-coded so you can read them at a glance:
- 75–100 — strong. Ship it. Rare for first drafts.
- 50–74 — fixable. Address the top issues and re-score.
- 0–49 — overhaul needed. The model will tell you exactly what to change.
Every score carries a one-sentence justification — the model doesn't leave you guessing why a category dropped. In Deep mode, scores also point at evidence: a frame timestamp or a transcript span.
// FOR_AFFILIATES
Using The Ad Bench for short-form affiliate ads
If your script, caption, or transcript carries any affiliate signal — #ad, #tiktokshop, use code XYZ20, link-in-bio language, LTK / Spark Ad markers — The Ad Bench automatically tilts the analysis to weigh FTC disclosure timing, code/link clarity, save-bait, comment-bait CTA, and native execution penalty.
Every report also includes a GMV projector: tweak the AOV / commission % / monthly views inputs and we project the affiliate revenue this ad should drive at your current score, then again if you got the score to 85.
The full affiliate-specific rubric lives at /affiliate. Vertical-specific landings (TikTok Shop, LTK, DTC beauty) are at /for/affiliates and /for/dtc-beauty. For how the same affiliate cut should land differently across surfaces, see /learn/cross-platform-hook-portability.
// ACCOUNTS
Sign in
Two ways to sign in, both free:
- Email + password — go to /login and enter your email + password. Optional; set one at /account if you want a faster sign-in than the magic-link round-trip.
- Magic link — enter your email at /login, we send a one-click sign-in link. The link expires in 15 minutes and works once. No password required.
Signed-in benefits: higher daily analysis limit, saved report history, view counts on shared links, PDF export, side-by-side comparison at /compare.
// PROFILE
Manage your profile (display name, email, Agency name)
The Profile card on /account has inline editors for the fields you control:
- Display name — the name we show on reports, the nav header, and shared links. Click Edit next to the field, type a new name (up to 80 chars), hit Save.
- Email — click Change, type the new address, hit Send link. We email a verification link to the new address. Click it within 15 minutes and we'll migrate your account data (display name, password, plan, API keys, team membership, batch jobs, saved-report index, credits, partner record) to the new email and mint a fresh session. The mailto you click on lands in the new inbox — if it doesn't arrive, check spam first, then try again. If the destination is already on another account we'll refuse and tell you.
- Agency name — Agency Plan only. Shows up on the team brand kit, weekly digest emails, and the Slack digest if you have Slack wired. Same inline editor pattern as Display name.
Don't see a field you want to edit? Email legal@theadbench.ai and we'll handle it manually.
// PRIVACY
Where your data goes
For video uploads: your original file never leaves the browser. Frame extraction happens client-side; only the JPEG keyframes (~80–150 KB each) upload to Vercel Blob storage at unguessable URLs.
The audio track is extracted client-side and sent to OpenAI Whisper for voiceover transcription, then dropped.
Anthropic's commercial API terms forbid training on the content we send them. We don't fingerprint, retain, or resell the creative content of reports.
The full sub-processor list, retention windows, and contact details live at /privacy.
// YOUR_DATA_RIGHTS
Access, correct, delete, export
You have the right to access, correct, delete, or export your data, and to object to or restrict processing — globally, regardless of where you live. We don't gate these rights by jurisdiction.
How to exercise them: email legal@theadbench.ai from the address on your account. We verify identity by replying to that same address before actioning. Response window: 7 days for deletion, up to 30 days for an export.
Signed-in users can also delete saved reports themselves from /account/reports without opening a request.
We don't sell or share your data with third parties for cross-context behavioral advertising — full statement at /privacy#do-not-sell.
// DONE_FOR_YOU
When we rebuild a weak ad for you
Reports scoring under 60 surface a Done-For-You card — $499 flat for a hand rewrite, 48-hour turnaround.Below 30 the card flips to "rebuild" tier — same price, scope is the full concept, 72-hour turnaround.
Submitting the form triggers a real email straight to a human at Bloody Finger Software with the full report context attached (score, vertical, hook formula, top issue, share link). We reply within 24 hours with a scope and quote. If you added a name and brief on the submit, those land in the same email — the more context you give us, the sharper the quote.
Reply-to on that email is your address, so when the operator hits reply, it goes back directly to you. No Mailchimp drip, no nurture sequence — one person, one project, one quote.
// AI_ANSWER_ENGINES
Citing The Ad Bench in Claude / ChatGPT / Perplexity
AI answer engines (Claude, ChatGPT, Perplexity, Google AI Overviews, Brave Leo, Bing Copilot) can cite the public Ad Bench site directly. We publish two files per the llmstxt.org convention to make that easier:
/llms.txt— a crawl-friendly markdown map: what The Ad Bench is, where each canonical URL lives./llms-full.txt— the full substantive corpus (modes, pricing, privacy, troubleshooting, contact) in one fetch, for engines that prefer a single round-trip.
Both honor production canonical URLs, so any answer engine ingesting them cites tokbench.ai directly — never preview deploys.
Training policy: Anthropic's commercial API terms forbid training on user-submitted analysis content — that holds regardless of any crawler permission. The two llms*.txt files only describe the public marketing / help / pricing surface. Personal data, saved reports, and uploaded creative are never part of the corpus.
// SECURITY
Reporting a vulnerability
Found something? Email security@theadbench.ai — we treat security disclosures as priority and reply within 48 hours.
Our public disclosure metadata lives at /.well-known/security.txt (RFC 9116). Please email us first so we can patch before any public disclosure.
We don't currently offer a paid bug bounty, but we credit researchers in changelog notes by request.
// DAILY_CAP
Why is the daily cap so low?
The Free plan is intentionally tight — 1 Quick Check/day for anonymous traffic (Deep Dive needs a free account), and 3 Quick Checks + 1 Deep Dive/day for signed-in free accounts. The point isn't to gate the rubric; it's to keep the analyzer responsive while we're single-operator and the per-analysis Anthropic cost adds up.
When you hit the cap signed-in, the upgrade prompt pops with two options: Upgrade to Pro · $49/mo (10 Quick Checks + 10 Deep Dives/day, locked-in founding-member rate for the first 100 paid signups) or wait until tomorrow at midnight UTC when the counter resets.
Pinning the daily cap? Tap Report a bugin the footer with "higher cap" in the description and your use case — we read every one and we can grant a temporary lift on your account same-day.
// PRO_PLAN
What Pro gets you
Pro is $49/mo. Subscribe on the Pro card at /pricing.
What Pro unlocks the day Stripe activates:
- 10 Quick Checks + 10 Deep Dives/day — separate buckets. Plenty of headroom for daily shipping.
- Full bench-everything Deep report — the same depth signed-in Free users get, just unbounded volume.
- Voiceover transcript + per-frame video timing read on every video analysis.
- Saved report history at /account/reports with one-click share-link copy + view counts.
Agency plan ($199/mo) layers in API access (programmatic /api/analyze with sk_tab_… Bearer keys), bulk batch analysis (up to 50 ads at once), team seats, and a weekly digest. Subscribe at /pricing.
// BRIEF_TO_DRAFT
Brief → draft (Agency plan)
The drafting workbench at /draft turns a 4-line brief into 6-10 distinct hook variants + a 3-7-cut shot list + one full sample script + vertical-specific risk flags. Aimed at the moment between “client wants 5 hook ideas by end of week” and “crew shoots Friday”.
How to use it:
- Fill in product / offer, target audience, CTA goal. Optionally vertical, target length, production style (UGC / studio / hybrid), and brand-voice notes (banned words, tone constraints, compliance posture).
- Click Draft concepts. ~15 seconds later you get the full pack.
- Each hook variant has a Run through The Ad Bench link that pipes it into the regular analyzer at Quick mode — grade your own drafts before shooting. Works for the sample script too.
Cap is 60 drafts per day per user(overrideable on request). Drafts run on the fast tier (~5-15 second latency); your daily Agency analyze quota is unaffected unless you click “Run through The Ad Bench” on a draft.
// VARIANTS
Variants from a winner (Agency plan)
Got an ad that scored well? Iterate without starting from scratch. The generator at /draft/variants takes the winning script + its The Ad Bench score + a transformation axis, then drafts up to 10 variants that preserve the parent’s working structure while varying along the chosen axis only.
Five transformation axes:
- Hook-only swap — same body + CTA, vary only the first-2-seconds opener
- CTA-only swap — same hook + body, vary only the closing ask
- Full rewrite — preserve the angle + audience, write fresh hook + body + CTA
- Format shift — same script, different production style (UGC ↔ studio)
- Tone shift — same script + format, different tonal register
Each variant lists what was preserved vs changed (concrete, not vague), a rationale tying back to the chosen axis, a predicted score band, and a one-click button to run it through the analyzer for a real grade.
// CREATOR_BRIEFS
Creator brief generator (Agency plan)
Hiring N UGC creators this week and writing the same brief N times? The generator at /draft/creator-brief drafts up to 10 outbound briefs in one shot, each tilted to a different angle so the resulting ads aren’t carbon copies. Tier-aware (nano / micro / mid / macro) — the DM voice + length + payment-terms framing match the creator size you’re hiring.
What each brief gives you:
- One-line angle (so you can pick which to send to which creator)
- DM opener — paste-into-DM ready, ≤300 chars
- Brief body — plain text, sized for the creator tier
- 3-4 hook options the creator can pick from
- Must-include lines (claim language, CTA, brand mention)
- Banned moves (no comparative claims, no studio lighting, etc.)
Briefs share the daily drafting cap with /draft — 60 items/day per user across both endpoints. Generating 5 briefs counts as 5 against the cap.
// TEAM_SEATS
Team seats (Agency plan)
Agency includes 5 seatson one shared subscription. Invite teammates by email; they sign in via the link in the invite (no password) and immediately get the team’s daily quota + every Agency feature (bulk batch, API keys, /docs/api). Saved reports stay tied to whoever ran the analysis, but the team’s daily cap pool is shared — so a 5-person team has the same 1000/day ceiling as a solo Agency owner, just spread across more seats.
How to set up a team:
- On your own Agency-paying account, go to /account/team → name your team → Create team.
- Invite teammates by email. Each gets a 7-day invite link. Click it → they’re signed in + on the team in one step (no separate sign-up).
- Manage the roster from the same page — see who’s on, cancel pending invites, remove members. Members can leave on their own at any time.
Heads-up — v1 limits worth knowing:
- +$25/seat extension is in flight. v1 lets you add up to 25 members on the included quota. The Stripe seat-quantity sync that turns extra seats into actual line-item billing ships with the rest of the Stripe activation.
- One team per email. You can’t belong to two teams simultaneously. Leave the current one before accepting a new invite.
- Owner can’t leave. Ownership transfer ships in v1.5 — for now, tap Report a bugin the footer with "ownership transfer" in the description and we'll handle it.
// WEBHOOKS
Outbound webhooks (Agency plan)
Push every analyze completion, batch finish, or weekly digest into your existing stack — Slack, Frame.io, Asana, Linear, Zapier, n8n, BigQuery ingest, anywhere that accepts a signed POST. Up to 5 webhook subscriptions per team, each with its own HMAC-SHA256 signing secret + filterable event types.
How to set one up:
- On /account/team/webhooks → label, URL, pick events → Add webhook.
- Copy the
whsec_…signing secret immediately. It’s shown once and never re-derivable. - On your endpoint, verify the
X-TokBench-Signatureheader against the raw request body using HMAC-SHA256. Full Node / Python examples live at /docs/api under the Webhooks section. - Click Test on the webhook row to fire a one-off event end-to-end before relying on it in production.
Heads-up:
- Single delivery attempt per event, no auto-retry in v1. Check the delivery log (per-webhook button) for status history.
- 10 consecutive failures → webhook auto-disables. Recreate to re-enable (forces you to fix the root cause first).
- 5-second request timeout. Ack synchronously and queue the heavy work on your end.
// WEEKLY_DIGEST
Team digest: email + Slack (Agency plan)
A summary of the team’s The Ad Bench activity lands in the owner’s inbox on a schedule you choose — daily (previous day’s activity) or weekly (Monday, covering the last 7 days). Total reports, average score, per-teammate counts, top + bottom scoring ads with direct links. Skips periods with no activity.
Configure frequency and Slack from /account/team/integrations. Frequency choices: Off, Daily, or Weekly. Default is weekly.
For Slack: paste an incoming-webhook URL from your Slack workspace in the Slack section of the integrations page. The same digest is posted as a Block Kit message to the configured channel. Email and Slack fire independently — you can have both or either.
// BULK_BATCH
Bulk batch analysis (Agency plan)
Drop up to 50 TikTok / Reels / Shorts URLs (or scripts) at once and The Ad Bench grades them in parallel — concurrency-capped at 5 requests in flight, so a 50-item batch finishes in 2-3 minutes instead of dragging on serially. Useful for weekly creative reviews, agency portfolio audits, or CI gating before client deliverables go out. For batching a single cut into per-platform variants, see /learn/cross-platform-recut-strategy.
How to run a batch:
- Sign in (Agency plan required — subscribe at /pricing).
- Go to /account/batch → pick the URLs or Scripts tab → paste your list → click Run batch.
- Wait ~1-3 minutes for all items to grade. Results appear in a sortable table; each row links through to the auto-saved Quick report at
/r/<id>. - Click Download CSV for label / format / hookScore / report URL / error per item.
Batches use Quick mode only in this version — Deep Dive at 50 items would exceed the 5-minute serverless function ceiling. Each item still counts toward your daily Agency quota (1000/day per user, or per key when authed via Bearer).
// API_ACCESS
API access (Agency plan)
Agency users can call /api/analyze programmatically from CI/CD, scripts, or third-party tools — same analyzer as the UI, no browser required. Useful for hook-score gating in a creative approval workflow (Frame.io, Asana, Linear), batch grading after a weekly shoot, or piping scores into a dashboard.
How to get a key:
- Sign in (Agency plan required — subscribe at /pricing).
- Go to /account/api-keys → label → Generate key.
- Copy the
sk_tab_…value immediately— it’s shown once and never re-derivable. Store it in your secret manager (1Password, Bitwarden, GitHub Actions secrets, etc.).
How to use it:
curl -X POST https://theadbench.ai/api/analyze \
-H "Authorization: Bearer sk_tab_…" \
-H "Content-Type: application/json" \
-d '{"format":"url","url":"https://www.tiktok.com/@handle/video/…","mode":"deep"}'Quotas, error envelopes, and full request/response shape live in the public reference at /docs/api (curl, JS, Python, GitHub Actions examples).
Default cap is 1000 requests/day per key. Each key has its own bucket so a runaway script on one key can’t starve another. Need a higher ceiling? Tap Report a bug in the footer with your traffic estimate. Revocation is immediate — the next request after you click Revoke returns 401.
// BRAND_KIT
Brand kit (Agency plan)
The brand kit lives at /account/team/brand-kit and lets you inject your brand’s creative rules into every AI output. It has three parts:
- Voice doc — a free-text brief (tone, vocabulary, energy level, persona) that shapes how hooks, CTAs, and rewrites are worded.
- Banned words — comma- or line-delimited list of words or phrases the model must never use (competitor names, expired claims, avoided slang, etc.).
- Compliance posture — Standard, Strict, FTC-disclosure, or TikTok Shop. Swaps the compliance rules baked into every report.
- Rubric weights — slide each of the six rubric dimensions (Hook · Clarity · CTA · Brand fit · Native feel · Pacing) to reflect what your brand actually cares about most. Pre-built presets for DTC, SaaS, UGC, Beauty, and Affiliate ship out-of-the-box.
The brand kit applies automatically to every Deep Dive run your team does. Quick Check uses the rubric weights; the full kit (voice + banned words + compliance) applies on Deep Dive.
// HOOK_LIBRARY
Team hook library (Agency plan)
Every strong hook your team encounters can be saved to a shared library at /account/team/hooks. Library entries include the hook text, pattern tag (curiosity gap, pattern interrupt, social proof, etc.), optional vertical tag, score, source URL, and notes.
How to save a hook:
- On any Deep Dive report, find the rewrites section → click the ↓ Save hook button next to a rewrite.
- On any Quick Check Report (script input), the same ↓ Save hook button appears in the feedback section.
- From the library page itself, click + Add hook to enter one manually.
The library cap is 500 hooks per team. Use ↓ CSV on the library page to export the full library to a spreadsheet.
// WORKBENCH
Workbench tools (Agency plan)
The Agency workbench adds purpose-built AI tools beyond standard ad review. All live in the /draft and /compare sections of the nav.
Flag FTC, TikTok Shop, or brand-voice violations before a script goes to production.
Test multiple hook variants side-by-side — scored, ranked, with pattern and pattern-fit notes.
Paste a script and get a tone/language alignment score against your brand voice doc.
Score two or more creative concepts against the same brief and rank them.
Generate AI image prompts for short-form video cover frames optimized for scroll-stop.
Score a creator's recent short-form video posts for fit against a campaign brief and vertical.
Extract hook patterns, creative signals, and style notes from a creator's content.
// DIGEST_FREQUENCY
Digest frequency: daily vs weekly
From /account/team/integrations, you can choose how often the team digest fires:
- Off — no digest emails or Slack posts.
- Daily— a digest fires every day at 9am UTC with the previous day’s activity. Skips days with no reports.
- Weekly (default) — a digest fires every Monday at 9am UTC with the previous 7 days. Skips weeks with zero activity.
When a Slack incoming-webhook URL is configured, the same digest content is also posted to the connected Slack channel. Set the URL in the Slack section of the integrations page.
// GMV_MAX
What is GMV Max?
GMV Max is TikTok's automated end-to-end campaign manager for TikTok Shop merchants. It lives inside TikTok Shop Seller Center / TikTok Ads Manager. The merchant sets one bidding goal (maximize Gross Merchandise Value at a target ROAS) and the system auto-allocates spend across every eligible creative — uploaded ads, organic videos that include the SKU (Spark-Ad-style usage with creator permission), and affiliate-creator videos pulled into the catalog.
You may see The Ad Bench reports name-drop GMV Max in their fixes when affiliate / Shop signals are detected (#tiktokshop, product callouts, Spark Ad chrome). The recommendation framing assumes the cut needs to be Spark-eligible (organic-feeling, license-clean audio, scrollable thumbnail) so the GMV Max algorithm can route it to In-Feed, Spark, LIVE Shopping, Search, and Carousel surfaces — instead of being stuck on standard In-Feed only.
GMV Max is the Shop-specific equivalent of TikTok's broader Smart+automated-campaign tool. If you're running standard DTC traffic (not Shop), Smart+ is the matching reference; the creative principles are the same.
// COMMON_ISSUES
If something’s broken
"The report took too long and timed out"
Try a shorter video (under 60 seconds works best), or switch to the URL or Image tab. Long videos hit Vercel's 300-second function ceiling on busy days.
"You’ve hit today’s report limit"
A free account gets 3 Quick Checks + 1 Deep Dive a day (1 Quick Check/day without an account). Upgrade to Pro for 10 Quick + 10 Deep. The counter resets ~24h after your first scan of the day.
"That sign-in link expired or was already used"
Magic links are good for 15 minutes and one click. Request a new one — it'll arrive within 10 seconds.
"The platform did not return caption/thumbnail"
The post is private, removed, or geo-blocked on TikTok / Reels / Shorts. Try a different URL, or download the video and use the Video tab instead.
// CONTACT
Talk to a human
The Ad Bench is a Bloody Finger Software production. For anything this page doesn't answer:
- Product / feedback / bug reports: tap Report a bug in the footer of any page — screenshots welcome, we reply within 24h.
- Privacy / data deletion: legal@theadbench.ai
- Security disclosures: security@theadbench.ai (RFC 9116 metadata at /.well-known/security.txt)
- Partner program applications: partners@theadbench.ai