Why Meta spends most of the budget on a single ad, and when to do something about it

When Meta is spending most of an ad set's budget on one ad, that is the delivery system working as designed, and on its own it is not a problem. Meta picks, for each person, the ad it expects to bring the cheapest result, so the ads in a set will not necessarily get equal shares of the money.

It becomes a problem in two cases: the ad taking the spend no longer hits your cost target, or every ad in the set argues the same idea, so the choice Meta made tells you almost nothing. An ad that got almost no spend has not lost. It has not been tested, and if you need to know whether it works, it needs a budget of its own.

In our view, the mechanism behind it works the same way at $100 a day as at $10,000 a day, although a small budget takes longer to give any ad a fair read.

Why is Meta spending the ad set's budget on one ad?

Every time there is a slot to fill, Meta runs an auction and its delivery system estimates how each eligible ad would do with that particular person. In its help article on ad delivery, Meta says that when an ad set holds several ads, it serves whichever one it expects to produce a result most cheaply with that person, and that "each of your ads won’t necessarily be delivered the same number of times" (Meta Business Help Center, About ad delivery).

Two details in that article explain most of what you see in Ads Manager.

  • The choice runs on forecasts. Meta says the system decides where to deliver next from predicted performance, and not from how each ad set has done so far. We read the same logic as applying to the ads inside a set, so an ad can take the spend before it has proved much.

  • Forecasts improve with exposure. The same article says each impression makes the relevance predictions more accurate. An ad that is shown a lot gets a sharper forecast. An ad that is barely shown keeps a rough one.

Put those together and concentration is the expected result. Once one ad looks like the cheapest route to a purchase, it gets shown more, its forecast gets firmer, and the others get fewer chances to change the picture.

The same thing happens one level up. With Advantage+ campaign budget switched on, Meta moves money between ad sets toward the best opportunities, and says it may put most of a two-ad-set budget into one of them (Meta Business Help Center, About Advantage+ campaign budget).

Spend concentration is the share of an ad set's spend that goes to its single biggest ad. That is our working term. To get it from Ads Manager, divide the top ad's spend by the ad set's total spend over the same dates.

Is it bad that one ad gets most of the spend?

Usually not. Judge the ad set by its cost per result, and treat the split as a symptom that tells you where to look. Four situations cover most of what we see described, and each calls for something different.

What you see What it means, in our view What to do
One ad takes most of the spend, and the ad set hits your target cost per result The system found something that works Leave the split alone. Try a higher budget to see whether the cost holds, then get the next ideas ready before this one tires
One ad takes most of the spend, and cost per result has been climbing for a couple of weeks The ad carrying the set is wearing out, or something else changed Check it before you act. Our five checks for creative fatigue cover what to rule out
One ad takes most of the spend, and the other ads in the set are rewordings of it The set is thin. Meta chose between wordings of one idea Add ideas that argue something different (see below)
A new ad you care about got a sliver of spend in a set with an established winner You have no result on that ad yet Give it a proper test of its own (see below)

The urge to "fix" concentration by forcing an even split mostly works against you. Meta's own guidance warns against informal tests that pause and restart whole ad sets or campaigns by hand, because it makes delivery less efficient and the results unreliable (Meta Business Help Center, About A/B testing). In our view, pausing the winner so the others get spend is that kind of informal test, and it can cost you your best performer while it runs.

Does an ad that got almost no spend count as a loser?

No. It counts as untested.

A starved ad is an ad that ran in a set beside a stronger-looking ad and got too little delivery to produce a result you could judge it on. Our term. What it holds is a forecast made with very little exposure behind it, which is exactly the forecast Meta says gets better as an ad is shown more.

Our rule of thumb, not Meta's: treat an ad as starved if it has fewer results than the minimum you would need to judge it (the number you set under rule 1 below), or if it took under 10% of the ad set's spend over 14 days.

Low spend does carry a small signal. Early on, the system did not rate the ad's chances against the one it favored, with that audience, on those days. That is worth noting. But it falls well short of a verdict, and it is easy to treat it as one: the ad is paused, filed as "didn't work", and the idea behind it is never tried again.

