Google Drive to Canva Bulk Create: How to Get Your Images to Actually Show Up
Draft — Post #21 · Target keyword: google drive to canva bulk create · Meta: Your product images live in Google Drive but Canva Bulk Create reads the links as text. Here's the Google Drive to Canva Bu

Draft — Post #21 · Target keyword: google drive to canva bulk create · Meta: Your product images live in Google Drive but Canva Bulk Create reads the links as text. Here's the Google Drive to Canva Bulk Create workflow that embeds them.
Your images live in Google Drive. A folder of product shots, headshots, or logos, all neatly organized, each one with a share link you can copy in two clicks. So you build a spreadsheet, paste a Drive link into the image column for every row, drop it into Canva Bulk Create, and hit generate.
Canva spits out a stack of designs with the raw link printed as text where the image should be. https://drive.google.com/file/d/1p6... sitting in the middle of your template in 8-point gray. Every single row.
This is the most common dead end people hit when they go from Google Drive to Canva Bulk Create. The fix is not another Drive setting or a different share permission. It is one conversion step Canva refuses to do on its own. Here is the full workflow.
Why Canva Bulk Create Ignores Your Google Drive Links
Canva Bulk Create merges a spreadsheet into a template. Text columns work fine. Drop in a column of names, prices, dates, or titles and Canva places each value into the matching {{placeholder}} cleanly.
Image columns are where it breaks. Canva Bulk Create only reads images that are physically embedded inside the XLSX file as binary data, in a format called DrawingML. A Google Drive link is just text. Canva has no instruction to go fetch that URL, download the file, and drop it into the design. So it does the only thing it knows how to do with text: it prints it. We covered the technical reason in full in Why Canva Bulk Create Ignores Image URLs.
Canva's own help docs confirm it: image links from cloud storage are treated as plain text and are not supported in the data merge. To get an image into a Bulk Create design, it has to be embedded directly in the sheet, inside a single cell, not floating over it.
One source of confusion worth clearing up: Canva does let you bulk import files from Google Drive, Dropbox, and OneDrive into your media library. That feature is real and it works. But it is a different thing from Bulk Create. Importing dumps the images into your uploads panel as a loose pile. It does not connect any image to a spreadsheet row, so 200 product shots and a 200-row sheet leave you with no way to tell Canva which image belongs to which row. The matching only happens when the image is embedded in the cell next to the data.
The Manual Workaround Most People Try First
Once the links fail, most people reach for one of two hacks.
The first is the Drive direct-link converter. You take a normal share link like https://drive.google.com/file/d/FILEID/view?usp=sharing, run it through a free tool, and get back a "direct" image URL like https://lh3.googleusercontent.com/d/FILEID. This feels like progress because the new link sometimes loads as a raw image in a browser. But it does not fix Bulk Create. Canva still sees a string of text in the cell, not embedded image data. The converted link helps if you are embedding images in a website or email. It does nothing for the XLSX merge.
The second hack is the =IMAGE() formula in Google Sheets. You point =IMAGE("drive-link") at each row, the thumbnails render inside the sheet, and it looks like the images are now "in" the spreadsheet. They are not. =IMAGE() is a live cell reference that only exists while the sheet is open in Google. Export to XLSX or CSV and the actual image data never comes with it. Canva parses the file and finds nothing. We broke this down in Why =IMAGE() Doesn't Work for Canva Bulk Create.
The only manual path that actually works is opening the file in Excel and using Insert > Picture > Place in Cell for every row, pointing at images you have already downloaded from Drive to your laptop, named and ordered to match. That works for five rows. At fifty or five hundred it is an afternoon you will not get back.
What You Need Before You Start
Two things.
A Canva template with placeholders. Whatever you are batching, build one design with Bulk Create placeholders for your text fields like {{product_name}} or {{price}}, plus one image element for the photo or logo that will change per row.
A spreadsheet with one row per design and a direct Drive link per image. This is the part Drive makes slightly fiddly, so it gets its own step below.
Step 1: Get a Direct Image Link for Each Drive File
A normal Drive share link points to a preview page, not the image file itself. You need the direct version, and the file has to be shared so anyone with the link can open it.
For each image, right-click in Drive, choose Share, and under General access switch from Restricted to "Anyone with the link." This matters. If the file stays restricted, no tool can fetch it, because the request looks like a stranger knocking on a locked door.
Then copy the share link and convert it to the direct form. Take the file ID out of the middle of the link:
https://drive.google.com/file/d/1p6H6BNwufh7svA2RxnHBz1bqZPaZ4BMJ/view?usp=sharing
The bold part is the file ID. Drop it into this format:
https://drive.google.com/uc?export=download&id=FILEID
Or the newer image-host form, which tends to be more reliable for photos:
https://lh3.googleusercontent.com/d/FILEID
One honest caveat: Google has tightened how these direct links behave, and very large files or high request volumes can occasionally hit a "can't scan for viruses" page or a rate limit instead of the raw image. For typical product shots and logos this rarely bites, but it is why a converted link can work one day and stutter the next.
If you have more than a handful of files, do not convert links by hand. Free Drive direct-link generators batch a whole folder, or you can pull file IDs from the folder listing and build the URLs with a quick formula.
Step 2: Build the Spreadsheet
One row per output design. One column per text field. One column for the direct Drive image link. A product batch usually looks like this:
| product_name | price | tagline | image |
| Linen Throw Pillow | $38 | Stonewashed and soft | https://lh3.googleusercontent.com/d/1p6H6BN... |
| Ceramic Mug Set | $52 | Hand-glazed, set of 4 | https://lh3.googleusercontent.com/d/1aZ9k2Q... |
| Wool Runner Rug | $140 | Flatweave, 2.5x8 | https://lh3.googleusercontent.com/d/1Bd4m7X... |
Save it as CSV or XLSX. Column names do not have to match Canva exactly since you map them in the Bulk Create panel, but matching names lets Canva auto-connect in one click. If your source data already lives in Google Sheets, you are most of the way there. Our Google Sheets to Canva Bulk Create workflow covers that starting point in more detail.
Step 3: Convert the Spreadsheet With Postprep
This is the step Canva will not do. Go to postprep.app, upload your CSV, and pick the column holding the Drive links. Postprep fetches each URL, downloads the image, and embeds it inside the XLSX as DrawingML, the binary format Canva actually reads. Every text column passes through untouched.
Because Postprep is doing the fetching, this is also where shaky Drive links surface fast. If a file is still set to Restricted or a link is malformed, that row comes back without an image instead of silently breaking inside Canva later. A few hundred rows take about a minute. The free tier covers 100 rows with no account required. If you would rather not deal with Drive links at all, the same tool handles plain image URLs from any source, which we walk through in How to Bulk Embed Images in Excel From URLs.
Step 4: Bulk Generate in Canva
Open your template in Canva. In the left panel click Apps, then Bulk Create. Click Upload data and pick your converted XLSX. Drag each column onto its matching placeholder, or use Auto-connect if the names line up. Click Generate designs.
Canva produces one finished design per row with the Drive images already in place. Download the set as a ZIP, or push straight to print or scheduling. Note that Bulk Create is a paid Canva feature and tends to be desktop-only; check your current plan, since Canva changes eligibility from time to time.
A Repeatable Drive-to-Canva Workflow
The point of doing it this way is that the second batch costs almost nothing. Keep your images in one Drive folder shared as "Anyone with the link," with a master sheet next to it: one row per item, one direct-link column. When it is time to ship, refresh the direct links, run the sheet through Postprep, and bulk generate. A weekly drop of new arrivals becomes ten minutes of spreadsheet work instead of an afternoon of dragging files.
If you run more than one design off the same data, take the same converted XLSX into each template and run Bulk Create once per template. Same Drive images, three sets of branded assets.
Frequently Asked Questions
Do my Drive files have to be public to the whole internet?
No. They have to be set to "Anyone with the link," which means anyone holding the exact link can view the file. People cannot find it by browsing your Drive or searching. Once your designs are generated, you can switch the folder back to Restricted if you want.
My Drive links worked yesterday and failed today. Why?
Google rate-limits and occasionally throws a scan-warning page for direct links, especially on large files or high volumes. The lh3.googleusercontent.com/d/FILEID format is usually more stable than the older uc?export=download one. If a link stutters, that is Drive's behavior, not your spreadsheet.
What image formats work?
JPG and PNG are safe. Canva reads them straight from the embedded XLSX. SVG logos should be exported to PNG first. Direct-link converters only return usable links for image files anyway, so a link to a Doc or video will not produce an image.
What if some rows have no image yet?
Leave the link cell blank for those rows. Postprep skips the embed for empty cells and Canva leaves the placeholder visible. Re-run the batch once the missing images land in Drive. For print, keep high-resolution originals in the shared folder, since quality depends on the source file.
The Short Version
Going from Google Drive to Canva Bulk Create breaks for one reason: Canva reads Drive links as text, not images. Converting the share link to a direct link does not fix it, and =IMAGE() does not either. The only thing that works is embedding the actual image data inside the XLSX before you upload to Canva.
Share your Drive files, get a direct link per row, run the sheet through Postprep, and bulk generate. Your Drive folder becomes the source of truth, and every batch after the first is a ten-minute job.
Try it free at postprep.app — 100 rows, no account required.