Dropbox to Canva Bulk Create: How to Get Your Images to Actually Embed
Draft — Post #22 · Target keyword: dropbox to canva bulk create · Meta: Your photos live in Dropbox but Canva Bulk Create reads the share links as text. Here's the Dropbox to Canva Bulk Create workflo

Draft — Post #22 · Target keyword: dropbox to canva bulk create · Meta: Your photos live in Dropbox but Canva Bulk Create reads the share links as text. Here's the Dropbox to Canva Bulk Create workflow that embeds them.
Your images live in Dropbox. A clean folder of product shots, headshots, or listing photos, each one a share link away. So you build a spreadsheet, paste a Dropbox link into the image column for every row, drop the file into Canva Bulk Create, and hit generate.
Canva hands back a stack of designs with the raw link printed as text where the image should be. https://www.dropbox.com/scl/fi/abc123... sitting in the middle of your template in tiny gray type. Every single row.
This is the dead end almost everyone hits going from Dropbox to Canva Bulk Create. The fix is not a different share setting or a ?raw=1 trick. It is one conversion step Canva refuses to do on its own. Here is the full workflow.
Why Canva Bulk Create Ignores Your Dropbox 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 drops 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 Dropbox link is just text. Canva has no instruction to go fetch that URL, download the file, and place 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 import files from Dropbox, Google Drive, 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 photos 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 the Dropbox direct-link trick.
A normal Dropbox share link ends in ?dl=0, which points to a preview page, not the image file. The well-known fix is to change ?dl=0 to ?raw=1 (or ?dl=1 to force a download). The new link loads as a raw image in a browser, so it feels like the problem is solved. It is not, at least not for Bulk Create. Canva still sees a string of text in the cell, not embedded image data. The ?raw=1 swap helps when you are embedding an image in a website, an email, or a marketplace flat file. It does nothing for the XLSX merge that Canva runs.
The second hack is the =IMAGE() formula in Google Sheets. You point =IMAGE("dropbox-raw-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 Dropbox 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 Dropbox link per image. Dropbox links need a small tweak to behave as image URLs, so that gets its own step below.
Step 1: Get a Direct Image Link for Each Dropbox File
A default Dropbox share link points to a preview page. You need the raw version, and the file has to be shared so anyone with the link can open it.
For each image, hover over the file in Dropbox, click Share, then Create link, and copy it. A current link looks like this:
https://www.dropbox.com/scl/fi/abc123/photo.jpg?rlkey=xyz789&dl=0
Change the dl=0 at the end to raw=1:
https://www.dropbox.com/scl/fi/abc123/photo.jpg?rlkey=xyz789&raw=1
Keep the rlkey= part intact. That token is what authorizes the link, so dropping it breaks access. If you are still on Dropbox's older /s/ link format, the same dl=0 to raw=1 swap applies.
One honest caveat: Dropbox throttles links that get a lot of traffic and will temporarily disable a public link that generates what it considers excessive bandwidth. For a one-time batch of a few hundred product shots this rarely bites, but it is why a link that worked an hour ago can briefly return an error. Dropbox restores it once traffic settles, or you can regenerate the link.
If you have more than a handful of files, do not edit links by hand. Copy every share link into a spreadsheet column and use find-and-replace to change dl=0 to raw=1 across the whole list in one pass.
Step 2: Build the Spreadsheet
One row per output design. One column per text field. One column for the direct Dropbox image link. A product batch usually looks like this:
| product_name | price | tagline | image |
| Linen Throw Pillow | $38 | Stonewashed and soft | https://www.dropbox.com/scl/fi/abc.../pillow.jpg?rlkey=...&raw=1 |
| Ceramic Mug Set | $52 | Hand-glazed, set of 4 | https://www.dropbox.com/scl/fi/def.../mugs.jpg?rlkey=...&raw=1 |
| Wool Runner Rug | $140 | Flatweave, 2.5x8 | https://www.dropbox.com/scl/fi/ghi.../rug.jpg?rlkey=...&raw=1 |
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 Dropbox 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 Dropbox links surface fast. If a file is still set to a restricted share, a link is missing its rlkey token, or you forgot to swap dl=0 for raw=1, 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 Dropbox link formatting 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 Dropbox 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 Dropbox-to-Canva Workflow
The point of doing it this way is that the second batch costs almost nothing. Keep your images in one Dropbox folder with link sharing on, and a master sheet beside it: one row per item, one direct-link column. When it is time to ship, refresh the 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 Dropbox images, three sets of branded assets. The pattern is identical whether your images sit in Dropbox or another cloud drive; we cover the sibling case in Google Drive to Canva Bulk Create.
Frequently Asked Questions
Do my Dropbox files have to be public to the whole internet?
No. They have to be shared as "anyone with the link can view," which means only people holding the exact link can open the file. Nobody can find it by browsing your account. Once your designs are generated, you can revoke the link if you want.
My Dropbox links worked, then suddenly returned an error. Why?
Dropbox temporarily disables public links that pull too much traffic in a short window. On a normal batch you will not hit the ceiling, but if you do, wait for it to reset or regenerate the link. This is Dropbox protecting bandwidth, not a problem with your spreadsheet.
Do I have to use ?raw=1, or does ?dl=1 work too?
For embedding into a website, ?raw=1 serves the image inline and ?dl=1 forces a download. For a tool that fetches and embeds the file, either generally works because both resolve to the actual image rather than the preview page. The one that never works is the default ?dl=0.
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. A Dropbox link to a PDF, doc, or video will not produce a usable 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 Dropbox. For print work, keep high-resolution originals in the shared folder, since quality depends on the source file.
The Short Version
Going from Dropbox to Canva Bulk Create breaks for one reason: Canva reads Dropbox links as text, not images. Swapping dl=0 for raw=1 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 Dropbox files, convert each link to its raw form, run the sheet through Postprep, and bulk generate. Your Dropbox 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.