Canvas Course Downloader

Chrome extension to bulk-download all files, assignments, and resources from Canvas LMS courses. Published on the Chrome Web Store.

Chrome extension (Manifest V3) that bulk-downloads everything from your Canvas LMS courses — no API tokens needed, uses session cookies. Works on any Canvas instance including self-hosted. Published on the Chrome Web Store and compatible with Chrome, Edge, Brave, and Firefox.

Key features:

  • Downloads 9 content types: files, pages, assignments, discussions, announcements, modules, syllabus, grades (CSV export), and linked/embedded files
  • Hidden file extraction — parses HTML from pages and assignments to find files not listed in the Canvas file browser
  • Multi-course batch download with course selector grouped by term
  • ZIP bundling (DEFLATE compression), incremental mode tracking previously downloaded files
  • 4 built-in presets: Full Archive, Files Only, Text Content Only, Linked Files Only
  • Configurable throttling (50–5000ms), conflict handling (uniquify/overwrite/skip), and folder prefixes
  • Export manifest with metadata (date, file counts, source URL, version)
  • Keyboard shortcut (Ctrl+Shift+D / Cmd+Shift+D)

Architecture: Pure vanilla JavaScript with no dependencies beyond JSZip. Content scripts handle Canvas page detection (Instructure domains + DOM fingerprinting), REST API communication with retry/exponential backoff and pagination, and UI injection into Canvas breadcrumbs. Background service worker manages a sequential download queue.

Tech stack: JavaScript, Chrome Extensions API (Manifest V3), JSZip, Canvas REST API