How to Generate Images in Bulk from Templates
Turn one reusable design into many images with structured data. Compare Canva and Adobe workflows, automate with APIs, and verify each batch before publishing.
To generate images in bulk from a template, make one design with clearly marked fields for the parts that change, prepare one data row per variation, connect each column to the matching text or image placeholder, preview representative rows, then generate and inspect the outputs. Canva is suited to spreadsheet-led batches, Adobe Express’s add-on supports up to 99 variations, and APIs fit repeatable workflows that can handle authentication and job processing.
The important work happens before generation: a well-prepared template and consistent input data prevent incorrect image placement, clipped text, and confusing filenames. This guide covers no-code workflows and API automation, including their documented limits and setup requirements.
1. Prepare the template and data
Design a reusable template
- Keep fixed brand elements, such as a logo or footer, separate from fields that vary.
- Create a distinct text box for each variable value, such as
headline,product_name, andoffer. - Use a frame or designated image layer for each replaceable image. For foreground and background images, record which layer each field should replace.
- Allow room for the longest expected text. Test line breaks, font size, and contrast on realistic long values.
- Decide how the design should behave when an optional value is missing: omit the element, use a default, or reject that row before generation.
Build a clean data table
Use one row for each finished design and one clearly named column for each variable field. For example:
headline,product_name,offer,background_image
"A brighter start","Desk Lamp","Save 20%",lamp-blue.jpg
"Make room to focus","Task Light","Free shipping",lamp-workspace.jpg
Before importing the table:
- Make column names specific and consistent with the template fields.
- Check for blank required cells, duplicate identifiers, unintended whitespace, and text that exceeds the available space.
- Use a predictable filename or ID column if outputs need to be matched back to products or campaigns.
- Confirm how the chosen tool expects image data. A cloud photo URL in a spreadsheet may be treated as plain text by Canva rather than as an image to insert.
- Make sure you have rights to use each source image. Bulk generation does not grant image rights or check them for you.
2. Generate a batch with Canva Bulk Create
Canva documents Bulk Create in its desktop editor, with CSV/XLSX or Canva Sheets inputs, field mapping, previews, and output choices. Its help documentation describes a limit of up to 300 rows and 150 columns for a Canva Sheets selection. Bulk Create is available on Canva Pro, Teams, Business, Enterprise, Education, and Nonprofits plans. Check the current help page and your account because product availability can change.
- Open the design in Canva’s desktop editor, or start from a Canva Sheet.
- Open Bulk Create. Upload a CSV or XLSX file, choose an eligible connected data source, or enter data manually.
- Connect each text column to the intended text element and each supported image field to the correct image element. Canva offers AI-assisted matching and manual mapping; review automatic matches because names or element types can be interpreted incorrectly.
- Preview rows from different parts of the dataset, including the longest copy and a row with each image type. Canva notes that replacements can preview differently by data source. For Canva Sheets that are not directly linked, generate designs to inspect the final images.
- Choose whether to create a multipage file or individual designs. Where useful, name files from a data column and save them in a clearly identified project folder.
- Generate only after checking the field connections and previews. Open the resulting files and inspect the actual output before publishing or sending them to another system.
See Canva’s instructions for [Create designs in bulk](https://www.canva.com/help/bulk-create/), including current input and plan details.
3. Generate a small batch with Adobe Express
Adobe Express’s Bulk Create and Generate add-on documents up to 99 variations. Its documented process creates the CSV template from the add-on; it does not describe simply uploading a separately prepared CSV template as the starting point.
- Open Add-ons in Adobe Express and launch Bulk Create and Generate.
- Link the replaceable text, foreground image, and background image elements in the design.
- Download the CSV template created by the add-on, fill it with one row per variation, and keep its generated field structure intact.
- Check which image column maps to which layer. Foreground/background assignment depends on image layer order.
- Generate no more than the documented 99 variations in a batch, then inspect the resulting images and file organization.
Consult Adobe’s [Bulk create and generate designs using the add-on](https://helpx.adobe.com/uk/express/web/bulk-create-and-automate/bulk-create-generate.html) help page for the current steps and supported formats.
4. Automate template generation with APIs
Choose API automation when data comes from another system and you need a repeatable integration. API workflows require more setup than a spreadsheet batch: credentials, tagged fields, permissions, input validation, status handling, and output retrieval all become part of your application.
Canva Autofill
Canva’s Autofill guide describes filling tagged fields in an existing brand template with data and then retrieving the generated design. The documented setup includes an app, API scopes, and multi-factor authentication. Autofill and brand templates are described as available to Canva Pro (including Education and Nonprofits), Teams, or Enterprise users. Read Canva’s [Autofill designs with data guide](https://www.canva.dev/docs/apps/rest-apis/autofill-guide/) for current requirements and API details.
Before connecting a data source, map its fields to the tagged template fields explicitly. Validate every row before submission, save the source record ID alongside each job, and track which generated design belongs to which input.
Adobe Express Create Variation API
Adobe documents Create Variation as a beta API. It accepts a tagged Express template, field mappings, and requested output types, then submits an asynchronous job that must be polled for status and results. Its documented default rate limit is five requests per minute. It requires an Adobe Developer Console project, an access token/API key, an owned tagged Express document, and pre-signed URLs on an allowed domain for image or video mappings. Documented output types can include image, document, PDF, or video.
Design the integration around asynchronous processing: submit a job, store its identifier, poll according to the API guidance, handle failures, and retrieve results only when the job is complete. Respect the default rate limit, and account for beta status in deployment decisions. See Adobe’s [Create a Document Variation guide](https://developer.adobe.com/firefly-services/docs/express-api/guides/how-to/create-variation).
Adobe Firefly Creative Production workflows
Adobe Firefly Services also documents Creative Production API workflows that run published workflows over many assets with batch execution, progress tracking, and per-asset results. This is an asset pipeline automation path; it is distinct from the Express consumer add-on. See the [Adobe Firefly Services documentation](https://developer.adobe.com/firefly-services/docs/guides/) for product-family details.
5. Choose the right workflow
| Workflow | Useful when | Plan and setup considerations | Documented scale or limits |
|---|---|---|---|
| Canva Bulk Create | A person can prepare a spreadsheet and review visual previews. | Desktop editor or Canva Sheets; eligible plan; manual or assisted field mapping. | Canva help describes up to 300 rows and 150 columns for a Canva Sheets selection. |
| Adobe Express add-on | You need a small batch through a guided visual workflow. | Use the add-on-created CSV template and link design layers. | Up to 99 variations. |
| Canva Autofill API | Data originates in an application and tagged brand templates fit the workflow. | App, scopes, MFA, and an eligible account/plan are part of setup. | Follow current API documentation for applicable limits. |
| Adobe Express Create Variation API | An integration can manage credentials, asynchronous jobs, polling, and output retrieval. | Beta API; Developer Console project, token/API key, tagged document, and pre-signed media URLs on an allowed domain. | Default documented rate limit: five requests per minute. |
| Adobe Firefly Creative Production API | You need published workflows run across many assets with progress and per-asset results. | Workflow and asset pipeline setup; consult the Firefly Services documentation. | Use current documentation for the workflow’s limits. |
These are distinctions from the vendors’ documentation, not a claim of comparative hands-on testing. Before choosing, compare input format, image handling, field tagging, preview and correction steps, output organization, account and credential prerequisites, throughput, and API maturity.
6. Verify outputs and keep the batch organized
A successful generation job does not guarantee every image is ready to use. Inspect a sample that covers the meaningful variations, then scan the full output for mapping and rendering problems.
- Confirm the headline, product, offer, and image in each output match the source row.
- Look for clipped text, unexpected line wraps, low contrast, and elements covering one another.
- Check that images were inserted rather than rendered as filenames or URLs.
- Check foreground/background placement and crop on portrait, landscape, and unusual source images.
- Check the file count, names, format, dimensions, and folder before publishing or handing off.
- Keep a manifest connecting each output filename to its source row or record ID.
If one output is wrong, correct the source row or mapping and regenerate that variation where the tool supports it. Avoid rerunning an entire batch until you know whether the problem is in the template, input data, or mapping.
7. Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Text appears in the wrong place or not at all | A column was mapped to the wrong element, an element was not linked, or a field name was interpreted incorrectly. | Review each field connection manually and preview rows with distinctive test values. |
| An image filename or URL appears as text | The input source supplied text where the workflow expected image data or an image reference it can resolve. | Check the selected tool’s image input requirements. Canva warns that a cloud photo URL in a spreadsheet may be treated as plain text. |
| Some images land in the wrong layer | Foreground and background fields may be assigned according to layer order. | Check the layer order and map each image field deliberately; preview each image role. |
| Long copy is clipped or hard to read | The template was not designed for the longest values in the data. | Shorten or edit the value, allow wrapping, or redesign the text area. Recheck visual hierarchy after changing font size. |
| Preview differs from generated output | Preview behavior can depend on data source; Canva calls out differences for some media replacements. | Generate a small representative set and inspect the final output, especially for non-directly linked Canva Sheets. |
| Adobe Express rejects the CSV structure | The file may not follow the template generated by the add-on. | Download a fresh CSV template from the add-on and fill its provided columns rather than substituting a separately designed schema. |
| An Adobe API job stays incomplete or fails | The workflow is asynchronous, or credentials, tagged fields, mappings, or media URLs do not meet requirements. | Poll the job status, inspect its result or error details, verify token and template setup, and confirm media URLs use an allowed domain and are pre-signed. |
| Adobe API requests are throttled | The default documented rate limit is five requests per minute. | Queue submissions and pace requests within the documented limit. Read current API guidance before increasing throughput assumptions. |
| Outputs are difficult to match to source records | Files use generic names or no manifest was retained. | Use a stable ID or data-column-based naming where available, and retain a mapping from source row to output. |
8. Performance, reliability, and cost
Performance
For no-code tools, the documented row or variation cap is the clearest planning limit in the reviewed material; it is not a generation-time benchmark. For API workflows, account for authentication, job submission, polling, media access, and result retrieval. Adobe Express’s documented default of five API requests per minute is a request rate limit, not a promise about completed variations per minute.
Reliability
Keep a source dataset and output manifest so a failed or incorrect variation can be traced to its input. For asynchronous jobs, persist job IDs and status, handle incomplete jobs without assuming success, and make retry behavior deliberate to avoid duplicate outputs. Previewing and final-image inspection catch different problems, so include both in the workflow.
Cost and rights
The cited product documentation establishes eligibility and API prerequisites, but does not provide enough information here to calculate a total project cost. Check current plan terms and any applicable API pricing before committing to a production workflow. Separately account for staff review, storage, and the time needed to correct data or templates. Confirm that source images are licensed for the intended use; template automation does not establish permission.
9. Or skip the browser setup
If the job is capturing screenshots of generated web pages or image previews, ScreenshotNeo is a website screenshot API and MCP server. One GET request can return a PNG, JPEG, WebP, or PDF. The example below captures a page as WebP; see the ScreenshotNeo API docs for options and authentication details.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
const bytes = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));
- Cookie banners are accepted like a visitor and removed before the shot, along with 60+ known consent platforms, newsletter popups, and chat widgets; each step can be turned off.
- Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. Responses include
X-Page-VerdictandX-Billedheaders. - An MCP server provides
take_screenshot,get_page_info, andcapture_pdftools for Claude, Cursor, and other MCP clients. - The free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000; every feature is on every plan.
Sign up free for 1,000 screenshots a month, no card required.
10. Frequently asked questions
Can I make different sizes or formats from one template?
That depends on the design tool and workflow. Confirm its output choices and whether each requested size needs its own design or tagged template. Generate a sample of each format or size and inspect it.
Should every row create a separate file?
Use separate files when outputs need individual distribution or record-level naming. A multipage document can be easier to review or archive as one deliverable. Canva documents both output choices; check the selected workflow’s options.
Is an API always faster for a large batch?
Not necessarily. An API makes integration repeatable, but it adds setup, rate limits, asynchronous processing, and output management. Compare those costs with the manual review and batch limits of a visual workflow.
Does generating the image mean it is ready to publish?
No. Review rendering, mappings, file organization, and image usage rights before publishing.


