How-To

A/B Testing Designs — Generating 4 Variations of One Ad to See Which Wins

Lovart Content Team·May 10, 2026
A/B Testing Designs — Generating 4 Variations of One Ad to See Which Wins

Your first ad performed fine. Not great — the ROAS is 2.1 and you were aiming for 2.8. The copy is strong. The targeting is dialed. The landing page converts. The only variable left to test is the creative itself — and you've been staring at the same visual for two weeks, unable to see it fresh.

This is the moment to batch-generate variations. Not random ones — systematic ones. Variations that test specific hypotheses about what your audience responds to. Here's the process for generating four meaningful variants, running the test, and acting on the data.

Before You Generate: What Are You Testing?

[@portabletext/react] Unknown block type "imageSource", specify a component for it in the `components.types` prop

A/B testing without a hypothesis is just random generation. Before you open Lovart, write down the hypothesis you're testing. The most common and useful ones for ad creative:

| Hypothesis | Variable | Variant Direction | |------------|----------|-------------------| | "Our audience responds to lifestyle context more than product isolation" | Background/Context | A: Product on white. B: Product in-use with a person. | | "Warm color palettes outperform cool ones for our brand" | Color Temperature | A: Cool blues and grays. B: Warm creams and earth tones. | | "People in photos generate more clicks than illustrations" | Visual Style | A: Photorealistic. B: Flat illustration. | | "Showing the interface builds more trust than showing the outcome" | Subject Matter | A: App screenshot. B: Result/outcome image. |

Pick exactly one hypothesis per test. Testing multiple variables simultaneously produces data you can't interpret — you'll know Variant B won, but you won't know which of the three differences drove the result.

Generating 4 Variants: The Systematic Approach

[@portabletext/react] Unknown block type "imageSource", specify a component for it in the `components.types` prop

Open Lovart and create your baseline design — the version you've been running. This is your control. Now generate three variants, each changing exactly one variable from the control. This is the "one-variable-difference" rule, and it's what separates useful testing from creative exploration.

Variant A (Control): Your existing ad. Don't change it. Don't tweak it. It's the benchmark.

Variant B (Background Swap): Keep the product, copy, and layout identical. Change only the context or background. If your control has a white background, try a lifestyle scene. If your control is in a scene, try a gradient backdrop. Prompt:

"Same product, same position, same lighting, same copy layout. Change only the background: from [current background] to [new background]. Keep everything else identical."

Variant C (Color Shift): Same composition. Different palette. If your control uses cool tones, shift warm. If dark, go light. Prompt:

"Same composition, same product placement, same text layout. Change the color palette: from [current] to [new palette described in color terms]. Adjust the lighting temperature to match. Do not change any structural elements."

Variant D (Visual Style): Same subject. Different rendering approach. If your control uses photography, try illustration. If flat vector, try 3D render. Prompt:

"Same product, same composition, same copy placement. Re-render the entire image in [new visual style] style. Change only the rendering approach — the layout, text zones, and product placement remain identical."

You now have four variants that differ on exactly one axis each, plus a control that lets you isolate the impact of each change.

Setting Up the Test

In your ad platform (Meta, Google, TikTok):

  1. Create one campaign with four ad sets, each containing one variant.
  2. Set identical targeting, budget, and scheduling across all four ad sets.
  3. Let the test run for at least 3–5 days or until each variant has reached statistical significance (typically 50–100 conversions minimum per variant, depending on your volume).
  4. Do not optimize or manually adjust during the test period. Let the platform allocate.

Reading the Results

[@portabletext/react] Unknown block type "imageSource", specify a component for it in the `components.types` prop

After the test period, pull a report with these metrics per variant:

  • CTR (Click-Through Rate): Measures creative appeal at the impression level. Did the visual make people click?
  • CVR (Conversion Rate): Measures downstream performance. Did the visual set the right expectations for what happens after the click?
  • CPM (Cost Per Thousand Impressions): Measures algorithmic preference. Does the platform show this creative to more people for the same bid?
  • CPA (Cost Per Acquisition): The composite metric. Which variant gets you a customer for the least money?

| Variant | CTR | CVR | CPM | CPA | Winner? | |---------|-----|-----|-----|-----|---------| | A (Control) | 1.2% | 3.1% | $12.40 | $33.30 | — | | B (Background) | 1.8% | 3.2% | $9.80 | $17.10 | CPA | | C (Color) | 1.3% | 2.9% | $11.90 | $34.40 | — | | D (Style) | 1.1% | 3.4% | $14.20 | $37.90 | — |

