Why Canva Bulk Create Ignores Image URLs (And How to Fix It)
Canva Bulk Create won't read image URLs from your CSV. Here's the technical reason why — and the fastest fix.

You've got a spreadsheet. Rows of product images, listing photos, or social media assets — each one with a URL pointing to the image. You connect the CSV to Canva Bulk Create, hit generate, and… nothing. Just a blank image placeholder, or worse, the URL itself printed as text.
You're not doing it wrong. Canva Bulk Create genuinely does not support image URLs. Here's exactly why — and the cleanest way around it.
Why Canva Bulk Create Won't Read Your Image URLs
Canva's Bulk Create reads data from XLSX files (and its own Canva Sheets). When it processes an image column, it doesn't fetch URLs from the internet. It looks for actual image data embedded directly inside the file — specifically, images stored as DrawingML objects anchored to individual cells.
When your spreadsheet has a column of URLs, Canva sees them as plain text strings. It has no way to know those strings are supposed to become images, and even if it did, it won't reach out to fetch them. The result: your image slots stay empty, or your URLs get slapped onto your design as raw text.
This isn't a bug. It's a deliberate limitation, and it's been consistent since Bulk Create launched. The Canva help docs even confirm it:
"Image URLs from cloud photo storage are not supported and will be treated as plain text."
So if you've been chasing a settings toggle or a different CSV format, there isn't one. The file itself needs to change.
What You Actually Need: Embedded Images
For Canva Bulk Create to recognize an image, it must be embedded into a cell in your XLSX file. Not linked. Not referenced by URL. The raw image data has to live inside the file, in a very specific format (DrawingML), anchored to a single cell.
This is easy to do manually if you have 5 rows. It's completely impractical at 50, 100, or 500 rows.
Here's what the manual process looks like in Excel:
- Open your spreadsheet in Excel (not Google Sheets — Google Sheets doesn't support this export format)
- Click the cell where you want the image
- Go to Insert → Pictures → Place in Cell
- Upload the image file from your computer
- Repeat for every row
- Save as
.xlsx
That's one image. Now do it 200 times.
You also need the actual image files on your computer — not URLs. So if you're working from a Shopify product catalog, Etsy listings, a Google Sheet of assets, or any other URL-based source, you'd need to download every image first.
The Automated Fix: Convert Your URL List to a Canva-Ready XLSX
This is the exact problem Postprep solves.
You bring your existing spreadsheet — CSV, TSV, or XLSX — with a column of image URLs. Postprep fetches each image, embeds it into an XLSX file using the DrawingML format Canva requires, and hands back a file you can upload directly to Canva Bulk Create.
No downloading images. No opening Excel. No repeating anything.
How It Works
Step 1: Prepare your spreadsheet
Your file needs at least one column of image URLs. The rest of your columns (product names, prices, captions, whatever) carry through unchanged. It doesn't matter where the URLs point — Shopify CDN, Etsy, S3, your own server — as long as the images are publicly accessible.
Example structure:
| product_name | price | image_url |
|---|---|---|
| Ceramic Mug | $24 | https://yourstore.com/images/mug.jpg |
| Linen Tote | $38 | https://yourstore.com/images/tote.jpg |
Step 2: Upload to Postprep
Go to postprep.app, upload your file, and select which column contains your image URLs.
Step 3: Download the XLSX
Postprep processes the file and returns an XLSX with images properly embedded in each row. Every other column stays intact.
Step 4: Upload to Canva Bulk Create
In Canva, open your template, go to Apps → Bulk Create, upload the XLSX, connect your fields, and generate. Your images show up as actual images — not URLs, not blanks.
Use Cases That Work Well With This Workflow
Etsy sellers creating seasonal social posts from product listings. Export your listing data (title, price, image URL), run it through Postprep, bulk-generate 20 Instagram posts in Canva in under 5 minutes.
Shopify store owners building product announcement graphics. Pull a product export CSV, add your image column, convert, and generate a batch of ads or announcement posts.
Real estate agents generating listing cards. Pull property data with photo URLs from your CRM or MLS export, convert, generate.
Recipe creators and food bloggers posting recipe cards. If you keep a spreadsheet of recipes with dish photos, this gives you a direct path to bulk-generating visual content.
Frequently Asked Questions
Does this work with Google Sheets exports?
Yes. Export your Google Sheet as a CSV, upload that CSV to Postprep, and it handles the rest. The output is always an XLSX formatted for Canva.
What image formats are supported?
JPEG, PNG, and WebP URLs all work. If your images are hosted behind authentication (private S3, password-protected pages), they won't be accessible — images need to be publicly reachable URLs.
Can I use this with Canva's free plan?
Canva Bulk Create is a Canva Pro / Teams feature. Postprep handles the file conversion — the actual Bulk Create step in Canva still requires a Pro account.
What's the row limit?
Postprep's free tier handles up to 100 rows. Larger batches are available with a one-time unlock.
Do I need to install anything?
No. Postprep is a web app. Upload your file, get your XLSX back, done.
The Short Version
Canva Bulk Create requires images to be physically embedded in your XLSX — not linked, not URL-referenced. If your workflow involves any kind of URL-based image source (ecommerce exports, CRM data, spreadsheets from anywhere), you need to convert that file before Canva can use it.
Postprep does that conversion in one step. Upload your CSV with image URLs, download a Canva-ready XLSX.
Ready to try it? postprep.app — free for up to 100 rows.