Canvas is outdated, you deserve better.
Download all your courses in minutes|

The ultimate tool for university students. Batch-download courses and Canvas content. Sync & download the newest course files in one click.
100% free and AI-ready.

Canvas Downloader turning a Canvas course into an organised folder of files
Birk

Hi, I'm Birk.

I'm studying BSc in Business Administration and Information Systems at Copenhagen Business School.
I got tired of manually downloading my course files from Canvas and converting them to AI-ready formats, so i decided to make this app! It's 100% free and open-source - for all students to use! Happy downloading!

Support me & the project
The Problem

You're wasting hours managing files.

Canvas Downloader puts an end to that.

1. Download

Download years of courses in minutes.

Downloading files one-by-one is a thing of the past.
Select your courses, choose a download configuration, and let the app pull all your course files from Canvas, into course folders organized exactly like your Canvas courses.

But that's not all: The app also downloads Canvas Content - all your assignments, announcements, quizzes, etc. and any file attachments, so your PC has a 1:1 copy of each course.

Configure exactly what to download and how to organise it on disk - choose between all files or study files only, and mirror Canvas's module structure or keep everything flat. Download Canvas Content and file attachments (e.g. assignment pdf's). See the Custom Download guide for a full walkthrough.

Core Files & Structure
What to download
All Files
All Files
PDFs, slides, videos, ZIP, code - everything uploaded
Study Files
Study Files
Slides and PDFs only - skips all other files
Folder structure
With Subfolders
With Subfolders
Mirrors Canvas module structure
All in One Folder
All in One Folder
Flat - all files in one place
Canvas Content

Select exactly which Canvas pages, announcements, assignments, and discussions you want exported as readable files.

Assignments
Assignments
Syllabus
Syllabus
Announcements
Announcements
Discussions
Discussions
Quizzes
Quizzes
Submissions
Submissions
2. Quick Sync

Get new files from Canvas with one click

Imagine this - It’s Monday morning. Instead of digging through Canvas to find the files for your first class, just open Canvas Downloader, and hit Quick Sync. The app instantly finds and downloads only the newest files your professors added to Canvas.

Pro-tip: Save your courses as a group, and add them to the Sync List. Then one press of Quick Sync All fetches everything new, straight to your PC. Want it fully automatic? That's the next section.

Quick Sync is 100% non-destructive - it only pulls down new and clean-updated files. Your own files, your edited files, your deleted files, and any file the teacher removed from Canvas are all left exactly as they are. Read more in the How it works guide.

Downloads automatically
  • New files uploaded to Canvas since your last sync
  • Clean updates (files your teacher updated, that you haven't touched)
Will NOT overwrite or delete
  • Files you have annotated or edited
  • Files you have deleted from your computer (they stay deleted)
  • Files the teacher deleted from Canvas (they are kept locally)
3. Daily Auto-Sync

Your courses sync themselves - every morning.

Meet the Today page - your daily home in the app. Pick your courses once and switch on daily sync. From then on, the first time you open the app each day, it quietly fetches every new file from Canvas all by itself.

Below the toggle, Today's files shows exactly what arrived today, grouped per course - open any file or its folder with one click. No digging through Canvas, no guessing what's new.

The Today page: a daily auto-sync toggle above a list of courses and the new files that arrived today

The Today page reuses the exact same Quick Sync engine - so the same safety rules apply: it never overwrites files you've edited and never re-downloads files you've deleted. Read more in the Today guide.

1. Pick your courses
Import the course/folder pairs you care about from your saved groups & pairs - once. Your selection is remembered and can be edited any time.
2. Toggle daily sync on
That's the whole setup. The sync runs automatically on your first app launch each day (a "day" rolls over at 4 AM, so late-night sessions don't count as tomorrow).
3. Glance at Today's files
Every file that arrived today is listed per course - including Panopto lecture recordings. Prefer manual? Hit Quick Sync now on the same page instead.
4. AI Optimization

Supercharge your exam prep

Canvas Downloader is built for the modern studying workflow, where AI-assisted learning is at the core.

When enabled, the app automatically converts all your course materials to AI-Ready file formats, whenever you Sync or Download. No more timely manual conversions on sketchy websites.

Purpose-built for NotebookLM (100% compatibility): Enable AI Optimizations → Download → Drag & Drop into NotebookLM and start studying.

Toggle these on and the engine automatically converts complex files into AI-readable formats on every download or sync. Office conversions require Microsoft Office installed. When fully enabled, your entire course is 100% ready for tools like NotebookLM. See the AI Optimization guide for details.

