How to Import a Canvas Course from a ZIP File?
If you have ever tried moving a course from one Canvas instance to another—or imported content exported from Moodle, Blackboard, or Brightspace you’ve likely received an archive ending in .zip or .imscc.
At first glance, a ZIP file seems simple enough. But when you try opening or importing it inside Canvas LMS, things can quickly get confusing. Canvas handles standard ZIP files very differently from IMSCC course packages, and picking the wrong import type usually results in broken links, unorganized files, or a blank course page.
In this guide, we will walk through the exact steps to import a course from a ZIP file into Canvas, explain the critical difference between package types, troubleshoot common upload errors, and show you how to automate this process if you're dealing with multiple courses at once.
First: What Kind of ZIP File Do You Have?
Before heading into your Canvas admin dashboard, open your downloads folder and take a close look at the file. Canvas treats .zip files in two completely different ways depending on what is inside them:
1. IMSCC Package (.imscc or .zip)
An IMSCC (Common Cartridge) package contains structured course data—quizzes, module paths, assignments, pages, and embedded media. Even if the file extension ends in .zip, if it was exported from an LMS as a course backup, it contains XML manifests designed to build a complete course structure.
2. Standard Content Archive (.zip)
If you compressed a folder of PDFs, slide decks, MP4 videos, or lecture notes on your desktop into a .zip file, Canvas will treat this as raw content. Importing this will merely place the files inside the course Files directory; it will not build modules, pages, or quizzes for you.
Knowing which one you have determines how you perform the import below.
Step-by-Step: How to Import the File into Canvas
Follow these steps to get your course content loaded cleanly into Canvas.
Step 1: Navigate to Course Settings
-
Log in to your Canvas instance and select the target course from your Dashboard.
-
In the left-hand course navigation menu, scroll down and click Settings.
-
On the right-hand sidebar menu (or bottom menu on smaller screens), click Import Course Content.
Step 2: Choose the Correct Content Type
Click the dropdown menu next to Content Type. This is where most people make mistakes.
-
If your ZIP is an LMS Course Export (
.imscc/.zipexport):Select Canvas Course Export Package (or Common Cartridge 1.x Package if exported from Moodle or Blackboard).
-
If your ZIP is just a folder of raw documents and slides:
Select Unzip Files Into Folder.
Step 3: Select Your Source File
-
Click Choose File (or Browse) and locate your
.zipor.imsccpackage on your computer. -
If importing raw files, select the destination folder within your course (usually the default "course files" folder).
-
If importing a full course package, you will see options for Default Question Bank and Content:
-
All content: Imports everything inside the package (recommended for fresh course shells).
-
Select specific content: Allows you to pick and choose individual modules, quizzes, or assignments on the next screen.
-
Step 4: Run the Migration
Click the blue Import button.
Canvas will show a status bar under Current Jobs.
-
Queued: Canvas is waiting for background server workers to pick up your file.
-
Running: The system is extracting the archive and mapping data into your database.
-
Completed: The import finished successfully.
Once marked Completed, click on Modules or Files in your left navigation bar to verify your content loaded properly.
Common Problems & Upload Errors (And How to Fix Them)
Even when following the steps above, course package imports can throw frustrating errors. Here are the most frequent issues developers and admins encounter:
1. "File Exceeds Maximum Limit" or Server Timeouts
Large course packages containing heavy SCORM packages or high-resolution video lectures often fail to upload through the standard browser UI. If the file is above 500MB, the web server request may time out before the archive finishes uploading.
-
Fix: You need to adjust your Canvas environment's upload threshold, optimize asset sizes before packaging, or process the upload asynchronously via API. If you are running an on-premise installation and continuously hit execution timeouts during uploads, our team provides an end-to-end Canvas LMS Installation Service configured specifically to handle high-volume queue workers and large file limits without server crashes.
2. Broken Links and Missing Media Assets
After importing, you might find that images display as broken links or pages point to non-existent internal URLs. This happens when relative paths in the original XML manifest don't map cleanly to the new course sub-account structure.
-
Fix: When exporting from the source LMS, ensure option "Include media assets in export" is checked. Inside Canvas, you can re-run the Link Validator (Course Settings > Validate Links in Content) to pinpoint broken assets.
3. Orphaned Quizzes and Unlinked Modules
Sometimes the package imports, but all assignments end up under an "Imported Items" group instead of your structured weekly modules.
-
Fix: This occurs when importing
.imsccfiles created in older Common Cartridge versions. You can manually drag items into modules, or use automated migration scripts to parse and restructure the course manifest.
What If You Have 50 or 100 ZIP Files to Import?
The built-in Canvas import tool works fine when you are migrating a single course. But what happens if you are onboarding an entire department, setting up a new term, or migrating an entire university catalog?
Clicking through Settings > Import Course Content > Choose File > Import 50 times in a row takes hours, creates massive room for human error, and completely freezes your browser when a background job gets stuck.
Solving Scale with the Canvas Bulk Importer Engine
To solve this exact headache for LMS admins, we developed the Canvas Bulk Importer extension engine. Instead of forcing you to manually upload files one by one, this engine handles batch processing right inside Canvas through a clean background worker architecture:
-
Batch Package Processing: You can upload a folder containing dozens of
.imsccor.csvcourse files at once. -
Automatic Course Shell Provisioning: If a course code doesn't exist yet, the engine automatically creates the course shell before attaching the content package.
-
Async Queue Workers: The plugin uses isolated background processing (Sidekiq/Redis queue integration) so your web browser never hangs or times out while processing heavy ZIP files.
-
Automated Link & Module Fixer: During package extraction, the importer sweeps through content manifests, fixing broken asset URLs and re-linking orphaned quiz items automatically.
-
Real-Time Health Monitoring: Get a clean admin dashboard showing active import progress, successful course creation, and instant error reporting for corrupted files.
If you want to see how the Canvas Bulk Importer operates in a real, live environment, you can test the entire bulk import pipeline on our live sandbox at canvas.elearningevolve.com.
Whether you need this custom bulk plugin installed, specialized LTI tool integrations, or custom Canvas feature development, check out our full range of enterprise LMS solutions on our Canvas LMS Development Services page.
Quick Summary Checklist
When importing a Canvas course from a ZIP file, keep this quick checklist in mind:
-
[ ] Verify File Type: Make sure you know if it's an
.imscccourse package or a folder of raw files. -
[ ] Pick Right Menu Option: Use Canvas Course Export Package for course backups, Unzip Files Into Folder for raw documents.
-
[ ] Check File Size: Ensure large video packages don't hit web server upload timeouts.
-
[ ] Validate Links: Run Canvas's link validator after import to clean up broken references.
-
[ ] Automate for Scale: Leverage tools like our Canvas Bulk Importer if managing batch course migrations.



