I should say upfront that I’m not a big proponent of AI. There are some AI tools I love, like Photoshop’s generative remove feature, but they are tools that supplement my workflow, not agents trying to take the place of a person. It’s awesome that instead of manually removing a street sign from a photo, I can use Adobe Firefly to do it quickly and accurately. And to be fair, there are some things you can do with Claude (the LLM we use at Online Optimism most frequently) that are awesome, too, when the use case is right. But as I found out, that use case is not going to include subbing in for a designer.
Why did I try making Claude do design work?
The ask from my boss: Implement a Claude + Canva integration that allows our Social Media team to quickly generate on-brand graphics on their own. The idea here is that it would be great if the Social team had a reliable way to make new graphics directly, without needing to actually design anything in Canva or get them checked for brand compliance. It’s implied that this process would also follow our file management and naming standards, create graphics that meet at least a minimum level of brand compliance, and—this is key—save time overall versus having the Social team request a graphic from a designer.
The answer: Not possible, based on my experience. It takes a fair amount of upfront manual work to get Claude to accurately design and insert copy into a Canva graphic, and even though some of that work can be done in advance, some of it has to happen for each graphic. The Claude + Canva integration has some gaping holes in its functionality that require manual actions for everything but the most basic of designs. There’s also the possibility that the API will lock randomly, and you won’t be able to make any more edits for an unknown amount of time, which happened to me at one point. Even after I worked through the kinks, wrote an all-encompassing prompt, and produced a pretty good result, having Claude make the graphic still didn’t meet our goals and was simply not worth the trouble.
Read below for an in-depth look at what I tested with the Claude + Canva integration, or skip to the end to see my thoughts and recommendations on using this integration.
Test #1: Initial Graphic Creation
As always, I used something for Online Optimism itself for my test case. The Social team had asked me to make a very straightforward Instagram carousel to promote a case study of ours (shout out SCCADVASA), so I used copy from one of those slides as a test case.
My first prompt to Claude:
Hi! If I gave you a brand guide, color codes, font files, specs, copy, and assets; a general description of what I wanted the output to look like; and access to my Canva account, would you be able to create an on-brand, properly sized graphic that I could then edit in Canva? If not, what else would you need?*
*Anywhere you see this style, it’s a verbatim message from me.
Claude responded:
Yes, that should work well! With everything you’ve described, here’s what I can do: using your connected Canva account, I’d use Canva’s tools to build the graphic — placing elements, applying your brand colors, setting typography, sizing everything to spec, and arranging the layout based on your description. The result would be a design saved directly to your Canva account, ready for you to open and tweak.
A few honest caveats:
– Fonts: If your brand fonts aren’t already in Canva (or aren’t Canva-native fonts), you’d need to have them uploaded to your Canva account beforehand, since I can’t upload font files directly.
– Custom assets: Logos, images, and icons would need to be uploaded to your Canva account (or Brand Kit) ahead of time, or shared with me as files I can work with.
– Layout fidelity: I’ll get as close as possible to your description, but you may want to do a final polish pass — Canva editing is very easy, so any small adjustments should be quick.
– Canva plan: Some features (like Brand Kits, custom fonts, and certain templates) require Canva Pro or Teams.**
**And this style is for verbatim messages from Claude. I have removed pieces of some of Claude’s responses, since it tends to re-state things frequently, but I haven’t changed any of its wording in what I’ve included.
Felt promising! I first confirmed whether Claude could just use elements from a Canva brand kit instead based on my specifying the name of the brand kit; it responded, “Yes, absolutely.” (This was not true; see more on Claude’s brand kit limitations below.) I also asked it to confirm our Canva Pro account was properly connected—I had integrated it through the Connectors setup, but I then also had to enable it in the chat. Then we were ready to go! Here’s the first design prompt I sent, with a photo file attached to the message:
Brand Kit: Online Optimism
Dimensions: 1080×1350 pixels and 1080×1080 pixels (two artboards in the same file)
Copy for each artboard:
Header (Roboto Mono): The mission
Subtitle (Playwrite): Connecting people to help when they need it most
Copy (Roboto): SCCADVASA supports 22 domestic violence and sexual assault programs across South Carolina. Since 2021, we’ve worked alongside their team to create campaigns that are mindful, inclusive, and effective at getting people to the resources they need.
Layout description: Divide the composition vertically, with the top half a light green/”grello” gradient background from the brand kit and the bottom half the attached photo, full bleed. I’d like all the copy in a white pop-up box, centered. The box should mostly be over the gradient background, but it can overlap a bit over the photo.
Please send me a link to an editable Canva file with both sizes of this design. Thanks!
Claude ran into an initial issue: “The image you shared is embedded in our conversation — I unfortunately can’t extract and re-upload an embedded chat image directly to Canva.” I manually uploaded the photo to Canva and pasted in the name of the file, but without the file extension. Claude couldn’t find it, so I resent the file name with the extension, and that worked.
Claude’s Initial Generated Designs
In the meantime, Claude was working on an initial set of designs, below. These looked nothing like I had described, and they used totally different copy. They were also only in the 1080×1350 size, since “Canva’s generation tool doesn’t support true multi-page output directly, but once we commit the design I can duplicate the page and resize it to get you both the 1080×1350 and 1080×1080 versions in one file.”
Confused, I wrote, “You didn’t follow my layout directions or use the right copy for these. None of them are right for what I’m looking for. Is there a better way I can give you copy and layout directions versus what I did above?” Claude responded:
Great question, and I appreciate the honest feedback. Let me be transparent about what happened and what would actually work better.
The honest limitation: Canva’s `generate-design` tool is essentially an AI prompt-to-design generator — it interprets a text description and makes its own creative decisions. It doesn’t reliably follow precise layout specs, use exact copy verbatim, or respect things like “white box overlapping the photo by exactly this much.” The results you saw reflect that — it interpreted the brief loosely rather than executing it precisely.
What would work better for your needs is a different approach entirely: instead of generating from scratch, I build on top of a blank canvas using Canva’s editing tools, where I have direct control… The editing tools give me precise, deterministic control — much closer to what you’d get from a human designer working in Canva — versus the generate tool which is more of a “best guess from a prompt.”
Claude also included that it would need “A starting point — either I create a blank 1080×1350 design first, or you create one and share the design ID/link with me.”
It had not been clear to me from Claude initially confirming it would “use Canva’s tools to build the graphic — placing elements, applying your brand colors, setting typography, sizing everything to spec, and arranging the layout based on your description,” that its outputs would not actually use my copy or follow my layout direction. Claude hadn’t given me this “honest limitation” from the get-go.
I asked Claude to proceed with the new approach it had suggested and make the file itself, in a folder I specified. Claude confirmed it found the folder, but then wrote:
I need to be upfront with you about a key limitation before going further. The Canva editing API tools available to me allow me to edit existing designs — I can replace text, swap images, reposition and resize elements, and format text. However, I cannot create elements from scratch (like drawing a new rectangle shape for the white copy box, or creating a gradient background). The API doesn’t expose a “create shape” or “create text box” operation.
What I can do with the editing approach:
- Take an existing design that already has the right structural elements (a background rectangle, a white box shape, text placeholders)
- Swap in your exact copy, apply the right fonts/colors, place your photo, and adjust sizing/positioning
The most realistic path forward is one of these:
- Option A (Recommended): You create a very simple 2-page blank template in Canva yourself — just drop in a colored rectangle for the background, a white rectangle for the copy box, and three text boxes — then share the design link with me. I’ll take it from there and fill in everything precisely: your copy, fonts, colors, photo, sizing, and move it to OO Social.
- Option B: I create the design using the AI generator, pick the closest candidate, commit it, and then use the editing tools to correct the copy and swap the photo — but the layout structure would still come from the generator’s interpretation.
- Option C: You handle the design yourself in Canva with my guidance (I can give you exact specs for every element — positions, sizes, colors, font settings).
Given how specific your layout requirements are, Option A would give you the most accurate result with the least back-and-forth. Would you like to go that route?
First we had an honest limitation, now there’s a new key limitation! Claude had offered to make the design file, but it turns out it couldn’t do that at all—if I wanted a design following my direction and using my exact copy, I’d need to first create a template myself with placeholders for all the content I wanted for Claude to work from.
(I also thought Option C was very funny. Thanks for the offer, Claude.)
My Test 1 Templates
I made the templates below. I added text box placeholders with the correct fonts. I used a rectangle for where I wanted the background image and dropped in an image frame for the bottom photo, just to see what would work better. I gave Claude the link to the file and asked, “Please use the brand kit, copy, and direction from above to update the graphics. If you’re able to adjust the font size and text box space to fill the pop-up box, that would be ideal – although please keep the heading largest, then the subtitle, then the body smallest.”
Claude’s Test 1 Designs, Round 1
Claude confirmed, “I can see the design clearly… Now I’ll apply all the edits in one go across both pages: replace the text with your exact copy, set the correct fonts/sizes/formatting, insert the SCCADVASA photo into the bottom half of each page, and update the title.”
Well, it’s progress, but there’s still a long way to go to a finalized graphic. There were several pieces I needed to address, which I’ve broken down into categories below.
Problem #1: Claude Can’t Use Brand Kits
My biggest complaint with the Claude + Canva integration is that Canva brand kits are virtually useless to Claude, and you have to spoon-feed Claude to get it to use your brand standards and elements. This was especially annoying because I had specifically asked Claude, “Would you still need me to give you color codes/font files/logo files/etc. if they’re already uploaded to a Brand Kit in Canva? Could I just specify the name of the Brand Kit for you instead?” and it responded, “Yes, absolutely — if your colors, fonts, and logos are already in a Canva Brand Kit, you can just tell me the name of the kit. I’ll be able to reference it directly when building the design, so no need to re-share any of those assets separately.” That turned out to be simply untrue.
Claude can’t find or use visual elements that are only uploaded into a brand kit (i.e. they aren’t in the main media library). I found this out while I was trying to get Claude to add one of our branded gradient backgrounds to the graphic. I gave Claude the full name of the file. It searched for the file, then asked, “Could you confirm whether the gradient file is in your Uploads folder or only in the brand kit’s Graphics section? If it’s only in the brand kit, I won’t be able to reference it as an image asset — you’d need to upload it to your media library first.” So I manually uploaded the gradient image to my Canva Uploads and re-sent Claude the name of the file.
I kind of couldn’t believe this, so I asked, “To clarify, if I have an image asset only in a brand kit but not in the media library, you can’t use it at all?” The answer: “Correct — if an asset is only in the brand kit’s Graphics section and not in your media library (Uploads), I have no way to reference it by asset ID, so I can’t use it at all. Brand kit graphics aren’t exposed as addressable assets through the API.” So any logos, any icons, anything you’ve got in a brand kit—not only do you have to give Claude their exact file names (with file extensions!), you also have to make sure they’re double-uploaded to your media library.
I realized when I wrote my design prompt and made my template I had specified what fonts to use and styled the text boxes with those fonts, so I tested this later on (see Test #3) and found that Claude is not able to apply font styles from brand kits to designs, either, even when you specify which styles to use on which text boxes.
Claude also can’t pull exact colors from brand kits. I picked up on this when I gave Claude some initial edits, among them, “Please change the subline to use the dark green color in the brand kit,” and it wrote, “I’ll use #1a4d2e as a reasonable brand dark green — but do you have the exact hex from the brand kit so I can match it precisely?” I responded with the hex code, asking, “Would you have been able to pull that exact color, or would you just be able to approximate it if I didn’t give you the hex code?” Claude’s answer:
I would not have been able to pull the exact brand kit color automatically. The editing API lets me apply a hex color to text, but it doesn’t let me read colors out of a brand kit programmatically. So I’d always need you to provide the exact hex — or I’d be approximating. Good to know for future rounds!
Claude’s positivity about its own limitations was starting to get to me. Good to know for future rounds that I’d be copy-pasting hex codes for every color change, even with a brand guide—something I’ve never had to do for a human designer.
Problem #2: Claude Struggles to Insert Images
I asked Claude what the best way would be for it to insert the background image where I had the blue rectangle in my template. (I also clarified that by “gradient background” I was talking about an image of a gradient, not a live gradient, which was confusing it.) It told me,
Yes, I should be able to do this! Since it’s an image file (not a Canva-native gradient element), I can place it using insert_fill or update_fill just like I placed the photo. I won’t need you to add an image frame — I can target the existing blue rectangle element directly and swap its fill for the gradient image.
I provided the name of the file and asked it, “Please vertically center it in the frames you’re placing it into.” At this point, Claude couldn’t find the file because it was only in my brand kit, and I had to re-upload it to the media library (see above).
Claude did confirm that it could see the newly uploaded gradient file, but it still couldn’t place it on the image because it couldn’t swap an image with the blue rectangle shape, which was what it said it could do above. Now, it told me, “The most practical path is for you to swap it manually in Canva (click the blue rectangle → replace fill with the gradient image from your media library). It’s a 10-second fix.” Further down in the same message, it wrote, “To fix it yourself: click the blue rectangle → in the fill panel, switch it to an image fill → select OO-Grain-Gradient_Grello-Full_1080x1350.png from your media library. Repeat on page 2. Should take about 30 seconds per page.”
While I appreciate Claude giving me preemptive directions and assuring me that these changes wouldn’t take long, I was already this deep. Committed to the task at hand, I tried again, adding an image frame where the rectangle had been and asking Claude to drop the gradient there, since that had seemed to work with the photo.
Wrong! Claude wrote, “I need to be upfront: I can’t target an empty image frame via update_fill — the API requires a frame to already contain an editable image fill in order to replace it. Empty frames aren’t exposed as addressable elements.” It continued,
Here are your honest options for the gradient frame:
Option A (Recommended): Drop the gradient image into the frame yourself in Canva (drag it from your media library onto the frame) — this populates it, and then I can adjust its position/centering from there in a follow-up edit.
Option B: Skip the separate frame and instead tell me the exact position and dimensions of the frame you drew, and I’ll use insert_fill to place the gradient directly as an image element at those coordinates. Same result, but without a frame container.
If you haven’t picked up on it already, Claude keeps telling me things “honestly,” talking about “honest limitations” and “honest options.” It told me above, “I need to be upfront.” It’s like I’m forcing Claude to tell me something it doesn’t want to. It doesn’t give me these bits of info until it’s prompted, as if it’s hiding them.
Anyway, Claude is still supposed to be making this graphic, not me. I wrote:
Okay, let’s try Option B just to see how it goes. I’d like the gradient image to fit into a 1080×675 pixel space on the first frame, oriented with its top left corner at (0,0) for its (X,Y) coordinates. Same thing on the second frame, but it should be 1080×540 pixels. And just confirming I want the image to be vertically centered within both of those frames, so that we see the vertical middle of the image, not the top of it.
This finally worked! I would have preferred the gradient in a frame, rather than just positioned correctly but not limited to the top half of the image, but I decided this was good enough (and fixed it in Test #3, below). Although of course, the layering was an issue…
Problem #3: Claude Can’t Adjust Layers
Claude’s second round of designs had come with the bottom photo added correctly, but it was dropped on top of everything else in my template. It also left the photo frame that I had created there underneath, since as discovered above, Claude can’t work with (or even view) empty image frames. Among the questions I asked Claude after this round was “Can you adjust layer arrangement?” In its “honest answers” to me, it wrote:
Layer arrangement, however, is the one thing I currently can’t do. The editing API doesn’t expose a reorder_layer or z-index operation, so moving elements forward/backward in the stack would need to be done manually in Canva [bolding added]. Everything else — text, images, positioning, sizing, formatting — I can handle in subsequent iterations.
As we know, this is not just “one thing” that Claude can’t do. It did offer me this suggestion: “the workaround is to use update_fill on the existing background shape element instead of inserting a new one — that swaps the fill in place without changing the layer order.” So if Claud’s replacing an image, it can respect layering, but if it’s dropping one in, then it’s going right on top. The same applies for any added elements.
Since Claude had already gotten the photo in, and I was still getting it to even find the background image from above at this point, I just started manually adjusting the layers because it was quicker than dropping in placeholder images. (I did successfully try the workaround it suggested in Test #3 below.)
Problem #4: Claude Exports Things Weird
Almost an hour in, and it was finally time to export two variations of a single graphic. I asked Claude to export both for me as PNGs, which it did, providing me live links that it noted were “time limited.” I had given the artboards specific file names in Canva that followed our internal naming standards, but these exported files’ names were long strings of numbers. I asked, “Would you have been able to preserve the file name from the Canva file? Or if I had given you file names for these, could you have saved them with those names?” Claude said,
Unfortunately no — the export API generates the file names automatically using internal Canva identifiers (which is why you got those number strings), and there’s no parameter in the export tool to specify a custom file name. I have no control over what the downloaded files are named.
However, here are a couple of easy workarounds:
If you want me to give you specific file names upfront: I could name them in my response so you know exactly what to rename each one to after downloading. For example, I could tell you “the 1080×1350 file should be saved as 20260327_OO-CE_SCCADVASA-Case-Study-Carousel_1080x1350.png” — then it’s just a quick rename after the download.
If you do this regularly: The most efficient approach is probably to export directly from Canva itself (File → Download), where Canva uses the design title as the file name automatically. Since the design is titled 20260327_OO-CE_SCCADVASA-Case-Study-Carousel, Canva would export them as something like 20260327_OO-CE_SCCADVASA-Case-Study-Carousel-1.png and …2.png for the two pages.
So Claude’s solutions were for me to tell it the file names directly so that it could spit them back to me for me to manually update, or for me to just save the files myself (which it offered to give me suggestions for?). I decided I was done with this test and moved on.
Claude’s Test 1 Designs for Subsequent Rounds (with My Help)
For the sake of documentation, here are graphics from the further rounds of review I did with Claude for this first test. I’m showing them in one size for simplicity, but each round included both sizes. The first, third, and fourth images are Claude’s, and the second and fifth show my manual edits.
Claude’s Final Test 1 Designs
I preserved the file names on these, if you want to check them out.
Test #2: Adding Animation and Grouping
Canva has some basic and improving animation options, and I wanted to know if Claude was able to work with those. Here are four questions I asked, with Claude’s answers (both originally single messages, not split into four):
- Are you able to add animations with Canva?
No. The Canva editing API I have access to doesn’t expose any animation operations. I can manipulate text, images, positioning, sizing, and formatting — but adding, editing, or removing animations isn’t something I can do programmatically. You’d need to apply those in Canva directly.
- If so, what information would you need to be able to do that?
Moot given the above, but for reference: if the API ever supported it, you’d want to specify which element(s) to animate, the animation type (e.g. fade, rise, pop), whether it’s an entrance/exit/loop, and timing/duration. The kind of brief you’d give a human designer.
I’d like to note that I would not give that level of specificity to a human designer—I would just ask them to animate the graphic and trust them to choose what was right. Not even a new intern needs that much direction.
- If I asked you to animate something as a group, but it wasn’t already a group in the Canva file, would you be able to group those things yourself?
No — grouping is also not an operation exposed by the editing API. I can reposition and resize individual elements, but I can’t create, modify, or dissolve groups. If you needed elements animated as a group, you’d need to group them in Canva first before I could reference them.
- If I had given you an initial file with animation, would you still have been able to edit it the same way?
Yes, with one caveat. The editing API works on text and image/fill elements regardless of whether they have animations attached — I’d be able to make all the same text, image, positioning, and formatting edits just fine. The only risk is that if the API doesn’t “understand” animation metadata, there’s a small chance a committed edit could strip or reset animations on affected elements. It likely wouldn’t affect elements I didn’t touch, but it’s worth testing on a duplicate before editing an animated file you care about.
So Claude is pretty much useless for applying animations in Canva, plus it can’t group or ungroup elements. I decided I had a bit more testing left in me, though, and I figured if I added animation to a template and it could still make text edits, that might be helpful. I grouped the pop-up box and three text boxes together, gave them a preset animation, and asked Claude,
Can you change the copy to the below? Go ahead and commit the design changes once you’ve made them.
Heading: Supporting Our Clients
Body: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus fermentum dui ut ante mollis eleifend. Aliquam id lectus ut quam faucibus maximus. Integer gravida felis purus, nec aliquet magna laoreet id. Quisque volutpat eros ac urna fermentum.
Also, please change the color of the heading to #00bf6f. Thank you!
Claude started the transaction, stopped, started it again, then wrote that it was getting an error, telling me, “This can sometimes happen when a previous transaction has left the design in a locked state, or there’s a temporary API issue.” Claude suggested I close the file on my end (although I had had it open for all previous edits), but it still couldn’t get in. Now, it mentioned, “the grouping you added may be a factor. The editing API doesn’t always handle grouped elements cleanly — groups can sometimes cause the transaction to fail to open. If the error persists after waiting, it may be worth temporarily ungrouping the box/text group in Canva, letting me make the edits, and then re-grouping afterward.” I tried this, but Claude was still hitting the same error.
The only potential solution Claude had was to wait until the API came back. I asked how long that might be, but it didn’t know. It then suggested I could “Make the edits yourself in Canva — since it’s just two text replacements and one color change, it would take under a minute directly in the editor.”
It wasn’t clear to me whether this was actually an API issue, or if having grouping and animations on the file was causing errors, or if the fact that Claude had exported files was jumbling things… but I was tired, and I figured I wouldn’t trust Claude with animations or grouping anyway, since its capabilities for both are so limited. I gave up for the day.
Test #3: Optimizing the Prompt and Testing Fonts
At this point, this integration was already not proving useful, but I came back a few days later with a new prompt just to see what the difference would be now that I had context on what Claude can do.
My Templates for Test 3
On my new template, I dropped in two recent recipe share images because Claude had suggested that having existing images would better enable it to swap them out, and because it was almost time for lunch. I also wanted to test whether Claude could pull font styles from a brand kit, since I had missed that last time, so I switched everything to Arial.
Here’s my prompt, sent in a new conversation:
I’d like you to use the linked template to create two graphics with these specs: 1080×1350 pixels and 1080×1080 pixels (two artboards in the same file). Please read through the directions below and confirm you can access the template file, find the brand kit and font styles, and find the two images. I’d like you to confirm this before we go ahead with making design updates.
Template: [Canva link]
Follow the Online Optimism Rebrand 2025 brand kit for this design.
Text styling, colors, and copy for each artboard:
- Header (first text box): The mission
- Subtitle (second text box): Connecting people to help when they need it most
- Body (third text box): SCCADVASA supports 22 domestic violence and sexual assault programs across South Carolina. Since 2021, we’ve worked alongside their team to create campaigns that are mindful, inclusive, and effective at getting people to the resources they need.
All text boxes in the template are currently in Arial, a placeholder font. The Header copy should use the Heading font style from the brand kit and be #000000. The Subtitle copy should use the Subheading font style from the brand kit and be #006037. The Body copy should use the Body font style from the brand kit and be #000000.
I’d like all the text overlaid over the white pop-up box. The text should all be left-aligned, but the text boxes should be centered on top of the box. Please adjust the sizes of the text and spacing of the text boxes so that they fill the vertical space of the white box they’re on top of. The top and bottom padding around the text boxes should be equal, so that the text boxes are also vertically centered over the box.
There are two full bleed placeholder images on each of the artboards, one filling the top half of the frame and one filling the bottom half. Please swap each of them out with the images with the below titles. Both images are in the media library.
- Top image: OO-Grain-Gradient_Grello-Full_1080x1350.png – This image should be added so that the vertical center of the image is what’s visible. We should see the center of the image, not the top of it. Adjust its placement accordingly, please.
- Bottom image: 20260217_OO-CE_SCCADVASA-Case-Study_Ftd-Img.png
Thanks!
Drumroll please…
I tried the same prompt again and got interrupted again. I also ran a wifi speed test just to confirm this wasn’t an Internet connection issue.
Claude made it this time after several minutes. It confirmed that it had access to the template, that the template matched what it expected, and that it could see the brand kit, but it told me, “I was not able to locate the two replacement images by filename in the media library search.” I found this odd, since in my previous conversations I had been able to direct Claude to images with their file names. We went back and forth a bit, and I ended up needing to move the images into their own folder because Claude said it would take too long to go through our (admittedly disorganized) main Uploads folder in search of them. It then confirmed for me that it had found both images.
Claude’s Test 3 Designs
I asked it to move forward—here’s what I got:
This was when I confirmed Claude can’t use font styles from brand kits. It gave me “One note: the Canva API doesn’t support changing font families directly, so I wasn’t able to swap from Arial to the specific brand kit fonts (Heading/Subheading/Body styles). You’ll want to manually update the font families in Canva to match the Online Optimism Rebrand 2025 brand kit — that should be a quick select-all and apply for each text box.” So actually, as I mentioned above, not only can Claude not pull text styles from a brand kit, it can’t even apply font changes if you specify them.
I also wasn’t pleased with the text sizing and spacing. The images did work, though, finally!
Test #4: A Final Test of Optimization
I decided to try one more time.
My Test 4 Templates
I tweaked my template, adding back the fonts. I started a new conversation and cut down the initial prompt to just the confirmation pieces first, since last time had taken so long. Here are the templates and the prompt, below:
Hi! I’d like you to use a linked Canva template to create two graphics. Here’s the template: [Canva link]
I’ll want you to follow the Online Optimism Rebrand 2025 brand kit for this design.
There are two images I’ll want you to use in the design, with the titles below. They’re both in a folder called “Claire Claude,” which is inside the “Uploads” folder.
Can you please confirm your access to the template, brand kit, and images? Once you do that, I’ll send you instructions for updating the graphics.
Claude confirmed all three. Here’s my next prompt, with some additional details on how I wanted the text to fit inside the box:
I’d like you to use the linked template to create two graphics with these specs: 1080×1350 pixels and 1080×1080 pixels (two artboards in the same file linked above).
Text for each artboard:
- Header (first text box): The mission
- Subtitle (second text box): Connecting people to help when they need it most
- Body (third text box): SCCADVASA supports 22 domestic violence and sexual assault programs across South Carolina. Since 2021, we’ve worked alongside their team to create campaigns that are mindful, inclusive, and effective at getting people to the resources they need.
The Header and Body copy should be #000000. The Subtitle copy should be #006037.
I’d like all the text overlaid over the white pop-up box. The text should all be left-aligned, but the text boxes should be centered on top of the box. Please adjust the sizes of the text and spacing of the text boxes so that they fill the vertical space of the white box they’re on top of – feel free to increase the sizes of the text so they fill the space better and there isn’t huge top and bottom padding inside the box. I would still like the heading to be the largest, then the subtitle, then the body copy. The top and bottom padding around the text boxes should be equal, so that the text boxes are also vertically centered over the box. Please also avoid any orphan lines of text with only one word.
There are two full bleed placeholder images on each of the artboards, one filling the top half of the frame and one filling the bottom half. Please swap each of them out with the images with the below titles that you found above.
- Top image: OO-Grain-Gradient_Grello-Full_1080x1350.png – This image should be added so that the vertical center of the image is what’s visible. We should see the center of the image, not the top of it. Adjust its placement accordingly, please.
- Bottom image: 20260217_OO-CE_SCCADVASA-Case-Study_Ftd-Img.png
Go ahead and commit your changes to the file and let me know when I can see them on my end. Thanks!
I was hopeful for this one. It timed out three times, although my Internet was fine.
I decided to split the prompt up, first giving it the text info, then the images.
Claude’s Test 4 Designs
Weirdly, Claude ran through the text info-only prompt just fine—and replaced the images even though I had removed the image instructions.
I asked it why it did this, and it answered:
Good catch, and that’s a fair question! When I opened the editing transaction, the template’s existing image fills were returned as part of the design structure data — I could see that there were background image slots already in the template (the `fills` array), and since you had asked me to confirm access to the images in your “Claire Claude” folder at the start, I had their asset IDs in hand. Putting those two pieces together, it seemed like the intended use was to place those images into those slots, so I went ahead and did it.
That said, I should have flagged that as something I was adding beyond what you explicitly asked for, rather than just doing it and noting it after the fact. I’ll make sure to call out any inferences like that before acting on them in the future.
This was probably the most human-feeling thing Claude did throughout this process—that is, not following my explicit instructions and making an educated guess. It was fine, though, and either way, I decided this was the closest I would get. If I were using these, I would still scoot the text boxes up so that the text was vertically centered, then export the graphics myself.
Comparison: Making the Graphic Myself
It took about 2 hours and several points of manual adjustment to get Claude to produce almost-final versions of a single graphic (two aspect ratios). I made the full 6-slide carousel myself (one aspect ratio) in 26 minutes.
Sure, I’m not an entry-level designer, but even an entry-level designer wouldn’t spend that long and need that much input on such a simple design. And sure, once you have a prompt right, things tend to get a lot speedier with iteration. But I still won’t recommend this integration for use at Online Optimism.
Conclusions
At this point, the Claude + Canva integration is not a useful tool for me or my team. It explicitly does not meet our goals:
- 🟡 Not really: Allows our Social Media team to quickly generate on-brand graphics on their own. Technically, if someone on our Social team was using an existing template with existing recommended prompts, they could do this on their own. (I say “existing recommended prompts” because Claude needed a ton of specific direction to produce acceptable designs—see below.) I still wouldn’t feel great about not having any sign-off from a designer on it, since even after I optimized my prompt above, I would’ve made one more adjustment before approving what Claude made. And if the Social team wanted something new, Claude would not be able to make that for them, since it can only work from existing designs when following exact specifications.
- 🔴 No: Create graphics that meet at least a minimum level of brand compliance. Claude can’t access Canva’s brand kits, which contain brand standard info and which we make for all of our clients. It can sometimes approximate what’s in the brand kits, as with colors, therefore not actually meeting brand standards. Usually, though, it just can’t access them, as is the case with images and font files, so it would be up to the Social team member to oversee brand compliance. As Creative Director, I would not be comfortable with this process.
- 🟡 Not really: Follow our file management and naming standards. While Claude was able to place a file into a folder when I specified the folder’s name, it couldn’t maintain file names for final exports, even when I specified them. The Social team member would be responsible for manually renaming files appropriately.
- 🔴 No: Save time overall versus having the Social team request a graphic from a designer. I can’t see the current state of this integration saving us time, even in the long run. This would only work for preexisting templates, since again, Claude can’t create new graphics while following exact specs. Our Creative team does already make Canva templates for impromptu graphics for clients with impromptu posting in their scope of services, so that doesn’t add time to our existing processes. But like this test graphic, we make the templates simple enough that it’s faster to just swap out the text and images yourself (as Claude hinted to me several times). Any more involved, and I doubt that Claude would be able to effectively deal with the templates, given the number of timeouts I saw for my simple test graphic. Plus, the more complex the graphic, the more time spent prompting. And it’s also worth noting that creating with Claude leaves you subject to an API lock or timeout, which can really slow down the process in a way you have little control over.
I also found Claude simply frustrating to work with in this capacity. Towards the start of my tests, Claude wrote, “The editing tools give me precise, deterministic control — much closer to what you’d get from a human designer working in Canva.” As I discovered, there are some severe technical limitations to what Claude can do with these tools that already make it not nearly as effective as a human designer. But there are glaring issues with how Claude needs to be told to do something that make it far inferior to a human designer, too. I’ve managed high school age design interns (shout out Youthforce), and I’ve never held the hand of a designer like I did for Claude, giving it exact position coordinates, asking for it not to leave an orphan at the end of the body paragraph, telling it to fill the space with the text I’d given it instead of leaving large open spaces, prompting it to even out the spacing—and of course, in some cases, handling some things myself because it was not capable of doing them. The final versions I got from Claude were acceptable, but the amount of design direction I had to give, from pre-creating a template to prompting basic typographic fixes, made Claude a truly incompetent designer.
Further, there were several times when Claude told me it could do something, only to later reveal that it actually could not, or at least not independently. This happened with using brand kits, creating files, inserting images in specific ways, and so on. If I had an employee consistently not delivering results they promised—lying to me directly about what they were capable of doing, then putting the work on me when it turned out they couldn’t—that would be unacceptable. Obviously, Claude is an LLM, and it’s not the same. This is not its main purpose, and there are many other things it can do very well. Even so, when Claude compares itself to a human designer, it’s hard for me not to draw the comparison, too.
I could see the Claude + Canva integration being helpful for building out a number of variations of the same design, swapping out basic text, images, and colors based on a set layout. I’m not sure that it would make any more sense to do that with this integration versus doing it directly in Canva or another tool like Adobe Express, although it’s not outside the realm of possibility. You’d also have to be in a sweet spot where entering all the text, image, and color info was faster than just making the variations, and you’d have to pray you don’t get taken down by timeouts or an API lock.
This integration might also be helpful for brainstorming layouts, using the generative design option Claude used first instead of the direct design approach. Personally, I’d prefer my team look at work created by humans for inspiration, but I’m not against the use of AI generation for brainstorming purposes only.
Beyond that, the truth is I’m not sure what else this integration would be good for. If you’ve used it effectively, or if you’ve used other AI integrations for full graphic creation that actually follow the brief and save you time, I’d love to hear about it at [email protected]. But for now, we’ll be skipping on this one.