The cost shows up months later. If a starved ad is recorded as a loss, the next person planning tests skips the idea, and an angle that never had a fair hearing ends up on the list of things that failed. When you log tests, record a starved ad as "not read" with the reason, so the idea stays open.

When is concentration a sign of a thin creative set?

When the ads Meta was choosing between were not really different.

People who run Meta ads argue about this in public, and the argument has two camps. In the first, variety is wasted effort, since Meta ends up backing one or two ads whatever you give it. In the second, variety is a large part of why some advertisers are content with Meta while others are frustrated by it. Our view is that both are looking at the same behavior. Concentration happens either way. What changes is whether the ads in the race were separate ideas, and that decides how much the result teaches you.

A quick test for your own set: write down, in one sentence, the idea each ad argues. For example, "this saves you an hour a day" or "your current fix is making it worse." If four of the five sentences say the same thing, then four ads are one idea, and the ad taking the spend won a contest between wordings. What you learned is which opening line Meta preferred, which tells you little about which idea your buyers respond to.

That is the most useful reading of concentration: a check on your inputs. Across the category, the belief that near-identical ads behave like a single ad is now mainstream. We have not found a Meta page that describes how similar ads are grouped, so we treat that as a working belief. The practical step does not depend on it. If your set is thin, the fix is ideas that differ in who they speak to and what they argue, which is what our posts on horizontal creative scaling and MECE creative are about.

How do you get a real read on an ad that got starved?

Give it conditions where the winner cannot crowd it out, and decide in advance what result will count. There are two clean ways to do that.

Option 1: a Meta A/B test. Ads Manager and the Experiments tool both let you set up an A/B test, either by duplicating something already running and changing one variable, or by comparing two existing ad sets. Run it on an audience no other live campaign is using. Meta splits that audience so nobody sees both versions, recommends the same budget for each side, and suggests running for at least 7 days, with a budget big enough to produce a clear winner (About A/B testing; Best practices for A/B testing). This suits a direct question such as "is the starved ad's idea better or worse than the winner's?"

Option 2: its own ad set with its own budget. Our post on iterating on a winner already argued for testing a new batch in a separate ad set, configured the same way as the winner's. One detail matters here that we did not cover there: give that ad set its own budget, or keep it in a campaign without Advantage+ campaign budget. Otherwise Meta can move the money back to the established ad set, and the starved ad stays starved one level up.

That ad set may deliver more slowly than its budget suggests. When two of your ad sets can reach the same person, Meta enters only the ad it values most in that auction, which can leave part of an ad set's budget unspent (Meta Business Help Center, Understand auction overlap). For people both ad sets can reach, Meta may enter the winner rather than the test ad, so read the test's results against the pass mark you set, and do not compare them line for line with the winner's. Meta generally advises combining overlapping ad sets; this test overlaps on purpose, for a short, fixed period, and the test ad set is switched off or folded in when it ends.

Whichever route you take, three rules apply. They are our practice, not Meta's, except where a Meta page is linked.

  1. Write the bar down before launch. Pick the cost per result that would count as a pass, and the minimum number of results you need before you read it. The point is to stop a good first day from deciding the test.

  2. Keep the test small. Meta's help on ad volume says that with lots of ads live together, each is shown less, and fewer of them finish learning (About managing ad volume). Re-test the two or three starved ads you most want answered, not all of them.

  3. Fund it at the level of your goal. Meta says an ad set usually leaves the learning phase once it has around 50 results within seven days of its last major edit (About the learning phase). We use that as a rough floor for a test budget, as our own rule of thumb. If your budget cannot plausibly buy that many results at your target cost, either accept a longer test or measure something earlier in the funnel and say so when you report it.

What does that look like in practice?

Illustrative example.

A skincare brand runs one ad set with five ads at about $3,000 a week. Over 14 days, ad A takes 82% of the spend at a cost per purchase that beats the brand's target. Ads B and C are rewordings of A. Ad D argues a different idea, aimed at people who have already tried a competing product, and got 5% of the spend. Ad E is a weaker cut of D's idea.

Ad Share of spend What it argues Reading
A 82% "A two-minute routine you will actually keep" Working. Leave it running
B, C 11% combined Same idea as A, new wording Not a separate test. Drop them from the next plan
D 5% "Your current routine is the problem" Starved, not read. Re-test
E 2% Same idea as D, weaker edit Leave out of the re-test, keep D only

