"Duplicate facebook ad sets in bulk" is a search with two very different people behind it. One wants the mechanics: which checkbox, which button, what gets copied. The other has already done that a hundred times and is quietly asking whether there is a faster way to live than rebuilding ad sets every week. This page answers both, from the launch side, and it is honest about where a tool helps and where it does not.
Before uplads existed, the team I build for kept a Notion page full of "duplicate this ad set ten times, change one thing" macros for client accounts. Killing that page was the unofficial north star. So this is not theory. The native duplicate is genuinely good at what it does. The reason the macro existed anyway is that copying the ad set was never the expensive part.
How do you duplicate Facebook ad sets in bulk?
Open the ad set table in Meta Ads Manager, tick the checkbox next to every ad set you want to copy, click Duplicate, and choose whether the copies land in the original campaign, an existing campaign, or a new campaign.
That is the whole native flow, and it is the answer to the literal search. Meta's own help center for duplicating in Ads Manager documents it: from the campaign, ad set, or ad table you can duplicate multiple campaigns, ad sets, or ads at once into an original, existing, or new campaign. No spreadsheet, no CSV, no third-party tool, no cost. For copying the structure of many ad sets at once, this is the right tool and you should use it.
What a duplicated ad set actually carries over is the part worth being precise about. The copy inherits the source ad set's audience targeting, placements, optimization goal, and budget, plus the ads that were inside it at the moment you clicked Duplicate. It does not inherit the original's delivery history. That distinction is the whole reason the next two sections exist.
Should you duplicate at the campaign, ad set, or ad level?
Duplicate at the level that matches what you are actually changing: campaign for a parallel structure, ad set for a new audience or a budget step, ad for moving one creative into an existing set.
Meta lets you duplicate at all three levels, and people conflate them constantly. Campaign duplication copies everything beneath it and is for standing up a whole second structure, for example a new-market clone of a proven campaign. Ad set duplication is the one most "duplicate facebook ad sets in bulk" searchers want: it copies targeting, placements, optimization, and the ads in that set, which makes it the standard move for testing a different audience segment or scaling a winning ad set. Ad duplication copies a single ad creative into a chosen campaign and ad set.
There is a recurring confusion worth clearing up, because it shows up in every forum thread on this topic: duplicated ad sets versus linked copies. Duplicating an ad set produces independent ad sets. Editing one does not touch the other. The linked behavior people get burned by happens at the ad level: when you duplicate an ad and reuse the existing post by its post ID, every copy points at the same underlying post, so likes and comments pool together but a single post edit propagates everywhere. If you want fully independent ads, you create new ads instead of reusing one post ID. Ad set duplication by itself is not the thing that links them.
Why teams duplicate ad sets, and when it actually helps
Teams duplicate ad sets for two honest reasons: to scale a proven set with a clean budget step, and to spin up a grid of identical test cells. Both work, and both have a cost.
The scaling debate is the most argued question in this whole search: do you raise the budget on a winning ad set, or duplicate it at a higher budget? The case for duplicating is that a fresh ad set sidesteps the delivery disruption of editing budget on a set that has already exited learning. The case against is that the duplicate is a new ad set, so it enters its own Meta learning phase and has to relearn from zero with none of the original's optimization data.
Meta's own target for leaving that phase is a minimum of 50 optimization events over a 7-day period, so a duplicate at a small budget can sit in Learning Limited for weeks. Neither answer is universal. What is universal is the tradeoff: duplication buys you a clean budget step and costs you a relearn. Decide with that in front of you, not on autopilot.
None of that strategy is what makes the weekly version of this painful, though. Scaling a single winner is an occasional decision. The thing that turns "duplicate facebook ad sets in bulk" into a recurring search is the test grid: the same set of audiences, recreated every week so each one can hold this week's new creative. The structure barely changes. The creative changes constantly. And that is exactly where the native duplicate stops helping.
The part bulk duplication does not solve
The native duplicate copies the empty structure for free. It does not fill the duplicated ad sets with this week's creative, and that fill step is where the week actually goes.
Do the multiplication once. A normal creative-test week is a handful of concepts, each produced in the aspect ratios its placements need, fanned across the ad sets that make up the test. The duplicate gave you the ad sets in one click. Now every concept has to become a correctly named, correctly placed ad inside every one of those ad sets, by hand, in Ads Manager. That workload scales with the creative and the ad sets, not with how fast you clicked Duplicate.
5
Cloned in one native multi-select duplicate
5
This week's distinct hooks or angles
2
4×5 Feed + 9×16 Stories and Reels
50
The manual fill step, every week
Source: Worked example: one standard week after the ad sets are duplicated
The duplicate was the cheap ten percent. The fifty-ad fill is the expensive ninety, and it repeats every seven days. This is the same math behind why "launch 50 facebook ads at once" is its own recurring search. Bulk-duplicating the ad sets and then launching fifty ads into them are two halves of one problem.
Duplicate the ad sets in uplads, then fill them all in one upload
uplads duplicates ad sets in bulk from its own Ads Manager, adds a new ad set inside the launch when you need one more cell, and removes the fill step entirely by fanning one upload across every ad set you selected.
Here is the honest version. Copying many ad sets at once works in Meta's native duplicate or in the uplads Ads Manager; both use Meta's own copy mechanism, so the result is the same set of independent, paused ad sets. What uplads adds is the step after: you point at your existing campaign, checkbox the ad sets that make up the test (up to 50 per launch), drop the week's creatives once (up to 500 files), and the whole batch is created across every selected ad set in a single launch.
The launch step after the ad sets exist
- 1
Duplicate the grid
In the uplads Ads Manager, tick the ad sets, click Duplicate, pick the destination campaign and the number of copies (up to 10 per ad set). Copies arrive paused. Inside the launch you can also add one new ad set, empty or copied from an existing one, without leaving the screen.
- 2
Point at the campaign and ad sets
Select the campaign and checkbox the ad sets the batch should land in, up to 50 per launch. A new campaign or ad set can be created right there if the structure does not exist yet.
- 3
Drop the week's creatives once
Drag the full batch of images and videos into the browser. Files upload directly to secure cloud storage and duplicates are recognized automatically, so re-launching a proven creative costs nothing.
- 4
Naming and placements resolve automatically
A naming template set once at the account level is applied to every ad in the batch, so reporting stays readable. Aspect-ratio variants of one concept (4×5, 9×16) are grouped into a single ad that serves the right ratio per placement.
- 5
Launch and walk away
One concept across ten ad sets becomes the right number of live ads from one upload. If one ad is rejected on a policy hit, the rest still go live and the launch finishes as partial. You fix the one, not the fifty.
The part that matters is the fan-out: one uploaded creative is created into every ad set you selected, in one launch, processed 50 ads at a time in the background. What stays with you is the thinking: which audiences to test, what the budget should be, which creative to make. uplads drafts primary text, headlines and descriptions when you ask its copywriter to, and its Ads Manager changes budgets and bids in bulk when you decide to, but nothing moves money or reshapes the account on its own.
Stop rebuilding every duplicated ad set by hand
Duplicate the structure in Meta, then fan this week's creatives across every ad set in one upload, naming and placements handled automatically.
Native duplicate, manual rebuild, or a launcher
Use Meta's native duplicate to clone the ad set structure, then decide how you fill it: rebuild every ad by hand, maintain a CSV, or fan one upload across all of them.
| Step | uplads | Meta native duplicate | Manual rebuild | CSV / bulk import |
|---|---|---|---|---|
| Duplicate the ad-set structure | Multi-select, up to 10 copies each | Multi-select, free | Rebuild from scratch | Re-row the sheet |
| Fill every ad set with new creative | One upload, auto fan-out | Not handled | Build each ad by hand | One row per ad |
| Multi-placement aspect ratios | Grouped into one ad | Manual customization | Manual per ad | Not handled |
| Naming convention | Auto-applied at launch | Typed by hand | Typed by hand | Typed per row |
| One ad fails | Rest still launch | n/a | Redo that ad | Import can break |
| Best for | The weekly fill step | Cloning structure | A handful of ads | One disciplined one-off |
Meta's native duplicate and the uplads Ads Manager do the same job on that first row, with the same Meta copy mechanism underneath. Where uplads pulls ahead is the step the duplicate never touched: getting this week's creative into all of those ad sets without building each ad by hand. A CSV import can work for a single careful launch, but it has no per-ad failure isolation, so one malformed row can fail the batch and you find out after. The deciding question is never whether it can be done by hand. It is how many Mondays a year you are willing to spend doing it.
What this looks like in a real week
The point of separating the two steps is that duplicating the structure stops being the thing you optimize, because it was never the bottleneck.
A sustainable week looks like this: clone or keep the ad-set grid once, then every week drop the new creatives, fan them across every ad set in one launch, let the data accumulate, read it, cut losers, scale winners, repeat. The structure is stable. The creative moves. When the fill step is a single upload instead of a four-hour rebuild, the cadence holds, and the cadence is what actually moves a Meta account.
For the strategy side of scaling the winners this loop produces, the scaling Facebook ad creatives guide covers what to do with them, and the weekly creative test workflow is the same loop viewed from the testing side. When you want to see the launch layer itself, uplads pricing is one flat plan with no percentage of managed spend.
Duplicating Facebook ad sets in bulk is a solved problem: Meta does it natively, for free, in a few clicks. The unsolved problem is everything that has to happen inside those duplicated ad sets afterward, every single week. Fix that step and the duplicate goes back to being the one-click formality it should have been all along.