Skip to content
HookVerdictOpen app

Creative fatigue checker

Paste daily rows for one ad from Ads Manager. The checker compares the first days with the most recent ones and tells you which fatigue signals fired. The example rows are made up to show a tiring ad.

In Ads Manager, break down by Day, then export or copy the rows. Columns needed: day, impressions, link clicks, amount spent, results. Frequency or reach is optional. Your data stays in this browser.

Example data
Fatigued9 days · 36,900 impressions · ₹11,970 spent

Fatigued: click-through rate, cost per result moved past their thresholds. Iterate this ad by changing one variable (start with the hook) and move budget to fresher creatives.

SignalFirst daysLast daysChange
Click-through rateFiredFires when CTR falls 25% or more from the first 3 days. Falling CTR at steady spend usually means the audience has seen the ad.1.96%1.11%-44%
Cost per 1,000 impressionsFires when CPM rises 25% or more. Rising CPM alone can be seasonal (festive sales, auctions), so it counts as a supporting signal.₹294₹362+23%
Cost per resultFiredFires when cost per result rises 30% or more. This is the signal that costs money.₹203₹590+191%
FrequencyFires when average daily frequency reaches 2.5. Add frequency or reach columns to use this signal.1.182.39+103%

What the signals mean

Fatigue shows up as falling click-through rate, rising cost per result and rising frequency while spend holds steady. CPM can rise for reasons that have nothing to do with your ad, such as festive-season auctions, so it only counts alongside other signals.

Meta Ads Manager also shows its own delivery statuses for creative performance. Use those alongside this checker. The thresholds here are defaults we chose (CTR down 25%, cost per result up 30%, frequency 2.5). Your account’s own history is a better guide once you have it.

When an ad is fatigued, don’t just copy it. Change one variable, usually the hook first, so the next test tells you something.