Generate display ad creative variations from Figma templates. Select a template frame, paste copy variations (CSV), map columns to text layers, generate all permutations with one click.
Pairs with Ad Copy Skill Pack — paste the generated CSV directly into this plugin.
- Design your template — create a frame with text layers for headline, description, CTA, etc.
- Select the frame in Figma and click Identify template layers
- Paste CSV with copy variations (header row + data rows)
- Map columns — the plugin auto-matches CSV columns to text layers by name
- Generate — one click creates all variations, positioned in a grid
The plugin preserves all text styling (font, size, color, alignment) — it only replaces the text content.
- Clone or download this repo
- In Figma desktop app: Plugins → Development → Import plugin from manifest...
- Select the
manifest.jsonfile from this folder - Open any design file → Plugins → Development → Ad Creative Generator
The plugin accepts two formats and auto-detects which one you're using:
If the plugin detects columns named Headline 1, Headline 2, ..., Description 1, ... it automatically transposes the data — each headline becomes a separate variation, paired with descriptions that rotate cyclically:
Campaign,Ad Group,Headline 1,Headline 2,Headline 3,...,Description 1,Description 2
Acme,Brand,Get Insights,Try Free,Analytics,...,Track campaigns,Turn data into pipeline
Becomes 15 variations: v1 = H1+D1, v2 = H2+D2, v3 = H3+D1, v4 = H4+D2, etc. The plugin shows a confirmation: "Ad Copy Skill Pack format detected — transposed 15 headlines × 2 descriptions into 15 variations."
Any CSV where each row is a variation with columns matching your text layer names:
label,headline,description,cta
v1,Try Claude Today,AI that works for you,Get Started
v2,Build Faster,Ship code in half the time,Start Free
Name your text layers descriptively — the plugin auto-matches CSV columns to layers by name similarity. For example:
| Text Layer Name | Auto-matches CSV Column |
|---|---|
Headline |
Headline 1 |
Description |
Description 1 |
CTA |
CTA |
Generated frames are automatically named: {original_name}_{width}x{height}_v{number}
- Works with any frame size (responsive ad templates, social, display)
- Handles multiple selected frames — generates variations for each
- Auto-matches CSV columns to text layers by name
- Character count warnings if replacement text is significantly longer
- Handles quoted CSV fields and commas in text
- Grid layout for generated variations
- Preserves all text styling and formatting
If your CSV has a Language column, generate one batch per language. The plugin processes all rows — filter your CSV by language before pasting if you want language-specific batches.
Copyright (C) 2026 Marek Kujda — https://www.linkedin.com/in/marekkujda/
This program is free software under the GNU General Public License v3.0 or later. See LICENSE for full terms.
This plugin is provided "as is" without warranty of any kind. The author is not responsible for ad creatives that violate platform policies, incorrect text replacements, or any damages resulting from use. Review all generated creatives before publishing.