File Download Manager is a super-lightweight and innovative open-source desktop software, tailored specifically for capturing and downloading massive files in parallel, directly to your PC.
Built with Neutralino.js for a tiny desktop interface footprint, and powered by a purely native NodeJS Multi-Thread Engine, this application can completely saturate your WiFi/Fiber bandwidth limit while maintaining a highly responsive UI.
File Download Manager operates as a three-tier system:
- Desktop UI (Neutralino.js) - Lightweight native window running your frontend
- Node.js Backend Server (Listener Extension) - HTTP API server (
http://127.0.0.1:5050) managing downloads and multi-threading - Chrome Extension - Intercepts Chrome downloads, extracts cookies/headers, and forwards them to the backend
When you start the app, it automatically launches the Node.js server in the background. The Chrome extension communicates with this server on port 5050, allowing seamless download interception.
-
Chrome/Firefox Download Interception: Automatically catches downloads directly from Google Chrome and Mozilla Firefox. The extension extracts exact cookies, HTTP headers (
Referer,User-Agent, etc.) to bypass Anti-Scraping and Cloudflare protections. -
HLS Downloader (.m3u8 Support): Detects and downloads complete HTTP Live Streaming (HLS)
.m3u8video streams. The downloader automatically parses the manifest, fetches all.tssegments in parallel, and merges them sequentially. -
Auto MP4 Output: Seamlessly saves stitched HLS video streams directly into a
.mp4container, allowing immediate playback on standard media players without any extra transcoding. -
Tab Title-based Renaming: Automatically detects and replaces generic media filenames (like
playlist.m3u8orvideoplayback.mp4) with the sanitized title of the active browser tab. -
16-Thread Parallel Download Engine: Splits a single download into 16 simultaneous TCP chunks, saturating your maximum available bandwidth for large files (100 GB+). Falls back gracefully to single-thread mode for servers that don't support chunking.
-
HTTP Range Resume: Interrupted downloads can be recovered without restarting from zero. Supports proper HTTP Range request handling for resuming failed chunks.
-
Instant Sparse File Pre-Allocation: On Windows NTFS, allocates massive disk space (100 GB) in milliseconds without blocking the system. Prevents HDD slowdown when starting large downloads.
-
S3 Auto-Bypass Expiration Detection: Automatically detects Amazon S3 links with short-lived expiration tokens (e.g.,
X-Amz-Expires=10) and force-starts them instantly, bypassing UI confirmation to avoid timeout. -
Unified Download Table Interface: Single view combining active and historical downloads. Dynamic drag-to-resize columns that remember your exact width preferences between sessions.
-
Smart Pagination: Effortlessly handles thousands of download histories by showing 25 items per page. Prevents UI lag and excessive memory usage.
-
Persistent Window State: Remembers your exact window position, size, and maximized state. Window state is restored when you restart the app.
-
Windows System Tray Integration: App stays ready in the system tray even when the main window is closed. Minimize to tray without closing the backend service.
-
Quick Download Actions: Native action buttons to Open File, Open Folder, or permanently delete download history entries without navigating Windows Explorer.
- Operating System: Windows 10+ (currently designed for Windows; Linux/Mac support possible via Neutralino)
- Node.js: 14.0.0 or higher
- Browser: Google Chrome 90+ (for the extension)
- RAM: Minimum 256 MB
- Disk Space: 100 MB for app + space for downloaded files
- Internet: Required for downloading files
For development, also ensure:
- Neutralino CLI: Latest version (install globally via npm)
- npm or yarn: For managing Node.js dependencies
-
Install Node.js & npm from https://nodejs.org/ (choose LTS version)
-
Install Neutralino CLI globally:
npm install -g @neutralinojs/neu
-
Clone and enter the project directory:
git clone <repository-url> cd file-download-manager
-
Install Node.js dependencies for the backend listener:
cd extensions/listener npm install cd ../../
-
Build and package the Browser Extensions (WXT + Vue 3):
- WXT compiles Chrome and Firefox extensions, generating ready-to-load directories and zip packages automatically:
cd wxt bun install bun run build bun run build:firefox bun run zip bun run zip:firefox cd ..
- Google Chrome:
- Open Chrome and navigate to
chrome://extensions/ - Enable Developer mode (top-right toggle)
- Click Load unpacked and select the
wxt/.output/chrome-mv3/folder (or drag and drop the.zipfile fromwxt/.output/if using a packed version)
- Open Chrome and navigate to
- Mozilla Firefox:
- Open Firefox and navigate to
about:debugging - Click This Firefox -> Load Temporary Add-on...
- Select the
.zipfile fromwxt/.output/file-download-manager-extension-<version>-firefox.zip
- Open Firefox and navigate to
For development with hot reload, run
bun run devinsidewxt/β WXT will auto-open Chrome with the extension loaded.
-
Start the desktop app (opens Neutralino window + Node.js backend):
neu run
This automatically:
- Launches the Neutralino desktop UI
- Starts the Node.js server on
http://127.0.0.1:5050 - Connects to the Chrome extension
-
Enable the Chrome extension (if not already enabled)
-
Test it: Try downloading a file from Chrome. It should be intercepted and handled by the File Download Manager instead of Chrome's default downloader
Note: The Node.js backend server must be running for the Chrome extension to work. The server exits when you close the Neutralino window or quit the app.
Once customized and perfected, compile the standalone Desktop Executable (.exe) and package it into a Windows Setup installer:
npm run buildThis build script automatically:
- Disables the developer console/inspector.
- Builds and zips the browser extensions for both Chrome and Firefox into
wxt/.output/. - Runs
neu buildto compile the Neutralino application binaries. - Generates a Windows Setup installer (
.exe) using Inno Setup (ISCC). - Copies all browser extension
.ziparchives into a dedicatedbrowser-extensionsdirectory inside the application installation folder.
Note: Users can easily find and load the extension .zip files by navigating to Settings -> HTTP tab inside the installed application and clicking Install / Setup Chrome Extension, which opens the browser-extensions/ folder directly.
- Verify the desktop app is running (check system tray or taskbar for Neutralino window)
- Confirm Node.js server is running on port 5050 (check terminal output for "Server running on port 5050")
- Ensure the Chrome extension is enabled in
chrome://extensions/ - Check if a firewall or antivirus is blocking localhost:5050
- Check that the backend
extensions/listenernpm dependencies are installed correctly - Verify the Chrome extension has permission to access the download URL's domain
- Check browser console (DevTools) for any error messages
- Try restarting both the Chrome extension and desktop app
- Some servers don't support HTTP Range requests. The engine automatically falls back to single-thread mode.
- If a server is blocking range requests, consider using a download manager that supports proxies or VPNs
- Ensure no other bandwidth-intensive applications are running
- Check if your ISP throttles parallel connections (some networks limit per-connection speed)
- Monitor CPU usage - 16 threads should use ~2-4 CPU cores depending on disk speed
- Chrome Extension listens for
chrome.downloads.onCreatedevents - Immediately cancels the Chrome download (before it saves)
- Extracts cookies, User-Agent, Referer, and other headers
- Sends HTTP POST to
http://127.0.0.1:5050/api/downloadwith all metadata - Backend Server receives request and delegates to
MultiThreadEngine - MultiThreadEngine splits the file into 16 chunks and downloads in parallel
- Desktop UI updates progress in real-time
- Download history is saved to persistent storage
Edit extensions/listener/MultiThreadEngine.js to:
- Change chunk count (currently 16)
- Add custom retry logic for failed chunks
- Implement custom headers or proxy support
Edit resources/js/main.js to add:
- Custom download directory selection
- Speed limiters
- Scheduling for future downloads
- Download categories or tagging
All UI state is automatically persisted to Neutralino storage.
To update the app version across all files at once, run:
node versioning.js 26.6.8This will automatically update the version in:
package.jsonpackage-lock.jsonneutralino.config.jsonsetup.isswxt/package.json(WXT generates the extension manifest version from here)
Contributions are welcome! Feel free to:
- Report bugs via GitHub issues
- Suggest new features or improvements
- Submit pull requests with enhancements
- Improve documentation or translations
Licensed under the ISC License β Free to use, distribute, rebuild, remix, and modify for any purpose. See the LICENSE file for full terms.
Third-party credits:
- Neutralino.js - Lightweight desktop app framework
- Express.js - Node.js HTTP server
- node-downloader-helper - Download utilities
File Download Manager Β© 2024. Designed for maximum download speeds with minimum system overhead.