Unpack Archives
Unpack Archives
PowerPoint to PDF
PowerPoint to PDF
Word to PDF
Legacy Word to PDF
Excel
Excel to PDF & AI Data
HTML to Markdown
Pages to Plain Text
Code to txt
Code to .txt
Gather Links
Gather Web Links
Video to Audio
Video to Audio
5. Sync Review

Full control over your files.

Get the full status overview of your local course folders. Sync Review mode compares your local files directly against your Canvas courses and runs advanced algorithms to show you exactly what's different.

The app categorizes the results so you can select and download exactly what you need: New files, deleted files, updates or changes, giving you full control and confidence that your materials are always 100% up-to-date.

Every file in a sync Review is sorted into a category - the 5 that need decisions are shown below (two more, Ignored and Up to Date, are handled automatically). Each category has its own action and default state. You can check or uncheck individual files to download, or use the built-in tools to bulk-select. See the Sync Review guide for the full breakdown.

New Files
Files added by your teacher, not in your folder yet.
→ Downloaded fresh into the correct subfolder.
✓ Checked by default
Updates (Clean)
Canvas has a newer version, your local copy is untouched.
→ Replaced in place - same name, same location.
✓ Checked by default
Edited Locally
Canvas is newer, but you've modified your local copy.
→ New version saved as _NewVersion. Your edits are never touched.
☐ Unchecked by default
Deleted Locally
You deleted it, Canvas still has it.
→ Your deletion is respected. Won't redownload unless you check the box.
☐ Unchecked by default
Deleted on Canvas
Teacher removed it from Canvas, it's still in your folder.
→ Your local copy stays exactly where it is. The app never deletes files.
Info only - no action
6. Lecture Recordings

Your lecture recordings, downloaded and transcribed.

Some courses post their lectures as Panopto recordings - slow to rewatch, and impossible to hand to an AI. Canvas Downloader saves them straight to your course folder as video or audio to watch anytime, and turns them into transcripts and subtitles that are instantly AI-ready.

Video and audio need zero setup. Transcripts run 100% on your own computer - private, offline, and free.

Video
MP4
Audio
MP3
Transcript
.txt
Subtitles
.srt

Choose any combination for each lecture. Video and audio download with no setup. Transcripts and subtitles are optional - they're generated locally with on-device speech recognition (faster-whisper), so nothing is uploaded, and just need a one-time transcription model. The transcription setup guide walks you through it step by step.

Video MP4
Video (MP4)
Audio MP3
Audio (MP3)
Transcript
Transcript (.txt)
Subtitles
Subtitles (.srt)
Before your first lecture download, the app asks you to read a short notice. Panopto's player has a download button your institution can switch on or off - and Canvas Downloader doesn't read that setting. It saves the same stream the player already sends to your browser. That's worth knowing, which is why the app asks first: accept and recordings download, or continue without recordings and everything else in the run goes ahead exactly as normal. You can also switch lecture recordings off for good in Settings. Whatever you save is for your own study - never re-share a recording. The full story is on the Disclaimer & Acceptable Use page.

Ready to take control of your courses?

Join the students saving hours of busywork every semester.

Authentication

How to log in

Canvas Downloader talks directly to your university's own Canvas server - there is no account to create and nothing to sign up for. It needs two things from Canvas, and the app helps you get both: your school's address, and an access token you generate yourself. About two minutes, once.

1 Your Canvas URL

Most people never have to look this up. The app opens on a searchable list of 4,757 verified schools - start typing your university and pick it, and the address fills itself in.

Find your school by name It opens on the institutions in your own country, and accents are optional - typing kobenhavn finds Københavns Universitet. Your school not listed? It still works: paste the address below instead.

If your school isn't in the list, you need its direct Canvas URL.

https://schoolname.instructure.com/courses/1234
How to find it
  1. Log in to Canvas in your browser.
  2. Examine the address bar after logging in (most schools use one of two formats):
    • Format 1: canvas.[university].edu (e.g., canvas.schoolname.edu)
    • Format 2: [university].instructure.com (e.g., schoolname.instructure.com)
Important

While your university's URL (like canvas.schoolname.edu) might be accepted, pasting the real base Canvas URL (ending in .instructure.com) is always the best and most reliable option to prevent login issues.

2 Your Canvas Access Token

A key you generate yourself in Canvas, which lets the app read your courses. It takes about a minute, and only once - the app remembers it afterwards in your operating system's password vault.

In the app
Your Canvas Access Token
Get a token
  1. 1
    Click Get a token next to the token field. It opens your own Canvas token page in your browser.
    Nothing happens? Open Canvas yourself and go to Account → Settings - that is the same page.
  2. 2
    Scroll down to Approved Integrations and click + New Access Token.
  3. 3
    Give it any purpose - Canvas Downloader does fine - and leave Expires blank, so you are not asked to do this again. Then click Generate Token.
  4. 4
    Copy the token straight away, paste it into the app and press Log In.