The brand leaves the ad set running, since it is hitting target, and holds A's budget steady while D's test runs so D's read stays clean. It steps A's budget up after the test. For the test, it uses option 2: ad D goes alone into a new ad set with the live one's settings and a budget of its own, in a campaign without Advantage+ campaign budget, for 10 days, with a pass mark written down before launch. Because Meta may enter A rather than D for people both ad sets can reach, the brand allows for slower delivery and judges D against its pass mark, not side by side with A's numbers. Whatever happens, D is logged with the result of that test and not with the 5% it got while competing with A.

What should you do this week?

  • Pull spend share by ad for every ad set that matters, over the last 14 days.

  • Where an ad set is hitting your target, leave the split alone. Consider one step up in budget, then hold it, since Meta warns that frequent budget changes can restart learning. Get the next ideas ready either way.

  • Where it is slipping, check whether the top ad is fading before you add or pause anything.

  • Write the one-sentence idea for each ad. If most sentences match, the next batch should be new ideas.

  • Pick the starved ads whose ideas you most need answered and give them a real test with a bar set in advance.

  • Mark every other starved ad as "not read" so the idea is not filed as a failure.

Our method is built so a spend report can answer which ideas got a fair test without anyone rebuilding the history from memory, because each ad is tagged with the idea it argues when it is made. It is also how we make Meta ad creative.

Key takeaways

  • Meta serves each person the ad it predicts will bring the cheapest result, so uneven spend inside an ad set is by design.

  • Judge the ad set by cost per result. If it hits target, the split is not a problem to fix.

  • An ad with almost no spend is untested, not a loser. Record it as "not read."

  • Concentration is a warning about a thin set when the ads in it argue the same idea. Fix that with ideas that argue something different.

  • To read a starved ad, use a Meta A/B test or its own ad set with its own budget, and set the pass mark before launch. Do not pause the winner to force spend elsewhere.

FAQ

Why does Meta spend all my budget on one ad? Meta's delivery system shows each person the ad it predicts will get the lowest cost per result for them, so ads in the same ad set are not delivered evenly. Once one ad looks like the cheapest route to a result, it tends to get most of the spend. Meta describes this in its help article on ad delivery.

Is it bad if one ad gets most of the budget? Not by itself. If the ad set is hitting your target cost per result, the system has found something that works and you can leave it. It is worth acting on when costs are rising, or when the other ads in the set are versions of the same idea.

Should I pause the winning ad so my other ads get spend? Usually not. Meta advises against informal tests that pause and restart whole ad sets or campaigns by hand, because it makes delivery less efficient and results less reliable. In our view, pausing your winner is the same kind of informal test. If you need a read on another ad, give it its own test instead.

Does an ad with very little spend mean it failed? No. An ad that barely delivered has not produced enough results to judge, and Meta's forecasts for it are based on very little exposure. Treat it as untested, and re-test it on its own if the idea matters.

How do I test an ad that Meta is not spending on? Run an A/B test through Ads Manager or the Experiments tool with equal budgets, on an audience no other live campaign is using, or move the ad to a separate ad set that has a budget of its own. If you use an A/B test, run it for at least 7 days, as Meta recommends. Either way, decide before launch what cost per result counts as a pass.

Amber Macho, founder of Progress Bar
Written by
Amber Macho, Founder of Progress Bar

Amber Macho is the founder of Progress Bar, a performance creative agency in Philadelphia. She spent 4 years and 8 months as Chief Operating Officer of Creative AdBundance, running operations and creative for Meta, TikTok and YouTube ads, after six years in product at Comcast and four years at EY.

See where your creative is capping performance

If the ad taking your spend won a contest between five versions of one idea, you do not yet know which ideas your buyers want, and neither does Meta. That is the gap Progress Bar closes. We build you an owned, tagged, AI-ready creative catalog you own outright. Book a call and we will show you where your creative supply is capping performance, and what a diverse, owned catalog would change. Book a call

Next
Next

How to iterate on a winning ad: what to change in the next ten, and what to leave alone