Bulk create from a table

One spreadsheet, a finished design for every row

Paste a table of products, prices, names or quotes, connect its columns to a template, add photos from your device, and download every design in one ZIP. Nothing you add is uploaded.

Processed on your device — never uploaded

1. Choose a template

2. Add your table

Preview

Choose a template to start.

Export

Export

Your table, photos and designs stay on this device — nothing is uploaded.

The complete guide to making images from a spreadsheet

From a spreadsheet to finished images

Plenty of image work is the same design over and over with different words. A shop needs a card for every product with its name, price and photo. An event organiser needs a badge or a session card for every speaker. A teacher needs a certificate for every student. A creator needs a quote image for every quote in a list. Doing that by hand means copying and pasting into a template dozens of times, and every repetition is a chance for a typo or a mismatched photo.

Bulk create does the repetitive part from a table. You keep doing what spreadsheets are good at — collecting and checking data — and the tool turns each row into a finished image with the same layout, fonts and spacing. Change the table and run it again, and every design updates together.

Everything happens in your browser. The table you paste, the photos you choose and the designs it makes never leave your device, which matters when the table is a product list before launch, a class list, or anything else you would rather not upload.

Preparing your table

Put one design per row and one kind of information per column, with a header row naming the columns: title, price, sku and photo, for example. Any spreadsheet can save that as CSV, or you can copy the cells and paste them straight into the tool. The separator — comma, semicolon or tab — is detected for you, so tables from spreadsheets set to other regional formats work too.

The reader follows the CSV standard closely. Values in quotes can contain commas and even line breaks, which is how you put a two-line title into one cell. Doubled quotes inside a quoted value become a single quote. Blank cells are allowed. If some rows have more or fewer cells than the header, the tool says so and fills the gaps with blanks rather than shifting values into the wrong columns.

Values are text, always. Leading zeros on product codes stay, formulas are shown rather than calculated, and nothing in a cell can be interpreted as code. Non-Latin scripts such as Bangla, Arabic or Devanagari are drawn as typed; when the template's font doesn't include those letters, the browser's own fonts fill in for them.

Connecting columns to the template

After you choose a template, every text box and photo area it contains appears in a list, labelled with the text it shows today. Next to each is a menu of your columns. Pick the column that should replace that text, or leave it on Keep the template text for things that are the same on every design, such as your shop's name. The tool suggests obvious matches — a price column for a price-looking box, a title or name column for the largest heading — but every choice is yours.

Connections are made to the template's layers, not to whatever text they happen to show, so editing the words in a template can never quietly move your price into the title. For each connected text you can also set what appears when a cell is empty, for example "Coming soon" for a missing price.

Choose a column to name the files — a SKU or product name is usual — and each design is saved under that value, cleaned of characters file systems refuse and made unique if two rows share a name. Leave it on Row number and the files are named row-001, row-002 and so on.

Photos from your device, matched by name

Product and thumbnail templates have a photo area. Give your table a column with each row's photo file name and choose those photos from your device; the tool matches them up. It tries the exact name first, then ignores capital letters, then ignores the extension and spacing, so Linen Shirt.JPG still matches linen-shirt.jpg.

Two problems are reported instead of guessed at. If two chosen photos could both be the one a row names, the tool lists them and you choose. If no chosen photo matches, that row is held back with a message naming the file it looked for, while every other row carries on. A photo from one row can never end up in another, because every design starts again from the untouched template.

Photos fill their area the way the template designer intended: scaled to cover it, centred, with the area's rounded corners. Cells holding web addresses are never fetched — the job stays private and doesn't depend on someone else's server — but their file name part is used, so downloaded files still match.

Checking every design before you export

The preview shows the design for any row, drawn by the same renderer that makes the final files, so what you check is what you get. Step through rows one at a time, jump to the first or last, or go straight to the first row with a problem.

Long text is the most common problem with any template. Each connected text box knows how much room it has — up to the template's margins or the next text box beside it — and long values shrink to fit, never below the minimum size you set. Rows whose text still won't fit are flagged before you export, with the box named, so you can shorten that cell or lower the minimum. Nothing is clipped without telling you.

Untick any row you don't want, and rows waiting on a photo fix are left out until it's fixed. The export button always says how many designs it is about to make.

Exporting, limits and what's next

Choose PNG for crisp graphics, JPEG for the smallest photos, or WebP. Designs are made one at a time with progress you can cancel; finished designs are kept, so a cancelled or partly failed job can be downloaded as it stands or finished later without redoing the rows that worked. The ZIP includes a manifest listing every row, its file name, and why any row was skipped. How many designs one job makes depends on your plan, and the number is shown before you import and again before you export; no plan adds a watermark.

Save the mapping to reuse the same setup with next month's table. When the ZIP is ready, the batch tools can compress or convert the whole set, and the watermark tool can brand each design. For one-off designs, open a template in the editor instead.

Frequently asked questions

What does bulk create do?

It turns a table into finished images. Pick a template, paste a table or choose a CSV file, connect columns to the template's text and photo areas, and download one design per row in a ZIP. A product list becomes a set of product cards; an event list becomes a set of event cards; a list of quotes becomes a set of quote images.

Is my table uploaded anywhere?

No. The table, your photos and the finished designs stay in your browser. The template is drawn on your device with the same engine our editor uses, and the ZIP is built on your device. Cells, headers, filenames and text are never sent to us — not even to analytics, which only records counts.

How many designs can I make at once?

Free makes up to 5 designs per job, Pro up to 100 and Business up to 500. A design is one row of your table; the number of columns doesn't matter. The limit is shown before you import and before you export. On phones and low-memory devices the tool may make smaller batches so the browser doesn't run out of memory.

Which file formats can the table be?

CSV, or text pasted straight from a spreadsheet. Comma, semicolon and tab separators are detected automatically, quoted values may contain commas and line breaks, and a UTF-8 byte-order mark is handled. Excel and Google Sheets can both save or copy as CSV. XLSX files and live Google Sheets links aren't supported in this version.

Will it keep leading zeros and special characters?

Yes. Every cell is treated as text exactly as written: a SKU of 00123 stays 00123, a formula like =SUM(A1) is shown as those characters rather than calculated, and Bangla, accented and other non-Latin text is drawn as typed. Nothing in a cell is ever run as code or markup.

How do photos get into the designs?

Templates with a photo area can take a photo per row. Put the file name in a column — for example shirt.jpg — choose those photos from your device, and connect the column to the photo area. Matching tries the exact name first, then ignores case, then ignores the extension and spaces. If two photos could match, you choose; if none matches, only that row is held back with a clear message.

Can I use image links from the web?

Not as links. The tool never downloads anything a cell points to, which keeps the job private and predictable. If a cell holds a web address, the last part of it is used as a file name, so choosing the downloaded files from your device still works.

What happens when text is too long?

It shrinks to fit the space the template gives it, down to a minimum you set (60% of the original size by default). If it still doesn't fit, the row is flagged before you export, and you can jump straight to it to shorten the text or lower the minimum. Text is never silently cut off.

What if something fails halfway?

Each row is made on its own. If one fails, the others still finish and the error names the row. Cancel stops after the current design; finished designs are kept, and you can download them or carry on with only the missing rows. The manifest.json in the ZIP lists every row with its file name or the reason it was skipped.

Can I reuse the setup next week?

Yes. Save mapping downloads a small file recording the template and which column goes where. It contains no table data and no photos. Next time, add your new table, open the mapping, and everything reconnects — if a column has been renamed, the tool tells you which one.