Canvas shows the token once. Leave that page without copying it and the token is gone for good - generate a new one, no harm done.
Prefer to watch? The clip walks through it end to end. The app's login screen has been redesigned since it was recorded - the Canvas side is identical.
Your token is safe. It's stored securely in your operating system and used exclusively to call your university's Canvas API. The app has no backend, no analytics, no telemetry, it runs 100% locally on your computer.
The application:
Downloads your enrolled course files and content
Locates your assignments, syllabus, and grades
Organizes everything into neat, offline folders
The application doesn't:
Submit, upload, or modify anything
Access other students' data or submissions
Access instructor or admin features

Already installed the app?

Make sure Canvas Downloader has the right permissions to save files, especially on macOS. Check out our step-by-step setup guide for detailed instructions.

Read the Setup Guide

macOS

On a Mac? Read this first

Canvas Downloader works on macOS, but there are a few things worth knowing before you dive in - especially if you're on a university-managed Mac.

Setup macOS blocks the app on first launch

Because Canvas Downloader is a free solo project, it isn't signed with Apple's paid certificate. macOS will block it with an "unidentified developer" or "damaged" message the first time you open it. This is normal for free apps.

The install guide walks you through it in under a minute: approve it in System Settings → Privacy & Security → Open Anyway, or run one Terminal command if it says "damaged". After that, it opens normally forever.

Managed Macs University-managed Macs may block installation

Some universities lock down their Macs so that students cannot install apps, unlock Privacy & Security, or run Terminal commands without admin rights. If your Mac is managed by IT and the install guide doesn't work, you have two options:

• Install Canvas Downloader on your personal Mac instead.
• Contact your IT helpdesk and ask them to allow the app, or to temporarily grant admin rights for the installation step.

Updates You may need to re-enter your Canvas Access Token after an update

macOS stores your Canvas Access Token in your Keychain. Because the app isn't signed with a paid Developer ID certificate, macOS may treat a new version as a different app and ask for your Keychain password again - or prompt you to re-enter your token.

This is a one-time step per update, not per launch. Your token hasn't changed - you can copy it from your Canvas account settings and paste it in again.

Conversions Office → PDF needs the Microsoft desktop app

The PowerPoint → PDF, Word → PDF, and Excel → PDF conversions use AppleScript to drive the Microsoft Office desktop app. If you use Office via the web browser or don't have it installed, those conversions are silently skipped and your original files are kept unchanged.

Everything else - downloading, syncing, video-to-audio, archive unpacking, Canvas pages to text, code files, and web links - works without any extra software.

Hardware Apple Silicon only (M1, M2, M3, M4, M5)

The macOS build is compiled for Apple Silicon only. It will not run on older Intel Macs (2020 and earlier).

Not sure which chip you have? Click the Apple menu → About This Mac. If it says "Apple M…" next to Chip, you're good. If it says "Intel Core", the Mac version won't work - use a Mac with Apple Silicon or a Windows PC instead.

macOS version Needs macOS 14 Sonoma or newer

The Mac build is compiled against libraries that require macOS 14. On macOS 13 Ventura or older it will not launch, so please don't download it there.

Check with the Apple menu → About This Mac. Sonoma (14), Sequoia (15) and Tahoe (26) are supported.


Security

Fair questions, straight answers.

Downloading an "unsigned" app can feel sketchy, and it's a completely reasonable thing to be cautious about. Here is the transparent truth:

Why is Windows / Mac warning me?

Code-signing certificates - the thing that makes these warnings go away - cost $99 to $300 a year, paid to Apple or Microsoft. Since this is a free project built by a student, for students, and makes absolutely no money, paying for these certificates is unfortunately out of the question right now. To keep the app completely free, it remains unsigned. I hope to sign it in the future, but for now, the warning simply means the app is from an independent developer, not that it's dangerous. I've done the absolute best job I can to build it securely and transparently.

The certificate program isn't a safety check - it's a publisher registry. Any developer, including a malicious one, can buy one and appear clean to your OS. Skipping it doesn't say anything about the code.

If the warning bothers you and you'd like it gone for everyone, chipping in towards the certificates is the thing that would actually do it.

What does it actually connect to?

Your courses and files come from your university's Canvas server - the same URL you log into in your browser. There's no backend, no analytics server, no developer receiving anything from your machine. Your Canvas Access Token is stored in your OS's password vault (Windows Credential Manager or macOS Keychain), never in a plain-text file, and is only ever sent to your university's Canvas.

