Blaze through Coursera courses at warp speed.
Auto-completes lectures, skips non-video items, and marks your progress — all hands-free.
⚡ Install · 🏃 Features · 🗺️ Roadmap · 🙋 Support · ☕ Donate
Coursera Marathon is a Chrome extension that automates your way through any Coursera course. It plays only video lectures (seeking to the last third so they complete fast), skips all non-video items like quizzes, readings, and assignments, and marks everything as complete via Coursera's own API — so your progress is real and saved.
Start the marathon, close the laptop lid, come back to a completed course.
No Chrome Web Store needed. Load it directly in 4 steps.
Option A — Clone with Git
git clone https://github.com/Rahul-2314/coursera-marathon-extension.gitOption B — Download ZIP
- Click the green
<> Codebutton on this page - Select Download ZIP
- Extract the folder anywhere on your computer
Open a new tab and go to:
chrome://extensions
Or navigate via Menu → More Tools → Extensions
- Toggle Developer mode ON (top-right corner)
- Click Load unpacked
- Select the
coursera-marathonfolder you downloaded/cloned - The extension will appear in your list ✅
- Click the puzzle piece 🧩 icon in Chrome's toolbar
- Find Coursera Quick Nav
- Click the pin 📌 icon next to it
The ⚡ icon will now always be visible in your toolbar.
- Go to any Coursera course → open a lecture
- Click the ⚡ icon in your toolbar
- Hit ▶ Start Video Marathon
- Sit back — the extension handles everything
The popup shows live progress: videos played, items skipped, and API hits captured. When the last item is done, a 🎓 Course Complete! banner appears on screen.
| Feature | Detail |
|---|---|
| Lecture-only playback | Plays only /lecture/ pages — skips everything else |
| Auto seek to last third | Jumps to 66% of video duration on load so it ends in seconds |
| Speed enforcement | Locks playback at your chosen speed (0.5× – 4×) — Coursera can't override it |
| Auto-play | Resumes automatically if Coursera pauses the video |
| Smart course completion | Detects end of course via URL tracking — stops cleanly with a banner |
| Feature | Detail |
|---|---|
| Skips all non-lectures | Supplements, quizzes, exams, peer reviews, labs, discussions, assignments |
| API completion marking | Calls Coursera's own APIs to mark skipped items as complete |
| No looping | End-of-course watchdog (_eocTimer) detects when navigation stops — finishes gracefully |
| Button | Action |
|---|---|
| ▶ Next Lesson | Jump to the next item immediately |
| ⏩ +30s Skip | Skip forward 30 seconds in the current video |
| Toggle | What it does |
|---|---|
| Auto-advance | Automatically goes to next lesson when video ends |
| Unlock seeking | Lets you scrub freely in any video (bypasses Coursera's seek lock) |
| Auto-play | Resumes playback if Coursera pauses it |
| Skip countdowns | Auto-dismisses "Next in 5s…" overlay popups |
| Playback speed | Slider from 0.5× to 4× — enforced as a floor, Coursera can't go lower |
The extension intercepts Coursera's own network calls and replays them with 100% completion values — the same data Coursera itself sends. Your progress shows up correctly in the dashboard.
Features planned for upcoming versions
- Module-level control — skip or play specific modules/weeks only
- Resume from last position — pick up exactly where marathon stopped
- Course list view — queue multiple courses and run them back to back
- Estimated time remaining — shows how long until course finishes
- Graded quiz auto-submit — auto-attempt and submit graded quizzes
- Progress dashboard — per-course stats saved across sessions
- Firefox support — Manifest V3 port for Firefox
- Keyboard shortcuts — start/stop marathon without opening popup
- Notification on completion — desktop notification when course finishes
- Dark/light popup theme toggle
┌─────────────────────────────────────────────────────┐
│ Marathon Loop │
│ │
│ ┌──────────┐ is /lecture/? ┌────────────────┐ │
│ │ _tick() │ ─── YES ────────► │ _handleVideo │ │
│ └──────────┘ │ seek to 2/3 │ │
│ │ │ wait for ended│ │
│ │ is skippable? └───────┬────────┘ │
│ ├─── YES ──► _skipItem() │ │
│ │ markComplete │ │
│ │ │ │
│ └─── else ──► goNext() │ │
│ ▼ │
│ goNext() ◄─────────────────┘ │
│ │ │
│ ▼ │
│ _watchForEnd() ←── 9s watchdog │
│ MutationObserver cancels it on nav │
│ URL unchanged after 9s → _finishCourse() │
└─────────────────────────────────────────────────────┘
The extension runs entirely in the page's MAIN world — no background service workers needed for core functionality. A lightweight injector.js in the ISOLATED world bridges Chrome storage settings and popup messages into the page.
Something not working?
- Make sure you're on
coursera.org— the extension only activates there - Try refreshing the page and reopening the popup
- If marathon starts from the beginning mid-course, stop and restart it from the current lecture
Common issues:
| Issue | Fix |
|---|---|
| "Play a video to capture API calls" always shows | Play any lecture manually first to let the extension capture network calls |
| Marathon stops early | Course may be genuinely complete — check the 🎓 banner |
| Speed not changing | Some Coursera players resist overrides — try toggling Auto-play off and on |
| Extension not visible | Make sure it's pinned (puzzle icon → pin it) |
Still stuck? Open an issue →
Pull requests are welcome! If you have a feature idea or found a bug:
- Fork the repo
- Create a branch:
git checkout -b feat/your-feature - Make your changes
- Open a PR — describe what you changed and why
For big changes, open an issue first to discuss.
If this extension saved you hours of watching videos, a star goes a long way:
Building and maintaining this takes time. If you'd like to support continued development:
MIT © Rahul Chowdhury
Made with ☕ and zero patience for slow video players