In this hypothetical: Variant B (background swap to lifestyle) wins on CPA — higher CTR and lower CPM, suggesting the platform prefers the visual and audiences engage with it more. Variant D has the highest CVR but costs more to serve, making it a candidate for retargeting audiences where CVR matters more than CPM.

The Iteration Loop After Testing

Testing isn't a one-and-done event. It's a cycle:

  1. Identify the winner: Variant B (background swap) reduced CPA by 48%.
  2. Form a new hypothesis: "If a lifestyle background works, does showing the product being used by a specific demographic improve performance further?"
  3. Generate new variants: Keep the winning background direction. Now test: Variant B1 (woman using product) vs. B2 (man using product) vs. B3 (multiple people).
  4. Run the next test. Repeat.

Each cycle tightens your understanding of what your audience responds to visually. After 3–4 cycles, you'll have a creative formula that's backed by data, not guesswork. You'll also have a library of Lovart generations that trace the evolution of your creative — useful for onboarding new team members or briefing agencies.

What Not to Test

  • Font choices in isolation. Typography affects brand perception over time, not immediate conversion. Test fonts in a branding context, not a direct-response ad.
  • Minor color shade differences. "Blue #3B82F6 vs. Blue #2563EB" is not a meaningful test. Test color temperature (warm vs. cool) or palette structure (monochrome vs. duotone).
  • Things you can't act on. If you're not willing to standardize on the winning variant, don't test it. Testing generates evidence; evidence demands action.

| Image | Description | Placement | |-------|-------------|-----------| | hypothesis-table-visual.jpg | Visual representation of the hypothesis selection table | Before You Generate | | four-variants-grid.jpg | Grid showing A (control), B (background), C (color), D (style) side by side | Generating 4 Variants | | ads-manager-setup.jpg | Screenshot of ad platform showing 4 identical ad sets with different creatives | Setting Up the Test | | results-dashboard.jpg | Dashboard or spreadsheet showing per-variant metrics with winner highlighted | Reading the Results | | iteration-loop-diagram.jpg | Flowchart: Test → Identify Winner → New Hypothesis → Generate → Test | Iteration Loop | | anti-patterns-no-test.jpg | Three examples of meaningless tests (minor color, font, untestable preference) | What Not to Test |

[@portabletext/react] Unknown block type "imageSource", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "cta", specify a component for it in the `components.types` prop

FAQ

How much budget do I need for a meaningful creative test? A minimum of $300–500 total across all variants over the test period. Below that, you won't reach statistical significance on most platforms. If your budget is smaller, test fewer variants (2 instead of 4) or run the test for longer. Creative testing on insufficient budget produces noise, not signal.

How long should I run the test? Minimum 3 days, ideally 5–7. The first 24–48 hours of any ad campaign are volatile as the platform's algorithm learns. Judging a creative by its first-day performance is like judging a restaurant by its soft opening. Let the platform exit the learning phase before drawing conclusions.

Can I reuse test losers for different audiences? Sometimes. A variant that loses on cold audiences might win on retargeting. A variant that loses on Meta might win on LinkedIn or email. "Loser" is platform-and-audience-specific, not absolute. Archive your variants for future cross-channel testing.

How do I prevent my variants from looking too similar? If your audience can't visually distinguish Variant A from Variant B at a glance, you're not testing a meaningful variable. The change should be noticeable within one second of viewing — the time a user gives an ad while scrolling. If you have to point out the difference, the difference doesn't matter.

What if none of my variants outperform the control? That's data too. It means the variable you tested isn't what's limiting your performance. Move to the next hypothesis. Maybe your creative is fine and the problem is the offer, the audience, or the landing page. Creative testing is one diagnostic tool among many.

Does Lovart track A/B test performance internally? Lovart does not integrate directly with ad platforms for performance data. You'll need to pull metrics from your ad platform and match variants to your Lovart generation history manually. We recommend naming your exports consistently (e.g., "variant-b-lifestyle-bg.jpg") so you can trace results back to specific prompts.

Can I batch-generate all four variants at once? Yes. Run four generations in parallel in separate Lovart tabs or sequentially in one session. The prompt variations are small enough that you can copy-paste the base prompt and change only the variable line. A full four-variant batch typically takes 10–15 minutes from first prompt to final export.

Internal Links

Raj Patel is a performance marketing lead who has managed over $15M in ad spend across Meta, Google, and TikTok. He has run more than 400 creative split tests and developed the systematic testing framework used by the growth teams he advises. He switched his team's creative production to Lovart in early 2026, which reduced their variant production time from 2 days to under 1 hour per test cycle.

Read more

Design with Lovart

Create with momentum. Bring your vision to life.