Three other connections exist, and none of them carry your data: your university's Panopto server, only if you download lecture recordings; Hugging Face and PyPI, only if you set up on-device transcription or GPU acceleration - a one-time file download; and a version check against GitHub when the app starts, so it can tell you an update is out. That last one sends nothing but the request itself: no token, no course data, no identifier. The full list is in the privacy policy.

The app's local interface runs on 127.0.0.1 - your own computer only. It cannot be reached from the internet or your local network. None of this requires trusting our word: the source code is publicly readable on GitHub.

What about the Instructure / Canvas breach?

This app has no connection to Instructure beyond using their public student API - the same one used by the Canvas mobile apps and other third-party integrations. It's not built by them, not affiliated with them, and the breach happened on their servers, not on your computer. Using this app doesn't change your exposure to that incident in either direction.

The practical step is the same regardless of this app: update your Canvas password, and in Canvas → Account → Settings → Approved Integrations, remove any Canvas Access Tokens you don't recognize.

You don't have to take our word for it

The full source code is public on GitHub and has been since the beginning. If you're unsure, read it before downloading - that's exactly the right approach. The things worth checking are in three files: start.py (server binds to 127.0.0.1), canvas_logic.py (all requests go to your Canvas URL), and ui/auth.py (token saved to your OS keyring, never written to a plain-text file).

If you're not a developer, the fact that the source is fully public and has been since day one is itself the most meaningful signal.

Read the source on GitHub

Enjoying Canvas Downloader?

It's built by one student, between lectures, and will always be 100% free. If it saves you hours every semester, you can buy me a coffee - it keeps the project alive and gets us closer to the paid app certificates that would remove the install warnings for everyone.

Support me & the project

Not in a position to donate? Starring the project on GitHub helps too.


FAQ

Is this allowed by my university?

Canvas Downloader signs in as you, with a token you create, and only reaches files your account can already open. It uses the official Canvas API - the same one the Canvas mobile apps use - and breaks no copy protection of any kind.

What it can't do is know your institution's rules, so that part is on you: keep downloads for your own study and never redistribute course material. Lecture recordings need more care than files - see the disclaimer, which sets out exactly what the app does and where the limits are.

Is it really free? What's the catch?

Free with no catch. No subscription, no premium tier, no ads. It's an open-source project. Read every line of code on GitHub.

Will it work with my university's Canvas?

Yes. Canvas Downloader uses the standard Canvas REST API, which every Canvas institution runs - if you can log into Canvas at your university, it works.

To save you finding your Canvas address, the app ships a searchable list of 4,757 verified institutions across every country that uses Canvas, so most people just type their school's name and pick it. Not in the list? Paste your Canvas address instead - nothing about the app depends on being listed.

Do I need Python or anything else installed?

No. Python is bundled inside the executable. The only optional extra is the Microsoft Office desktop app (PowerPoint / Word / Excel), needed solely for the Office→PDF conversions. Everything else - downloading, syncing, video-to-audio, archives, Canvas pages, code and link files - works with no extra software.

What happens when my professor updates a file?

In Sync Mode, the app detects the update. If you haven't edited the file, it replaces it. If you've annotated it, the new version is saved as filename_NewVersion next to yours - your work is never lost.

Can it fetch new files automatically every day?

Yes. On the Today page, pick the courses you care about and switch on daily sync. The first time you open the app each day it quietly syncs those courses by itself and shows you the files that arrived today, grouped per course. You can also hit Quick Sync now on the same page whenever you want. See the Today guide.

Can it download lecture recordings (Panopto)?

Yes. Canvas Downloader automatically finds Panopto lecture recordings linked in your courses and saves them in the course folder as video (MP4), audio (MP3), a written transcript (.txt), subtitles (.srt), or just a shortcut back to the lecture. Transcription runs entirely on your own computer - nothing is uploaded - and works in both download and Sync modes. See the Panopto guide to set it up.

Please read the disclaimer before you turn this on. Recordings belong to your lecturer and your institution, Panopto's download button is a setting the app does not read, and saving one may be against your institution's rules even though you're allowed to watch it. Keep them for your own study and never share or re-upload them.

The security warning scared me - is it safe?

Yes. The warning appears because code-signing certificates cost $99-300/year and this is a solo project. The full source code is public on GitHub. Thousands of legitimate open-source apps show the same warning.

Can it see other students' data?

No. Your Canvas Access Token only grants access to your own student account - courses you're enrolled in, files available to you, your grades. There is no way to access other students' data through the student API.

Bug or feature request?

Open an issue on GitHub Issues. Pull requests welcome.