PostPrep
← Blog
2026-08-30

Canva Sheets Bulk Create: Why Your Images Aren't Showing Up (And the Fix)

Draft — Post #31 · Target keyword: canva sheets bulk create images not showing · Meta: Canva Sheets bulk create images not showing? Here's why image URLs fail in Canva Sheets and Data Autofill, and th

Pete B.
Pete B.
Founder, Postprep

Draft — Post #31 · Target keyword: canva sheets bulk create images not showing · Meta: Canva Sheets bulk create images not showing? Here's why image URLs fail in Canva Sheets and Data Autofill, and the fix that actually embeds them.

You built a Canva Sheet, dropped in a column of product photo URLs, hit "Bulk Create designs," and got back a stack of designs with broken image placeholders or blank boxes where your photos should be. The text fields filled in fine. The images didn't.

This isn't a bug you're missing a setting for. It's how Canva Sheets currently handles image data, and it catches people off guard because Canva Sheets is new enough that most of the troubleshooting content out there still talks about the old CSV upload flow, not the in-app spreadsheet.

Here's what's actually happening, and the fix that gets your images into the design instead of leaving you to drag and drop 50 photos by hand.

Why Canva Sheets Bulk Create Stalls on Images

Canva Sheets lets you build or import a data table directly inside Canva, then connect columns to design fields with Bulk Create or Data Autofill. Text, numbers, dates: all of that maps cleanly. Images are the exception.

If a column contains a link to a photo (from your website, a cloud storage folder, a shared drive), Canva Sheets treats that link as a string of text, not an image reference. Same root problem as the classic Bulk Create CSV upload we've written about before: Canva's bulk tooling reads image cells by looking for an actual embedded image object, not a URL. A URL is just text with a slash in it, as far as the design engine is concerned.

Canva's own help documentation is direct about this: image URLs from cloud storage aren't supported and will be treated as plain text, and each column needs to hold one type of content, either text or images, not a mix. If you're seeing your image column autofill as a wall of "https://..." strings instead of pictures, that's the mechanism, not a glitch.

Data Autofill (the API-driven version of this same feature) has the identical limitation. External image URLs aren't accepted there either.

The Manual Workaround Most People Try First

Before finding a real fix, most people try one of two things.

First: manually inserting each image with Insert > Picture in Excel or Google Sheets, one at a time, into the right cell. This works, technically. It also takes about a minute per image once you count clicking into the cell, browsing to the file, resizing, and repositioning. At 20 products that's tolerable. At 200 it's an afternoon gone.

Second: the =IMAGE() formula in Google Sheets. It looks like a fix because it renders a visible thumbnail right there in the sheet. But that thumbnail is a display formula, not an embedded image object, so when Canva reads the file it still only sees a text formula in the cell. We go deep on why this trips people up in our =IMAGE() breakdown if you want the technical detail.

Neither workaround is built for the scale Bulk Create promises. If you're doing this for more than a handful of rows, you need the images embedded as real objects in the file before it ever reaches Canva.

What You Need Before You Start

  • A list of image URLs (product photos, listing images, portrait shots, whatever you're batching)
  • The text data for each design (name, price, caption, whatever your template needs)
  • A Canva account with Bulk Create or Canva Sheets access
  • 5 minutes and a spreadsheet

How to Fix It: Embed the Images First

  1. Collect your image URLs. Pull them from wherever they live: your Shopify export, a folder of Google Drive links, a scraped list from your website. One URL per row.
  2. Build a simple spreadsheet. Keep it plain: one column per data field, one column for the image URL.
product_namepriceimage_url
Ceramic Mug$18https://cdn.example.com/mug1.jpg
Linen Tote$32https://cdn.example.com/tote1.jpg
Wool Throw$54https://cdn.example.com/throw1.jpg
  1. Convert it with Postprep. Upload the CSV or XLSX to postprep.app. It reads every image URL and embeds the actual photo into the cell using the same DrawingML format Excel uses for a real inserted picture, not a link, not a formula. The first 100 rows are free with no account required.
  2. Upload the converted file to Canva. Bring the Postprep output into the classic Bulk Create CSV/XLSX upload flow inside the Canva editor. Because the images are now genuine embedded objects, Canva reads them as pictures and drops them straight into your design fields.
  3. Bulk generate. Auto-match your fields or connect them manually, then generate the full batch.

A note on Canva Sheets specifically: Canva Sheets does accept CSV and XLSX file imports (up to 25MB) through its Import Data option, which means a Postprep-converted file is worth testing there directly. We haven't independently confirmed whether Canva Sheets preserves embedded images the same way the classic Bulk Create upload does, since it's a newer ingestion path. If you hit friction importing into Canva Sheets itself, the classic Bulk Create upload (step 4 above) is the workflow we've verified works.

A Repeatable Workflow

Once you've done this once, it's a five-minute habit instead of a project:

Export or compile your image URLs and text data into the same spreadsheet template each time. Run it through Postprep. Upload to Canva Bulk Create. That's the whole loop, and it scales the same whether you're doing 10 rows or the full 100-row free tier.

If you're batching product photos, portrait sessions, or listing images on a recurring schedule, save the spreadsheet template so you're only ever swapping in new rows.

FAQ

Why does my Canva Sheets image column show text instead of a photo?

Because the cell contains a URL, which Canva Sheets reads as plain text. It needs an embedded image object, not a link, to display or bulk-generate a photo.

Does Canva Sheets support importing a spreadsheet with embedded images?

Canva Sheets accepts CSV and XLSX uploads. Whether it preserves DrawingML-embedded images through that import the same way the classic Bulk Create editor does isn't something we've confirmed yet. Test with a small batch first, or use the classic Bulk Create upload flow, which we have verified.

Is this the same issue as Canva Bulk Create ignoring CSV image URLs?

Yes. Canva Sheets and Data Autofill are newer surfaces for the same underlying limitation covered in our Bulk Create image URL post. The fix is the same: embed the images before upload.

Can I use Google Drive or Dropbox links directly?

No. Cloud storage links are still URLs from Canva's perspective and get treated as text, regardless of which storage provider hosts the file.

Will this work with Canva's Data Autofill API too?

Canva's own documentation confirms external image URLs aren't currently supported for Data Autofill. The workaround there involves uploading images as Canva assets first, which is a separate, more developer-oriented path than the Bulk Create workflow this post covers.

How many rows can I convert for free?

Postprep's free tier handles up to 100 rows with no account required. Beyond that, it's a one-time fee, not a subscription.

The Short Version

Canva Sheets and Data Autofill inherited the exact same image-URL blind spot as classic Bulk Create: URLs read as text, not pictures. The fix isn't a Canva setting, it's fixing the file before it gets there. Embed the images as real objects, then let Bulk Create do what it's supposed to do.

Try it free at postprep.app — 100 rows, no account required.

Try it free

Canva Bulk Create with real embedded images.

Upload your CSV or XLSX. Select your image column. Download a Canva-ready file. Free for up to 100 rows — no account needed.

Try Postprep →
Pete B.

Written by

Pete B.

Pete is a small business owner who got tired of social media eating his evenings. Posting product graphics across channels used to mean opening Canva, dropping in each image by hand, and repeating that for every listing and every platform. He kept hitting the same wall: Canva Bulk Create can save hours, but it refuses to read image URLs from a spreadsheet — turning a 5-minute workflow into a 2-hour copy-paste job. So he built Postprep to fix that one specific limitation, and writes about bulk content workflows, design tool limitations, and shipping social content without burning out.

Discussion