Bulk upload Facebook ads

Bulk upload Facebook ads: from a folder to paused ads in Ads Manager

Connect Facebook once, drop a folder, pick the campaign and ad set. Adlio creates one ad per file in your own Meta ad account: named by your pattern, UTMs applied, Advantage+ enhancements opted out on every creative, every ad paused until you set it live. Your first 15 ads are free, with no card and no trial clock.

What "bulk upload" means here

Files become ads

Images become image ads, videos become video ads (resumable upload up to 4 GB per file), grouped images become carousels. One folder, one batch.

Settings live on the ad account

Page and Instagram identity, pixel, default copy, destination and UTM template, naming pattern, enhancement toggles, EU DSA fields. Set once, applied to every ad, never shared between accounts.

You review, then you launch

Every ad is created paused. Open the batch in Ads Manager, check a sample, set it live in one action. Adlio cannot create an active ad.

How it works

  1. 1

    Connect Facebook

    One click through Facebook's own login, reviewed by Meta (App Review, Advanced Access). Adlio only touches the ad accounts and Pages you choose; your token is stored encrypted.

  2. 2

    Set the account defaults

    Identity, pixel, copy, URL and UTMs, naming, enhancement policy, DSA. Ten minutes, once per ad account. Smart defaults pre-fill what Meta already knows.

  3. 3

    Drop the folder and launch

    Pick an existing campaign and ad set, or create a new campaign or ad set inline. Watch per-file status as the batch uploads, then review the paused ads in Ads Manager.

The guarantees, on every ad

Paused, always

There is no setting that lets a bulk batch go live on creation. Launch day becomes a review, not a gamble.

Advantage+ enhancements off, per creative

Every creative carries an explicit opt-out for all 69 enhancement keys the live Marketing API accepts, plus the separate music opt-out. Verified against a real account for images, videos and carousels; a key Meta rejects is never sent.

Names from a pattern, not typed

Tokens for file name, index, date, campaign, ad set and type. No "Copy of", no typos in your breakdowns.

UTMs from a template

Stored per ad account, applied as Meta URL parameters, with Meta's dynamic values left intact and your values URL-encoded.

Strict per-account isolation

Client A's pixel, copy or DSA entity can never appear on client B's ad. Switching accounts switches every default.

EU DSA filled in

Beneficiary and payer stored per account and written on every new ad set, so nothing is silently blocked in the EU.

Three ways to bulk upload, side by side

The honest comparison, with the free options included. The full walkthrough of each method is in the guide.

MethodBest forTimeWhere it breaks
Duplicate and swap in Ads ManagerUnder 10 ads, one-offAbout 2 to 3 minutes per ad, plus correctionsNaming drift, enhancements back on, wrong account
Meta's spreadsheet importStructural changes across many ad sets65 to 125 minutes for 100 ads, incl. fixing rowsMedia must pre-exist, row errors, limited creative fields
Adlio (folder drop)Recurring creative batches into existing campaigns10 to 20 minutes for 100 image ads incl. reviewOnly as good as your saved settings

Times are worked estimates, with every assumption shown in the 100-ads article. Time five ads yourself and replace them. Read the arithmetic.

The three methods in detail

What each one looks like step by step, and what goes wrong in practice.

Method 1: duplicate and swap in Ads Manager

The way everyone starts. Fine for five ads, a bad job for fifty.

  1. 1Open the ad set, select an existing ad, click Duplicate.
  2. 2In the copy, replace the image or video, adjust the name, check the URL.
  3. 3Publish. Repeat.

Where it breaks

  • Naming drift. The duplicate is called "Copy of ...". You rename it, with a typo, and your reporting breakdown is split for a month.
  • Enhancements come back on. A duplicate is a new creative, and new creatives get Meta's defaults.
  • Wrong account or wrong ad set. When you manage several accounts, the tab you are in at 22:00 is not always the one you think.

Method 2: Meta's spreadsheet import

Export and Import in Ads Manager. It earns its keep on structural changes across many ad sets.

  1. 1Export an existing campaign as a template so the column headers are right.
  2. 2Add one row per ad: campaign, ad set, ad name, creative fields, destination URL and the media reference.
  3. 3Upload the media first. Images are referenced by the name or hash of a file that already exists in the library; a video needs its video ID, so it must be uploaded and processed before the import.
  4. 4Import. Rejected rows come back individually with an error; fix them and re-import.

