How to Use Canva Bulk Create for Recipe Cards and Food Blog Graphics
Food bloggers: batch-create recipe cards, Pinterest pins, and social graphics from your recipe spreadsheet. One catch — image URLs don't work. Here's the fix.

You have 50 recipes on your food blog. Each one has a photo, a title, a short description, maybe a prep time and difficulty level. That's everything Canva needs to generate 50 beautiful recipe cards or Pinterest pins in one shot.
The problem: when you put those photo URLs into your CSV and run Canva Bulk Create, the image slots come out blank. Or worse — Canva prints the URL as plain text right in the middle of your card.
This is not a you problem. It's a Canva limitation, and it trips up food creators constantly. Here's what's actually happening and how to fix it fast.
Why Canva Bulk Create Ignores Your Recipe Images
When food bloggers work from a spreadsheet, the image column usually looks something like this:
https://yourblog.com/wp-content/uploads/fluffy-pancakes.jpg
https://yourblog.com/wp-content/uploads/lemon-tart.jpg
Those are valid URLs. They point to real images. But Canva Bulk Create does not fetch URLs. It requires images to be physically embedded inside the XLSX file as binary data anchored to cells — a format called DrawingML.
A URL is just a string of text. Canva has no mechanism to download the image it points to, so it treats the whole column as text. The image placeholder on your design either stays empty or gets filled with the URL itself.
This is the same limitation that affects Etsy sellers, Shopify store owners, and real estate agents — anyone working from a URL-based image source hits this exact wall. The fix is always the same: you need embedded images, not URLs.
What Food Bloggers Are Actually Trying to Do
Before getting into the fix, it helps to name the use case clearly, because this affects how you set up your spreadsheet.
Batch recipe cards: You have a standard recipe card template in Canva. Each card should show a photo, recipe name, prep time, and maybe one line of description. You want to generate all 50 at once instead of manually swapping content 50 times.
Pinterest pins in bulk: Food is one of the top-performing categories on Pinterest. A single recipe can have 3-5 pin variations — portrait layout, landscape, "ingredients" callout, seasonal framing. Bulk Create is the right tool for this. The bottleneck is getting the images in.
Instagram or TikTok covers: A grid of recipe cards or "what to cook this week" roundup graphics. Same spreadsheet-based workflow, same image problem.
Ebook or cookbook pages: Some creators use Bulk Create to generate consistent recipe page layouts across a digital product. Each page gets a photo, title, and formatted instructions.
All of these workflows are blocked by the same issue: Canva won't use image URLs.
The Manual Workaround (and Why It Doesn't Scale)
The most common workaround food bloggers find online: download all your recipe photos to your computer, then manually insert them into an XLSX file by going to Insert > Picture > In Cell in Excel or Google Sheets.
This actually works. Canva will pick up images inserted this way because they're embedded, not linked.
But if you have 50 recipes, you're downloading 50 images, then opening Excel, then inserting each one one at a time, then saving as XLSX, then uploading to Canva. For a cookbook with 100 recipes, that's a full afternoon of tedious file work before you've designed a single card.
There's also the column-by-column consistency issue. Excel's "Insert Picture in Cell" behavior can be fiddly — images don't always land in the right rows, especially if you're copying rows around or sorting your sheet. Canva then maps to the wrong recipe.
How Postprep Fixes This
Postprep solves the embed problem automatically. You give it a spreadsheet with a column of image URLs. It fetches each image, embeds it as proper DrawingML binary data in the correct cell, and outputs a clean XLSX file that Canva Bulk Create actually accepts.
Here's the workflow from start to finish:
Step 1: Build your recipe spreadsheet
Start with whatever data you already have. A typical recipe spreadsheet for Canva Bulk Create looks like this:
| recipe_name | prep_time | description | photo_url |
|---|---|---|---|
| Fluffy Buttermilk Pancakes | 20 min | Light, golden, impossible to stop eating | https://… |
| Classic Lemon Tart | 45 min | Crisp pastry, silky citrus curd | https://… |
The photo_url column should contain direct links to your recipe images. These can come from your WordPress media library, Cloudinary, your CDN, or anywhere you host your blog photos — as long as the URLs resolve to actual image files (JPG, PNG, WebP).
You don't need to download anything at this stage.
Step 2: Upload to Postprep
Go to postprep.app and upload your XLSX or CSV file. Postprep scans the sheet, identifies columns that contain image URLs, and shows you a preview of what it found.
No account required for up to 100 rows. For most food bloggers batch-creating recipe cards, that covers a full content calendar.
Step 3: Get your Canva-ready XLSX
Postprep converts the URL column to embedded images and hands you back a new XLSX file. The column that had URLs now has actual image data in each cell. Every other column — recipe name, prep time, description — stays exactly as it was.
Step 4: Set up your Canva template
In Canva, open your recipe card or pin template. Add placeholders for each data field: one for the photo, one for the recipe name, one for prep time, and so on. Give each placeholder a descriptive name so Bulk Create can map your spreadsheet columns correctly.
If you don't have a template yet, Canva has dozens of recipe card and food pin templates you can start from. Pick one, then add the data fields.
Step 5: Run Bulk Create
In Canva, open the Apps panel, find Bulk Create, and upload your Postprep-processed XLSX file. Canva reads each row as one design, maps the columns to your placeholders, and generates every card at once.
For a sheet with 50 recipes, you get 50 recipe cards — each with its own unique photo and text — in about 30 seconds.
Tips for Food Bloggers Setting Up the Spreadsheet
Keep image URLs direct. A direct URL ends with the actual file extension (.jpg, .png, .webp). URLs that redirect through a page, a shortener, or a CDN proxy with query parameters sometimes fail to resolve cleanly. If a photo doesn't embed correctly, try right-clicking the image on your blog post and copying the image address directly.
One image per recipe. Canva maps one image placeholder per data row. If you want to test multiple photo variations for the same recipe, duplicate the row and use a different URL in each copy.
Consistent image sizes help. Canva will resize images to fit your placeholder, but if your recipe photos are wildly different aspect ratios, some will have cropping you didn't expect. You'll save time in post if all your food photos are roughly the same format — portrait works best for Pinterest, square or landscape for Facebook.
Add a "season" or "category" column. If you're generating Pinterest pins, a column like category (Breakfast, Dessert, Weeknight Dinner) lets you segment your export and generate category-specific content batches. Canva can't filter rows for you, but you can sort your sheet before uploading so you're working one category at a time.
FAQ
Can I use image URLs from my WordPress media library?
Yes. WordPress media library URLs are direct image links and work well. The format is usually yourblog.com/wp-content/uploads/year/month/filename.jpg. Copy these directly into your spreadsheet.
What if I store my photos on Google Drive or Dropbox? Standard Google Drive share links don't resolve to raw image files — they point to a viewer page. You'd need to format the URL as a direct download link, which adds friction. The easier path is hosting images on your blog itself or on a CDN like Cloudinary. Alternatively, Postprep handles the download during processing, so as long as the URL returns an image file, it works.
How many recipes can I process at once? Postprep handles up to 100 rows free, no account required. For larger cookbooks or full-catalog processing, there's a paid tier. Canva Bulk Create itself caps at 300 rows per upload.
Do I need Canva Pro for Bulk Create? Yes. Bulk Create is a Canva Pro and Teams feature. If you're on the free tier, you won't see it in the Apps panel.
Can I include multiple images per recipe card? Canva supports multiple image placeholders in a single template. As long as your spreadsheet has a separate column for each image slot — say, a hero photo and a close-up detail shot — Postprep will embed both columns and Canva will fill both placeholders. Just make sure your template placeholders are named to match your column headers.
What file format should my spreadsheet be in? Postprep accepts both CSV and XLSX. If you export from Google Sheets, download as XLSX for best results. CSV works too, but XLSX is the format Canva requires for embedded images anyway, so you're generating XLSX regardless.
The Payoff
A food blogger publishing three recipes a week needs 12 social graphics a month at minimum — more if you're doing Pinterest variations. Doing those manually in Canva takes hours. Done with Bulk Create plus a processed spreadsheet, it takes minutes.
The only real barrier was the image URL problem. Now you know what causes it and how to clear it.
Try it free at postprep.app — 100 rows, no account required.