DownloadGithubDir is a fast, client-side tool that lets users download a specific folder from any GitHub repository as a ZIP file. It runs entirely in the browser (no backend), so it is safe to host on GitHub Pages and simple to operate.
- Highlights
- How it works
- Quick start
- Usage
- Deploy to GitHub Pages
- Configuration
- Security & privacy
- Limits
- Tech stack
- Release
- Contributing
- License
- Download any GitHub folder by URL or by
owner/repo/path. - Optional branch/tag and GitHub token support (rate limits + private repos).
- Parallel file fetch, JSZip packaging, live progress, cancel support.
- Responsive UI, sample shortcuts, zero data sent to a backend.
- GitHub Pages workflow included for one-click hosting.
- The browser calls the GitHub REST API to list files in the selected folder.
- Each file is fetched in parallel and assembled in memory.
- JSZip packages everything into a ZIP and triggers a download.
python -m http.server 8000
# open http://localhost:8000- Paste a GitHub folder URL or
owner/repo/path(e.g.octocat/Hello-World/docs). - Optional: add a branch or tag.
- Optional: add a GitHub token for higher rate limits or private repos.
- Click Download ZIP and monitor progress.
- Push this repo to GitHub on the
mainbranch. - In GitHub → Settings → Pages, set Source to GitHub Actions.
- The workflow in
.github/workflows/pages.ymldeploys automatically on each push.
- Branch/Tag: Override the default branch to download a specific release or tag.
- Token: Provide a fine-scoped Personal Access Token if you see
403or need private access.
- Tokens are used only in browser requests and never stored or transmitted elsewhere.
- The app is static and runs entirely on the client.
- Soft cap of 4000 files to prevent excessive memory usage.
- If you hit
403or API limits, add a token or narrow the folder.
- Vanilla JS + Fetch API
- JSZip + FileSaver
- Static HTML/CSS with no build step
- Current release: v1.0.0 (see CHANGELOG.md).
- Versioning follows SemVer.
- Fork the repo and create a feature branch.
- Keep changes small and focused.
- Open a pull request with a clear description.
MIT