Where it breaks

  • Media pre-upload. The spreadsheet carries no files, so a creative-heavy batch gets uploaded twice.
  • Row-level errors. A wrong column, a stray character in a URL, a missing Page ID: each one is a rejected row, and the error text is not always specific.
  • Creative controls. Not every creative setting is a column, so the enhancement problem from method 1 can return here too.

Method 3: a folder-drop uploader

A tool that reaches your ad account through Meta's Marketing API and turns files into ads. This is what Adlio does.

  1. 1Connect Facebook once. Adlio asks for the ad-management permissions it needs and stores the token encrypted.
  2. 2Set the account defaults once: Page and Instagram account, pixel, default copy, destination URL and UTM template, naming pattern, and the Advantage+ toggles per creative type (all off by default).
  3. 3Drop the folder. Images become image ads, videos become video ads, and image groups become carousels. Pick the campaign and ad set, or create a new campaign or ad set inline.
  4. 4Launch. Every ad is created paused, named by your pattern, with your UTMs on the URL and the enhancement opt-out written into the creative.

Where it breaks

  • It is only as good as your saved settings: wrong default copy on the account means wrong copy on the batch.
  • It does not decide what to test. That part is still yours.

Fewer than ten ads, once: duplicate by hand. Structural changes across many ad sets: the spreadsheet import, which is built for exactly that. Recurring creative batches into campaigns that already exist: an uploader. Whichever you pick, run the pre-launch QA checklist before anything goes live, because the cost of a wrong URL on fifty ads is the same whichever method created them.

What Adlio does not do (yet)

  • No placement-asset grouping from file-name tags (one file is one ad; carousels from image groups).
  • No duplication of existing ads by Post ID.
  • No native Google Drive import: use a synced folder.
  • Meta only. No TikTok, Google or Snapchat.

If one of these is central to your workflow, the tools comparison names who does it. See the comparison.

Bulk upload questions

Does bulk uploading through Adlio change my campaign structure?+

No. Adlio launches into the campaigns and ad sets you already have (or creates one new campaign or ad set at a time, inline and paused). Nothing is migrated and nothing is restructured; you can stop using it tomorrow and everything stays where it is.

How many ads can I launch in one batch?+

There is no batch cap in Adlio; the practical limit is Meta's own rate limits on the ad account, which the uploader respects by queueing. On the free tier the total is 15 ads; Solo and Team are unlimited uploads.

Which file types are supported?+

JPG and PNG for images (oversized files are shrunk in the browser before upload), MP4 and MOV for video up to 4 GB per file with resumable upload, and image groups for carousels of 2 to 10 cards.

Can I turn Advantage+ enhancements back on for one account?+

Yes. The toggles are per ad account and per creative type (images, videos, carousels). Default is everything off; switch on any single enhancement you want for that account and Adlio sends the matching opt-in on every creative.

What does it cost after the free 15 ads?+

Solo, for one person, is USD 49 per month or USD 490 per year in the US, EUR 39 / 390 in the eurozone and GBP 39 / 390 in the UK. Team, for agencies and in-house teams, is USD 349, EUR 299 or GBP 279 per month with three people included, plus USD 59, EUR 49 or GBP 45 per extra person. Real local prices, not conversions, excluding VAT. Both plans have unlimited uploads and ad accounts and a 14-day money-back guarantee.

Can I upload multiple Facebook ads at once without a spreadsheet?+

Yes, that is the whole point. Meta's own import needs a filled spreadsheet and pre-uploaded media; Adlio takes the files themselves. Drop the folder, pick the ad set, and every file becomes one paused ad with the account's copy, naming, UTMs and enhancement settings. No hashes to look up, no rows to fix.

Does Meta Ads Manager support bulk uploading ads natively?+

Partly. Ads Manager can import a spreadsheet (Export and Import) that creates campaigns, ad sets and ads in one go, and its media library lets you upload several files at once. What it does not do is turn a folder of creatives into finished ads: you still map every file to a row, and the media has to exist in the account before the import runs.

How many ads can I create at once with the spreadsheet import?+

Enough for most batches; the practical limit is not the row count but the error handling. One wrong cell fails that row, and each failed row has to be corrected and re-imported. Budget the time for that, not for the upload itself.

Is it safe to let a tool create ads in my account?+

It is as safe as the tool's defaults. Look for three things: it creates ads paused (nothing can spend by accident), it only asks for the Meta permissions it needs, and it went through Meta's App Review. Adlio does all three and stores your token encrypted; see the security page for the details.

Launch your next batch paused, from a folder

Connect Facebook, set the defaults once, drop the folder. Fifteen ads free, no card, no clock.