A Chrome extension that lets you download any link with a single click — no more opening files in the browser first.
Quick Download Link gives you two ways to download any link on a page:
- Click-to-Download mode — Toggle it on from the popup and every link you click will be downloaded instead of opened. A custom download cursor appears on all links so you always know the mode is active.
- Right-click context menu — Right-click any link and choose "Quick Download Link" to download it on the spot, without enabling the toggle.
The extension is smart about PDFs. When you trigger a download, it:
- Fetches the URL using your browser's cookies (so authenticated pages like Moodle work)
- If the server returns a PDF directly, downloads it
- If the server returns an HTML page, scans the page for embedded PDFs (iframes, embeds, Google Docs viewer links, Moodle
pluginfile.phpURLs) and downloads the real PDF instead - Falls back to downloading the raw URL if no PDF is found
Chrome lets you load extensions directly from a local folder without publishing to the Web Store.
-
Clone or download this repo
git clone https://github.com/Gderhy/quickDownloadLink.git
-
Open the Chrome Extensions page
Go to
chrome://extensionsin your address bar. -
Enable Developer Mode
Toggle the Developer mode switch in the top-right corner of the page.
-
Load the extension
Click Load unpacked, then select the
extension/folder inside this repo. -
Pin it (optional)
Click the puzzle-piece icon in the Chrome toolbar and pin Quick Download Link so it's always one click away.
That's it. The extension is now active.
| Action | How |
|---|---|
| Download a single link | Right-click the link → Quick Download Link |
| Download every link you click | Click the extension icon → toggle Click-to-Download on |
| Turn off click mode | Click the extension icon → toggle off |
When Click-to-Download is active, links show a blue download cursor so you know the mode is on. A brief toast notification appears when a PDF is extracted from an embedded viewer.
extension/
├── manifest.json # Extension metadata and permissions
├── background.js # Service worker — handles downloads and context menu
├── content.js # Injected into pages — intercepts clicks, shows toasts
├── popup.html # Extension popup UI
├── popup.js # Popup logic (toggle state)
├── icon.svg # Source icon
├── generate-icons.js # Script to generate PNG icons from SVG
├── make-icons.js # Alternative icon generation helper
└── icons/ # PNG icons (16×16, 48×48, 128×128)
| Permission | Why |
|---|---|
downloads |
Trigger file downloads |
contextMenus |
Add the right-click menu item |
activeTab |
Read the current tab to send notifications |
storage |
Persist the toggle state across sessions |
scripting |
Inject the content script |
<all_urls> (host permission) |
Fetch URLs with cookies for authenticated downloads |