Open Directory Downloader
Desktop GUI for browsing and downloading from open directory listings (Apache/Nginx autoindex). It works out of the box with built-in HTTP/HTTPS and can optionally use wget for faster folder pulls when available.
Features
- Remote directory browser with tree view and list view
- Local folder browser with drag-and-drop targets
- Download single files or entire folders
- Optional
wgetmode for recursive folder downloads - Progress display for individual files and aggregate folder downloads
- Light/dark themes with persistence
Requirements
- Node.js (LTS recommended)
- npm (bundled with Node.js)
- Optional:
wgeton your PATH to enable recursive folder downloads viawget
Install
npm install
Run
npm start
Usage
- Enter a remote URL that points to an autoindex listing (for example an "Index of" page).
- Choose a local destination folder (prompted on first launch or via the Browse button).
- Select a file or folder from the remote list:
- Double-click a folder to enter it.
- Drag a remote item onto a local folder to download there.
- Or select an item and use "Download Selected".
- Watch progress in the toolbar and logs in the Session Log panel.
Screenshot
Add a screenshot to show the UI. Suggested filename: docs/screenshot.png.
docs/screenshot.png
If you want to embed it:

How it works
Open Directory Downloader is an Electron app with three layers:
- Main process (
src/main.js) handles HTTP/HTTPS, parsing directory listings, and performing downloads. - Preload (
src/preload.js) exposes safe IPC APIs to the renderer. - Renderer (
src/renderer.js) drives the UI, local/remote navigation, and progress display.
Remote parsing supports common Apache autoindex layouts (table and <pre> formats). Folder downloads are performed by recursively crawling the listing and downloading files, unless wget mode is enabled.
Development
- Main process:
src/main.js - Renderer:
src/renderer.js - Preload:
src/preload.js - UI markup:
src/index.html - Styling:
src/styles.css
Recommended workflow:
- Run
npm startto launch the Electron app. - Make changes to renderer assets (
src/index.html,src/renderer.js,src/styles.css). - Restart the app to pick up main/preload changes; renderer changes may require a manual refresh or restart depending on Electron caching.
Optional wget mode
If wget is detected on the system, the "Use wget if available" toggle is enabled.
- Folder downloads will use
wget -r -np -nH -P <destDir> <url> - File downloads still use the built-in HTTP/HTTPS client
Project scripts
npm start # Launch the Electron app
npm run pack
npm run dist
Packaging
This project uses electron-builder for packaging.
npm run packbuilds unpacked artifactsnpm run distbuilds platform installers
See package.json for configuration defaults. You may need to add an electron-builder config if you want icons, signing, or platform-specific settings.
Limitations and notes
- The remote listing parser expects a standard autoindex HTML page.
- If a server customizes its directory listing heavily, parsing may fail.
- Aggregate progress for folder downloads requires size metadata from the listing; otherwise progress is indeterminate.
- Some servers may block recursive downloading or throttle requests.
Troubleshooting
- "HTTP 403/404": The server may block listing or direct file access.
- Empty list: Verify the URL ends with a trailing
/and is an autoindex page. wgettoggle disabled: Installwgetand ensure it is on your PATH, then restart the app.
License
MIT