PostPrep
← Blog
2026-02-21

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.

Pete B.
Pete B.
Founder, Postprep

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.

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