Loading tutorials…
Loading tutorials…
Generating one good ad image is easy. Generating 50 ad variations that are all on-brand, on-message, and ready for Meta or TikTok is a workflow problem, not a prompting problem. This is how production teams do it.
Who this is forIn-house marketers and freelance creative ops running paid social campaigns at $5K+/mo spend. If you are testing 5-10 ad variations per ad set and creative is the bottleneck, batch Midjourney production is the highest-leverage skill.
What you'll need
Step 1
Document hook, target audience, key visual elements, brand mood, and the 5-10 variations you want to test. Without this, you are exploring, not producing.
Hook: the angle your ad copy is leading with. "Save 3 hrs/week with X" is a different visual than "Stop overpaying for Y."
Audience: who appears in the image (age, vibe, setting) determines the prompt. Be explicit, not generic.
Visual elements: must-include items (the product, a logo placeholder area, brand colors).
Brand mood: warm/cool, energetic/calm, professional/casual. Translate to your SREF library codes.
Variations: the 5-10 tests you actually want to run. Different settings, different person types, different angles. Document each.
Do this in a doc BEFORE opening Midjourney. Operators who skip this generate 50 random images and use none.
Step 2
Create a fill-in-the-blank prompt template with locked elements (SREF, stylize, brand voice) and swappable elements (subject, hook, setting).
Template structure: "--sref [your brand SREF code] --sw 150 [SUBJECT VARIABLE] in [SETTING VARIABLE], [STYLE FRAGMENT FROM BRAND PLAYBOOK] --ar 4:5 --v 7 --stylize 100"
Lock: --sref, --sw, --stylize, --ar, --v. These do not change per variation.
Swap: subject (the person/product), setting (the scene), and any hook-specific detail.
Example for SaaS ad: "--sref 3847291056 --sw 150 [PERSON: 30-year-old marketing manager / 40-year-old founder / mid-20s designer] working on a laptop in [SETTING: sunlit corner office / cozy home workspace / minimalist coworking space], candid editorial photography, soft natural light --ar 4:5 --v 7 --stylize 100"
Now you have 9 combinations from 3 people × 3 settings. Each is on-brand because the locked elements are locked.
Step 3
Run the matrix of variations. Use Fast mode for production; expect ~50 seconds per batch of 4. Budget your fast hours.
Open Midjourney web app. Paste your first template variation into the Imagine bar.
Each prompt generates a batch of 4. For 9 prompt variations, you get 36 candidate images and spend ~9 fast credits.
Run all 9 prompts. Do NOT cherry-pick yet — generate the full matrix first.
Tag each batch in your reference doc so you know which variation produced which set.
Time budget: 30-45 minutes for the generation pass. Walk away while it runs.
Step 4
From 36 candidates, you want 9-15 finalists. Be ruthless. "Pretty good" gets cut.
Open all 36 candidates in a grid view.
For each, ask: "Would I actually run this in a paid ad?" If hesitation, cut.
Common failure modes to cut: bad hands, weird text, off-brand vibe, awkward composition, generic stock-photo feel.
Aim for 1-2 finalists per prompt variation. If a variation produces 0 usable images, the prompt is broken — flag for rework, do not settle.
Save finalists with descriptive filenames: "campaign-name_persona-marketing-manager_setting-office_v1.jpg"
Step 5
Each finalist gets one Vary (Region) pass to fix specific issues, then Upscale for final delivery.
For each finalist: identify the one thing that could be better. Hands, a logo area, a background distraction.
Use Vary (Region): select the problem area, write a short prompt fragment for what should be there ("blank wall, clean").
Generate the fix. Pick the best variation. This is usually 1-2 attempts per image.
Once the image is clean, Upscale to 2x. This is your delivery-ready asset.
Note: Upscale 2x is sufficient for paid social. For OOH or print, generate at higher --ar from the start (16:9, 3:2) and Upscale 4x via a separate tool.
Step 6
Deliver to the media team with clear naming, the prompt used (for replicability), and any context flags.
Folder structure: /campaign-name/ → /persona-1/ /persona-2/ etc.
Filename pattern: campaign_persona_setting_variant.jpg.
Include a CSV or doc with: filename, prompt used, SREF code, hook tag, any notes.
This lets the media team know which creative tests which hook, and lets a future operator regenerate similar assets.
Skip this step and the batch becomes uncited art instead of a documented creative system.
Step 7
After Meta/TikTok shows you which creatives win, regenerate variations of the winners (not new directions from scratch).
After 5-7 days, pull CTR and ROAS by creative.
Top 20%: regenerate 5-10 more variations of these. Use Vary (Subtle) on the winner image, or change ONE prompt variable while keeping the rest fixed.
Bottom 50%: cut. Do not iterate on losing creative — try fresh directions instead.
This is the compounding loop: winners spawn variations; variations get tested; new winners spawn more variations.
Most teams skip this because it requires connecting performance data to creative production. That is where specialists earn their fee.
Common mistakes
Generating without a brief
What goes wrong: You explore prompts for 2 hours, generate 80 random images, ship 3 that are "good enough." Creative testing is sloppy; you cannot tell which hook actually works because variations were not structured.
How to avoid: Always brief first. 30 minutes of brief writing saves 4 hours of unfocused generation.
Skipping the SREF / brand consistency
What goes wrong: Each generation looks like a different photographer. Your Meta ads library looks like a stock photo bin. Brand recall tanks.
How to avoid: Every batch uses the brand SREF. Non-negotiable. If you do not have a brand SREF library yet, build it before doing campaign batches.
Cherry-picking during generation instead of after
What goes wrong: You see a great variation in batch 2 and abandon the matrix. Variations 4-9 are skipped. You ship 4 ads, all variants of one concept. Testing is broken — you have no signal on what works.
How to avoid: Run the full matrix BEFORE cherry-picking. Cull after generation, not during.
Asking Midjourney to render brand-specific text or logos
What goes wrong: Output has gibberish text where your tagline should be. Logos are mangled. You spend an hour trying to fix it in Midjourney instead of adding text overlay in Figma.
How to avoid: Generate images WITHOUT text or logos. Add brand text overlay in Canva or Figma after. This is faster and always cleaner.
Upscaling everything before culling
What goes wrong: You upscale all 36 candidates "just in case." Burns extra credits, wastes time. 80% get culled anyway.
How to avoid: Cull first, upscale only finalists. Order matters: Imagine → Cull → Vary (Region) → Upscale.
Treating ad creative as one-time output
What goes wrong: You generate one batch, run ads for a month, performance fatigues, you generate another batch from scratch. No compounding learning from what worked.
How to avoid: Always iterate on winners. Top-performing creatives spawn the next batch via Vary. New directions only after winners stop converting.
Recap
Done — what's next
How to use Midjourney style references and SREF codes
Read the next tutorial
Hand it off
Running ongoing Midjourney batches for paid campaigns is a job — strategy, prompt craft, and performance feedback loops. Most founders do not have 8-12 hrs/week to dedicate to it well. EverestX matches with an AI image specialist or creative strategist for ads who runs this ongoing. $14-16/hr; most campaigns land at $200-600 per batch.
See specialist rates
For a typical paid social test, 9-15 finalists across 3-5 hook angles. More than 20 finalists usually means you are testing too many variables at once — performance signal gets diluted across cells.
Yes if you are on a paid plan. You own commercial rights to images generated on Basic+ plans. Most paid social platforms accept them without issue. Always check the destination platform's AI content policy though — it has been changing.
First batch (with brief writing): 4-6 hours. After workflow is established and SREF library exists: 1-2 hours per batch. Performance iteration batches: 30-60 minutes.
Depends on volume and budget. A photoshoot at $5K-15K produces 30-50 high-quality assets you own forever. Midjourney at $30-60/mo produces hundreds. For early-stage testing or high-volume creative iteration, Midjourney wins. For evergreen brand hero assets, real photography still wins.
Three rules: (1) lower --stylize (25-75 for product, 100 for ad creative). (2) Use real-world photography SREF references (editorial film, not artistic illustration). (3) Add real photography touches in post (Canva grain filter, slight crop, real overlay text).
Midjourney
--sref is the difference between "I got a great image once" and "I can ship 100 on-brand images per campaign." This is the workflow that production AI image teams actually use.
Midjourney
DIY Midjourney is a great idea — until it is not. This is the honest framework: when the cost of self-managing your AI imagery workflow exceeds the cost of hiring help, and what to look for in a specialist.