Repository navigation
Releases: jasp-nerd/canvas-course-downloader
Release list
v2.11.0: Download videos embedded through the Canvas media player
Videos embedded through the Canvas media player are now downloaded
Videos and audio that instructors upload or record through the Canvas editor (the built-in media player) were never downloaded, because Canvas stores them as media objects rather than course files. This release fixes that:
- Every embed form Canvas has used is recognised: modern
media_attachments_iframeplayers, oldermedia_objects_iframeplayers, legacy inline media comments, andentryIdvideo tags - The highest-quality flavor is saved to
Media/, with captions as.srtfiles next to it - Exported pages play the local copy offline with a real video/audio player; Markdown export links to it
- Media-recording submissions and audio/video feedback comments are saved into the submission folder
- Media that Canvas is still processing, or that could not be fetched, is listed in
_inaccessible_links.csvinstead of being skipped silently
Videos hosted in external tools (Canvas Studio, Panopto, Kaltura, YuJa, Echo360, Vimeo, Zoom, Microsoft Stream) live behind those tools' own logins and download permissions and are still out of scope.
Fixes
- Incremental mode no longer marks files as downloaded when their fetch failed during ZIP bundling, so they are retried on the next run
- Locked files in the Files tab are reported as inaccessible instead of being saved as a copy of the current Canvas page under the file's name
- If ZIP bundling fails (for example on a course with very large recordings), the download falls back to individual files automatically
- Markdown export keeps a link for embedded iframes, video and audio instead of dropping them
v2.10.4
v2.10.3 — Hidden-answer quizzes no longer mark your choice as wrong
Fixed
- Quiz exports no longer mark your selected answer as incorrect when the quiz hides correct answers. For concluded courses the extension scrapes the Canvas quiz review page, and it assumed any selected answer not flagged as correct must be wrong — painting it red even when the instructor had hidden correctness entirely. The export now only uses red/green correct-incorrect styling when the review page actually reveals which answers are correct; otherwise your selection is shown in a neutral bold style. Fixes #16, reported by @Jxck-S.
v2.10.2 — Linked files from other courses now download
Fixed
- Linked files that live in another course now download. Instructors often carry a syllabus or page over from last year's course, and the file links in it still point at the old course. Canvas lets you open those files through the page that links them (the
location=part of the URL), but the extension asked the API for the bare file id, was refused, and silently skipped them — so an export could come out with a syllabus full of lecture slides and none of the PDFs. The linked-file scanner now forwards the link'slocation/verifieraccess params, so anything you can open in the browser is fetched too. Cross-course links in the exported HTML are rewritten to the local copy as well. - Nothing is dropped silently anymore. Linked files that still can't be fetched (no access, deleted, locked) are listed in
_inaccessible_links.csvin the export root with the source document, link text, URL and status; counted asinaccessibleLinkedFilesinmanifest.json; and summarised in the progress log — including a heads-up when they point at another course, since that is something the instructor can fix by relinking. - Files that are locked for you (Canvas returns them without a download URL) are reported instead of being queued — previously the download fetched the current Canvas page and stored it under the file's name.
v2.10.1 — Incremental mode actually works now
Fixed
- Incremental mode now works as advertised. Previously the extension only remembered which files it had downloaded when incremental mode was already enabled during that download. The natural flow — download a course, enable incremental mode, download again — re-downloaded everything and only started skipping from the third run. The per-course inventory is now recorded after every download, so enabling incremental mode picks up right where your last download left off. (Thanks to the Chrome Web Store reviewer who reported this!)
- Files modified on Canvas are re-downloaded. Incremental mode now tracks each file's Canvas modification date and size, so an updated file is fetched again instead of being skipped forever. Unchanged files are still skipped.
- Files excluded by the video/size filters are no longer marked as downloaded, so they are picked up correctly if you later relax those filters.
Notes
- Generated documents (pages, assignments, discussions, grade CSVs, manifest) are always re-exported so they stay current — incremental skipping applies to real course files.
- Existing incremental records from older versions keep working; change detection kicks in from the first download on v2.10.1.
Other changes since v2.10.0
- The inline download button now stays on the breadcrumb row (#12)
v2.10.0 — Student discussion replies & friction-free submission-file fix
What's new
Fixes for missing submission content (#11)
- Student-submitted files now download. Canvas serves submission attachments from its
canvas-user-content.comCDN, which the extension couldn't access (#10, thanks @NathanPervin). The permission is optional: Chrome asks once on your first download and existing users are never deactivated by this update. You can also grant it under Settings → Downloads → Submitted files. - Discussion replies for students. Full discussion threads (including your own posts) are now archived for student accounts, not just teachers/TAs.
- Quiz results on concluded courses. When Canvas returns 403 on old courses, quiz answers are recovered from the review page (#9, thanks @NathanPervin).
Install
Available on the Chrome Web Store once review completes. To use it now: download the zip below, unzip, and load it via chrome://extensions → Developer mode → Load unpacked.
v2.9.2 — Redesigned settings & file filters
What's new
- File filters — a new Filters tab lets you exclude video files (
.mp4,.mov,.mkv, …) and cap the maximum file size (MB), so you can keep archives lean. - Redesigned settings page — sidebar navigation with Content / Downloads / Format / Filters tabs, and content types now grouped into Course content and Student data & grades so role-dependent exports are clearly separated.
- Popup polish — settings moved to an icon button in the header; course-selector footer now shows the version with Star / Report-a-bug links.
Docs
- README fully refreshed to cover teacher exports (submissions, gradebook, roster, quizzes, rubrics, full discussions), automatic role detection, and the new filters; new banner, store assets, workflow GIF, and updated screenshots.
No changes to required permissions.
v2.9.1 — Skip student submissions on big courses
New: a dedicated 'Student submissions' toggle
Some instructors want a full course backup without downloading every student's submissions — on a 500-student course that's gigabytes you may not need.
- Student submissions is now its own content type, split out from Assignments. Untick it to archive everything else (assignment instructions, gradebook, discussions, files, pages, quizzes) while skipping the submission files.
- The options page now groups content into Course content and Student data & grades, so the role-dependent, privacy-sensitive exports are clearly set apart.
- Existing settings are respected: anyone who had Assignments on keeps getting submissions, no silent change.
Applies to both roles — as a student the toggle controls your own submissions.
v2.9.0 — Full submission history & student self-export
Submissions overhaul (thanks to feedback on r/canvas)
- Every attempt is kept. Submissions now archive the full
submission_history, not just the most recent attempt. Files from earlier attempts are prefixedAttempt N -. - A folder per student. Submissions are organized as
Submissions/<Assignment>/<Student>/instead of flat files name-prefixed inside the assignment folder — much cleaner once multiple attempts are involved. - Students get their own submissions. Running as a student now downloads your own submitted files (every attempt) and a per-assignment page with grade, text, and the instructor comment thread, into a
Submissions/folder. Previously students only gotGrades.csv.
Teacher and student paths now share one rendering helper, so both produce the same structure.
v2.8.0 — Teacher-side archive
Teacher-side archive + robustness fixes
When you're a Teacher/TA in a course (auto-detected), the export now captures the full picture. Students still get only their own view, so nothing changes for them.
New — teacher-side data
- Quizzes: question bank with answer key, per-student scores, and a
_grades.csv - All student submissions: files, typed text, grades, instructor comments, and rubric scores
- Full class
Gradebook.csv+Students.csvwith section columns - Discussions: complete threaded student replies; graded discussions get a
_grades.csv - Assignment rubrics, including point ranges
Better for everyone
- ZIP bundling is now ON by default — your browser prompts once instead of once per file (large courses over ~1.5 GB still fall back to individual files)
- Embedded images in pages/assignments are now downloaded and viewable offline (previously broken)
- YouTube embeds become clickable thumbnails; dead Canvas import placeholders (
$CANVAS_OBJECT_REFERENCE$) are neutralized - Same-named items (e.g. several "Unnamed quiz") no longer overwrite each other in the ZIP
- Quiz and module links now resolve to local copies
Thanks to @dlxmax and the canvas-teacher-export project for the inspiration and detailed feedback.