Loading...
Loading...
Canva-approved bulk export tool. Connect your Canva account via OAuth, select hundreds of designs at once, choose from 6 formats, and get a ZIP delivered to your inbox. Smart filename generation via OCR for personalized designs. Official Canva Connect API partner.

DesignExporter is a Canva-approved bulk export tool I built to solve a problem Canva's native UI ignores: you can only export one design at a time. Power users like agencies managing client brands, schools generating thousands of personalized certificates, and marketing teams running quarterly campaigns end up clicking through hundreds of designs one by one. DesignExporter fixes that. Users connect their Canva account via OAuth, browse their folders, select hundreds of designs at once, pick a format from PNG, JPG, PDF, PPTX, GIF, or MP4, set custom filename patterns, and get a ZIP delivered to their inbox. Pro users can auto-sync designs to Dropbox daily.
The differentiator isn't the bulk export by itself. Most "bulk Canva export" tools on the market are unofficial browser scrapers that break every time Canva ships a UI change. DesignExporter is an official Canva Connect API integration. I submitted to Canva's partner review process on February 17, 2026, and worked through their full questionnaire, security review, scope justification, and a functional review with Red Domingo on the Canva integrations team. There was real back and forth. They pushed back on my original design that used Canva OAuth as the primary login mechanism, since the Connect API is built for connecting accounts to apps, not authenticating users into them. I rebuilt the auth flow with a separate email/password and Google login system, with Canva connection layered on top. Approval came through on March 6, 2026 (ticket APPS-37723, integration ID OC-AZxsryuAcm4e).
The most interesting technical piece is the smart filename generation. For multi-page personalized designs like certificates, name badges, or invoices, the system runs every page thumbnail through AWS Textract, extracts unique text from each page, and uses that text as the filename. So a teacher exporting 30 certificates gets "Sarah_Johnson.png", "Mike_Chen.png", and "Jordan_Davis.png" instead of "page1.png, page2.png, page3.png". Zero manual renaming. The export pipeline runs in two phases. A Next.js app on Vercel handles the marketing site, OAuth flow, design browser, and the review screen where users can preview and edit generated filenames before final packaging. A separate AWS Fargate worker polls Supabase every 10 seconds for queued jobs, downloads files from Canva's API at a safe 18 requests per minute (under their 20-per-minute ceiling), runs OCR via Textract, streams the files into a ZIP using archiver, uploads to S3 with a pre-signed URL, and emails the user via SES. The worker auto-scales 1 to 10 Fargate tasks based on CPU load, so bulk operations of 1,000+ designs don't queue up behind smaller jobs.
On the business side, the most recent decision was rolling out 4-tier purchasing-power-parity geographic pricing. The same 7-Day Pass shows as $9 in the United States and $3 in India, with the user's tier locked at signup based on Vercel's edge geolocation header to prevent VPN abuse. It's live and processing real exports for paying customers. One agency customer, an Australian education group, syncs 50+ Canva accounts across multiple Dropbox folders daily, with over 1,900 designs backed up automatically per cycle. The Canva approval clears a path most competing tools can never get to, since they rely on scraping that Canva's own terms of service prohibit.
Canva's native UI only lets you export one design at a time. Power users like agencies managing client brands, schools generating thousands of personalized certificates, and marketing teams running quarterly campaigns end up clicking through hundreds of designs one by one. There was no API-level workaround because Canva's public Connect API requires partner approval, and most "bulk Canva export" tools on the market are unofficial browser scrapers that break every time Canva ships a UI change.
Built a Canva Connect API integration from scratch and went through Canva's full partner approval process to use it legitimately. Two-phase export pipeline: a Next.js app on Vercel handles auth, design browsing, and the review UI. A separate AWS Fargate worker polls Supabase for export jobs and runs them in the background. The worker downloads files from Canva's API at 18 requests per minute (under their 20 per minute ceiling), runs Textract OCR on multi-page designs to generate smart filenames, streams the files into a ZIP via archiver, uploads to S3 with a pre-signed URL, and emails the user via SES.
Live and processing real exports for paying customers. One agency customer, an Australian education group, syncs 50+ Canva accounts to multiple Dropbox folders daily, with over 1,900 designs backed up automatically per cycle. Canva approval clears a path that most competing tools can never get to, and the architecture handles bulk operations of 1,000+ designs per export without queuing delays thanks to the auto-scaling worker.
Two separate deployable services. The Next.js app on Vercel handles marketing pages, auth, the design browser, and the export review UI. The AWS Fargate worker polls Supabase every 10 seconds for queued export jobs, calls Canva APIs, runs OCR via Textract, packages ZIPs with archiver, uploads to S3, and sends emails via SES. Both services share a Supabase Postgres database and the same AWS credentials. Stripe handles payments with a custom 4-tier PPP pricing model keyed on Vercel's edge geolocation header. The same 7-Day Pass shows as $9 in the US and $3 in India, with the user's tier locked at signup to prevent VPN abuse. Authentication uses Canva OAuth with PKCE, separate from the app's own email/password and Google login.

Check out some of my other work