How can I download only a specific folder or directory from a remote Git repository hosted on GitHub?
Say the example GitHub repository lives here:
[email protected]:foobar/Test.git
Its directory structure:
Test/
├── foo/
│ ├── a.py
│ └── b.py
└── bar/
├── c.py
└── d.py
I want to download only the foo folder and not clone the whole Test project.
-
14I wrote a shell script for this using svn checkout - github.com/Decad/github-downloaderDeclan Cook– Declan Cook2013年11月05日 11:01:39 +00:00Commented Nov 5, 2013 at 11:01
-
915Can somebody explain to me why there isn't an "official" web-interface solution to this? It seems like a trivial feature to implement, yet super useful.Alexander– Alexander2014年07月14日 05:02:38 +00:00Commented Jul 14, 2014 at 5:02
-
7I've created an open source project, called GitHubFolderDownloader. It lets you to download a single folder of a repository without cloning or downloading the whole repository.VahidN– VahidN2015年06月17日 10:16:16 +00:00Commented Jun 17, 2015 at 10:16
-
5see @janos answer svn alternative is the best, no auth, no registration, no limit, no pluginsstackdave– stackdave2017年10月11日 10:30:32 +00:00Commented Oct 11, 2017 at 10:30
-
11@Alexander There is an official way. Check my answer stackoverflow.com/a/70729494/11218031Avinash Thakur– Avinash Thakur2022年01月22日 06:25:43 +00:00Commented Jan 22, 2022 at 6:25
49 Answers 49
Update April 2021: there are a few tools created by the community that can do this for you:
- Download Directory (Credits to fregante)
- It has also been integrated into the excellent Refined GitHub Chrome extension as a button in the GitHub web user interface.
- GitZip (Credits to Kino—see his answer here)
- DownGit (Credits to Minhas Kamal—see his answer here)
Note: if you're trying to download a large number of files, you may need to provide a token to these tools to avoid rate limiting.
Original (manual) approach: Checking out an individual directory is not supported by Git natively, but GitHub can do this via Subversion (SVN). If you checkout your code with Subversion, GitHub will essentially convert the repository from Git to Subversion on the backend, and then serve up the requested directory.
Update November 2024: The Subversion support has been removed after January 8, 2024: https://github.blog/news-insights/product-news/sunsetting-subversion-support/. The rest of this answer is outdated and describes the functionality in the past.
Here's how you can use this feature to download a specific folder. I'll use the popular JavaScript library Lodash as an example.
Navigate to the folder you want to download. Let's download
/testfrommasterbranch.Modify the URL for subversion. Replace
tree/masterwithtrunk.https://github.com/lodash/lodash/tree/master/test➜https://github.com/lodash/lodash/trunk/testDownload the folder. Go to the command line and grab the folder with SVN.
svn checkout https://github.com/lodash/lodash/trunk/test
You might not see any activity immediately because GitHub takes up to 30 seconds to convert larger repositories, so be patient.
Full URL format explanation:
- If you're interested in
masterbranch, usetrunkinstead. So the full path istrunk/foldername- If you're interested in
foobranch, usebranches/fooinstead. The full path looks likebranches/foo/foldername- Pro tip: You can use
svn lsto see available tags and branches before downloading if you wish
That's all! GitHub supports more Subversion features as well, including support for committing and pushing changes.
33 Comments
svn export, as I didn't want a Subversion working copy. Then I added the resulting folder in Git. (I somehow lost a large piece of my directory tree, so I exported from the repo I forked.)https://github.com/$organization/$repo/branches/$branch/$directoryrepo/branches/foo_branch/bar_folder you will receive a status 410, feature gone.Go to DownGit → Enter Your URL → Download!
You can directly download or create download link for any GitHub public directory or file from DownGit:
You may also configure properties of the downloaded file—detailed usage.
Disclaimer: I fell into the same problem as the question-asker and could not find any simple solution. So, I developed this tool for my own use first, and then opened it for everyone :)
21 Comments
Two options for this feature:
Option 1: GitZip Browser Extension
Usage:
- Browse any GitHub repository page.
- Two ways to download:
- Choose the items:
- In default, you can double click on items or check the checkbox on the front of items.
- Click the download button at the bottom-right of the page.
- In the context menu:
- Click "GitZip Download" → "Whole Repository" or "Current Folder".
- Move the mouse cursor on the item and click "GitZip Download" → "Selected Folder/File".
- Click "GitZip Download" → "Checked Items" after doing 2-1-1.
- Choose the items:
- See the progress dashboard and wait for the browser trigger download.
- Get the ZIP file.
Get a token:
- Click the GitZip Extension icon on your browser.
- Click the "Normal" or "Private" link besides "Get Token".
- Authorize GitZip permissions on the GitHub authentication page.
- Back to the repository page of the beginning.
- Continue to use.
Option 2: GitHub / GitHub Pages
http://kinolien.github.io/gitzip by using the GitHub API, and JSZip, FileSaver.js libraries.
Step 1: Input the GitHub URL in the field at the top-right.
Step 2: Press Enter or click Download for downloading the ZIP file directly or click search for viewing the list of subfolders and files.
Step 3: Click the "Download Zip File" or "Get File" button to get the files.
In most cases, it works fine, except that the folder contains more than 1,000 files, because of the GitHub Trees API limitation (refers to GitHub API#Contents).
And it also can support private/public repositories and upgrade the rate limit, if you have a GitHub account and use the "get token" link on this site.
22 Comments
If you have Subversion (SVN), you can use svn export to do this:
svn export https://github.com/foobar/Test.git/trunk/foo
Notice the URL format:
- The base URL is
https://github.com/ /trunkappended at the end
Before you run svn export, it's good to first verify the content of the directory with:
svn ls https://github.com/foobar/Test.git/trunk/foo
8 Comments
.git extension. You can use the full project link, and start by using svn ls followed by the project full path. Example: svn ls https://github.com/RobTillaart/Arduino.git. To export just one folder, you just add the /trunk followed by the desired path, like svn export https://github.com/RobTillaart/Arduino.git/trunk/libraries/DHTlib. It is easier to keep the project path intact.https://github.com/miguelgrinberg/python-socketio/tree/master/examples/wsgi, run svn export https://github.com/miguelgrinberg/python-socketio.git/trunk/examples/wsgi. A directory called wsgi will be created under the current working directory. Only source files, nothing else. No .git, no subversion related files.After trying all the answers, the best solution for me was:
GitHub's Visual Studio Code-based editor.
Pros:
- doesn't require any extra tool like SVN or API tokens.
- No limit on size of content
- Saves as a directory or file, and not archive.
Instructions
Go to any repository. (example: https://github.com/RespiraWorks/Ventilator/tree/master/software)
Press . or replace
.comwith.devin the URL to open the repository in GitHub's internal editorIn the Explorer pane (left side or press Ctrl+Shift+E), right-click on the required file/folder and select Download.
In the Select Folder dialog box, choose the directory on your disk under which you want the selected file/folder to exist.
Note
I tried other solutions like in accepted answer but,
I don't want to install and learn SVN only for this.
Other tools like Download Directory, Refined GitHub, GitZip, DownGit either require API tokens or cannot download large directories.
Other options
- Visual Studio Code with Remote Repositories extension to open the repository and download the file/folder.
17 Comments
For a generic Git repository:
If you want to download files, not clone the repository with history, you can do this with git-archive.
git-archive makes a compressed ZIP or tar archive of a Git repository. Some things that make it special:
- You can choose which files or directories in the Git repository to archive.
- It doesn't archive the
.git/folder, or any untracked files in the repository it's run on. - You can archive a specific branch, tag, or commit. Projects managed with Git often use this to generate archives of versions of the project (beta, release, 2.0, etc.) for users to download.
An example of creating an archive of the docs/usage directory from a remote repository you're connected to with ssh:
# In a terminal
git archive --format tar --remote ssh://server.org/path/to/Git HEAD docs/usage > /tmp/usage_docs.tar
More information in this blog post and the Git documentation.
Note on GitHub repositories:
5 Comments
git archive --format tar format is not tar.gz, but tar.| tar -x to skip the creation of a tar file.git clone --filter downloads only the required folders
E.g., to clone only objects required for subdirectory small/ of this repository: https://github.com/cirosantilli/test-git-partial-clone-big-small-no-bigtree notably ignoring subdirectory big/ which contains large files, I can do:
git clone -n --depth=1 --filter=tree:0 \
https://github.com/cirosantilli/test-git-partial-clone-big-small-no-bigtree
cd test-git-partial-clone-big-small-no-bigtree
git sparse-checkout set --no-cone /small
git checkout
The --filter option was added together with an update to the remote protocol, and it truly prevents objects from being downloaded from the server.
I have covered this in more detail at: How do I clone a subdirectory only of a Git repository?
Tested on git 2.30.0 on January 2021.
7 Comments
git checkout, my main answer at: stackoverflow.com/questions/600079/… had the correct one git sparse-checkout set. With that it's instantaneous. Updated.Just add ss to the start of the GitHub URL: (github.com -> ssgithub.com )
I built this simple webpage that does this for you, so just:
- Navigate to the directory/file you want to download on GitHub
- Add
ssto the start of the URL in the address bar
Clicking on Download should zip just the contents of that directory and download them to your device.
4 Comments
curl).There is nothing wrong with other answers, but I just thought I'd share step-by-step instructions for those wandering through this process for the first time.
How to download a single folder from a GitHub repository (Mac OS X):
~ To open Terminal just click spotlight and type terminal then hit Enter
- On a Mac, you likely already have SVN (to test just open terminal and type "svn" or "which svn" ~ without the quote marks)
- On GitHub: Locate the GitHub path to your Git folder (not the repository) by clicking the specific folder name within a repository
- Copy the path from the address bar of the browser
- Open Terminal and type: svn export
- Next paste in the address (e.g.): https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI
- Replace the words: tree/master
- with the word: trunk
- Type in the destination folder for the files (in this example, I store the target folder inside of the Downloads folder for the current user)
- Here space is just the spacebar, not the word (space) ~/Downloads/HeadsUpUI
- The final terminal command shows the full command to download the folder (compare the address to step 5) svn export https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI ~/Downloads/HeadsUpUI
BTW - If you are on Windows or some other platform, you can find a binary download of Subversion (SVN) at http://subversion.apache.org
~ If you want to checkout the folder rather than simply download it try using the SVN help (tldr: replace export with checkout)
Regarding the comment on resuming an interrupted download/checkout. I would try running svn cleanup followed by svn update. Please search Stack Overflow for additional options.
3 Comments
Whoever is working on a specific folder, he/she needs to clone that particular folder itself. To do so, please follow the below steps by using a sparse checkout.
Create a directory.
Initialize a Git repository (
git init)Enable sparse checkouts. (
git config core.sparsecheckout true)Tell Git which directories you want (echo 2015/brand/May(refer to folder you want to work on) >>
.git/info/sparse-checkout)Add the remote (
git remote add -f origin https://jafartke.com/mkt-imdev/DVM.git)Fetch the files (
git pull origin master)
5 Comments
You cannot; unlike Subversion (SVN), where each subdirectory can be checked out individually, Git operates on a whole-repository basis.
For projects where finer-grained access is necessary, you can use submodules—each submodule is a separate Git project, and thus can be cloned individually.
It is conceivable that a Git front-end (e.g., GitHub's web interface, or GitWeb) could choose to provide an interface for you to extract a given folder, but to my knowledge none of them do that (though they do let you download individual files, so if the folder does not contain too many files, that is an option)
GitHub actually offers access via SVN, which would allow you to do just this (as per comment). See Improved SVN is here to stay, and old SVN is going away for latest instructions on how to do this.
1 Comment
2019 Summary
There are a variety of ways to handle this, depending on whether or not you want to do this manually or programmatically.
There are four options summarized below. And for those that prefer a more hands-on explanation, I've put together a YouTube video: Download Individual Files and Folders from GitHub.
Also, I've posted a similar answer on Stack Overflow for those that need to download single files from GitHub (as opposed to folders).
1. GitHub User Interface
- There's a download button on the repository's homepage. Of course, this downloads the entire repository, after which you would need to unzip the download and then manually drag out the specific folder you need.
2. Third-party Tools
- There are a variety of browser extensions and web application that can handle this, with DownGit being one of them. Simply paste in the GitHub URL to the folder (e.g.,
https://github.com/babel/babel-eslint/tree/master/lib) and press the Download button.
3. Subversion
- GitHub does not support git-archive (the Git feature that would allow us to download specific folders). GitHub does however, support a variety of Subversion features, one of which we can use for this purpose. Subversion is a version control system (an alternative to Git). You'll need Subversion installed. Grab the GitHub URL for the folder you want to download. You'll need to modify this URL, though. You want the link to the repository, followed by the word "trunk", and ending with the path to the nested folder. In other words, using the same folder link example that I mentioned above, we would replace "tree/master" with "trunk". Finally, open up a terminal, navigate to the directory that you want the content to get downloaded to, type in the following command (replacing the URL with the URL you constructed):
svn export https://github.com/babel/babel-eslint/trunk/lib, and press enter.
4. GitHub API
- This is the solution you'll need if you want to accomplish this task programmatically. And this is actually what DownGit is using under the hood. Using GitHub's REST API, write a script that does a GET request to the content endpoint. The endpoint can be constructed as follows:
https://api.github.com/repos/:owner/:repo/contents/:path. After replacing the placeholders, an example endpoint is:https://api.github.com/repos/babel/babel-eslint/contents/lib. This gives you JSON data for all of the content that exists in that folder. The data has everything you need, including whether or not the content is a folder or file, a download URL if it's a file, and an API endpoint if it's a folder (so that you can get the data for that folder). Using this data, the script can recursively go through all content in the target folder, create folders for nested folders, and download all of the files for each folder. Check out DownGit's code for inspiration.
1 Comment
ss in front of the url while browsing through the repo on github. explained it here - stackoverflow.com/a/77459783/11565176 If you truly just want to just "download" the folder and not "clone" it (for development), the easiest way to simply get a copy of the most recent version of the repository (and therefore a folder/file within it), without needing to clone the whole repository or even install Git in the first place, is to download a ZIP archive (for any repository, fork, branch, commit, etc.) by going to the desired repository/fork/branch/commit on GitHub (e.g. http(s)://github.com/<user>/<repo>/commit/<Sha1> for a copy of the files as they were after a specific commit) and selecting the Downloads button near the upper-right.
This archive format contains none of the git-repo magic, just the tracked files themselves (and perhaps a few .gitignore files if they were tracked, but you can ignore those :p)—that means that if the code changes and you want to stay on top, you'll have to manually redownload it, and it also means you won't be able to use it as a Git repository...
I am not sure if that's what you're looking for in this case (again, "download"/view vs "clone"/develop), but it can be useful nonetheless...
3 Comments
tar.gz: https://github.com/${owner}/${repo}/archive/${hash}.tar.gzThere's a Python3 pip package called githubdl that can do this*:
export GIT_TOKEN=1234567890123456789012345678901234567890123
pip install githubdl
githubdl -u http://github.com/foobar/test -d foo
The project page is here
* Disclaimer: I wrote this package.
1 Comment
If you are comfortable with Unix commands, you don't need special dependencies or web applications for this. You can download the repository as a tarball and untar only what you need.
Example (woff2 files from a subdirectory in Font Awesome):
curl -L https://api.github.com/repos/FortAwesome/Font-Awesome/tarball | tar xz --wildcards "*/web-fonts-with-css/webfonts/*.woff2" --strip-components=3
- More about the link format: https://developer.github.com/v3/repos/contents/#get-archive-link (including how to get a ZIP file or specific branches/refs)
- Keep the initial part of the path (
*/) to match any directory. GitHub creates a wrapper directory with the commit ref in the name, so it can't be known. - You probably want
--strip-componentsto be the same as the amount of slashes (/) in the path (previous argument).
This will download the whole tarball. Use the SVN method mentioned in the other answers if this has to be avoided or if you want to be nice to the GitHub servers.
Comments
This is how I do it with Git v2.25.0, and it was also tested with v2.26.2. This trick doesn't work with v2.30.1.
TLDR
git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv
# Requires Git 2.25.x to 2.26.2
git sparse-checkout set data/haarcascades
You can use Docker to avoid installing a specific version of Git:
git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv
# Requires Git 2.25.x to 2.26.2
docker run --rm -it -v $PWD/:/code/ --workdir=/code/ alpine/git:v2.26.2 sparse-checkout set data/haarcascades
Full solution
# Bare minimum clone of OpenCV
git clone --no-checkout --filter=tree:0 https://github.com/opencv/
Output:
opencv
...
Resolving deltas: 100% (529/529), done.
# Downloaded only ~7.3MB , takes ~3 seconds
# du = disk usage, -s = summary, -h = human-readable
And:
du -sh opencv
Output:
7.3M opencv/
And:
# Set target directory
cd opencv
git sparse-checkout set data/haarcascades
Output:
...
Updating files: 100% (17/17), done.
# Takes ~10 seconds, depending on your specifications
And:
# View downloaded files
du -sh data/haarcascades/
Output:
9.4M data/haarcascades/
And:
ls data/haarcascades/
Output:
haarcascade_eye.xml haarcascade_frontalface_alt2.xml haarcascade_licence_plate_rus_16stages.xml haarcascade_smile.xml
haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalface_alt_tree.xml haarcascade_lowerbody.xml haarcascade_upperbody.xml
haarcascade_frontalcatface.xml haarcascade_frontalface_default.xml haarcascade_profileface.xml
haarcascade_frontalcatface_extended.xml haarcascade_fullbody.xml haarcascade_righteye_2splits.xml
haarcascade_frontalface_alt.xml haarcascade_lefteye_2splits.xml haarcascade_russian_plate_number.xml
References
2 Comments
v2.30.1?2.38.1, I just had to do a git checkout main after running git sparse-checkout set foo, and it seemed to only pull down the single folder that I had specified.You can do a simple download of the directory tree:
git archive --remote [email protected]:foobar/Test.git HEAD:foo | tar xf -
But if you mean to check it out, and be able to do commits and push them back, no you can't do that.
3 Comments
You can use git-svn in the following way.
First, replace tree/master with trunk.
Then, install git-svn by sudo apt install git-svn.
git svn clone https://github.com/lodash/lodash/trunk/test
This way, you don't have to go through the pain of setting SVN, specifically for Windows users.
2 Comments
sudo apt install git-svnis required when running through WSL.git sparse-checkout
Git 2.25.0 includes a new experimental
git sparse-checkoutcommand that makes the existing feature easier to use, along with some important performance benefits for large repositories. (The GitHub Blog)
Example with current version:
git clone --filter=blob:none --sparse https://github.com/git/git.git
cd git
git sparse-checkout init --cone
git sparse-checkout add t
Most notably
--sparsechecks out only top-level directory files ofgitrepository into working copygit sparse-checkout add tincrementally adds/checks outtsubfolder ofgit
Other elements
git sparse-checkout initdoes some preparations to enable partial checkouts--filter=blob:noneoptimizes data fetching by downloading only necessary git objects (take a look at partial clone feature for further infos)--conealso speeds up performance by applying more restricted file inclusion patterns
GitHub status
GitHub is still evaluating this feature internally while it’s enabled on a select few repositories [...]. As the feature stabilizes and matures, we’ll keep you updated with its progress. (docs)
1 Comment
git sparse checkout is not strictly needed, at least not anymore. git checkout alone also only obtains the missing blobs: stackoverflow.com/a/56504849/895245 Another specific example:
Like I want to download 'iOS Pro Geo' folder from the URL https://github.com/alokc83/APRESS-Books-Source-Code-/**tree/master**/%20Pro%20iOS%20Geo
and I can do so via
svn checkout https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo
Note trunk in the path.
Yes, using export instead of checkout would give a clean copy without extra Git repository files.
svn export https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo
If tree/master is not there in the URL, then fork it and it will be there in the forked URL.
You can use ghget with any URL copied from the address bar:
ghget https://github.com/fivethirtyeight/data/tree/master/airline-safety
It's a self-contained portable shell script that doesn't use SVN (which didn't work for me on a big repo). It also doesn't use the API so it doesn't require a token and isn't rate-limited.
Disclaimer: I made it.
Comments
None of the answers helped in my situation. If you are developing for Windows, you likely don't have svn. In many situations one can't count on users to have Git installed either, or don't want to download entire repositories for other reasons. Some of the people that answered this question, such as Willem van Ketwich and aztack, made tools to accomplish this task. However, if the tool isn't written for the language you are using, or you don't want to install a third party library, these don't work.
However, there is a much easier way. GitHub has an API that allows you to download a single file or an entire directory's contents using GET requests. You can access a directory using https://api.github.com/repos/:owner/:repo_name/contents/:path that returns a JSON object enumerating all the files in the directory. Included in the enumeration is a link to the raw content of the file, the download_url parameter. The file can then be downloaded using that URL.
It's a two step process that requires the ability to make GET requests, but this can be implemented in pretty much any language, on any platform. It can be used to get files or directories.
1 Comment
download_url for folders is null. Please, read the question carefuly, before posting an answer.For whatever reason, the svn solution does not work for me, and since I have no need of svn for anything else, it did not make sense to spend time trying to make it, so I looked for a simple solution using tools I already had. This script uses only curl and awk to download all files in a GitHub directory described as "/:user:repo/contents/:path".
The returned body of a call to the GitHub REST API
"GET /repos/:user:repo/contents/:path" command returns an object that includes a "download_url" link for each file in a directory.
This command-line script calls that REST API using curl and sends the result through AWK, which filters out all but the "download_url" lines, erases quote marks and commas from the links, and then downloads the links using another call to curl.
curl -s https://api.github.com/repos/:user/:repo/contents/:path | awk \
'/download_url/ { gsub("\"|,", "", 2ドル); system("curl -O " 2ドル); }'
4 Comments
awk: cmd. line:1: /download_url/ { gsub("\"|,", "", 2ドル); system("curl -O "2ドル"); } awk: cmd. line:1: ^ syntax errorFOR /F delims^=^"^ tokens^=4 %%a IN ('curl -s https://api.github.com/repos/:user/:repo/contents/:path 2^>NUL ^| findstr "download_url"') DO curl -O "%%~a"curl and awk. if only it could recurse.curl -Ls 'https://api.github.com/repos/home-assistant/core/contents/homeassistant/components/aladdin_connect?ref=2024年6月4日' | jq -r '.[].download_url' | xargs -n1 curl -OI have developed a tool that might be exactly what you need:
Paste your GitHub folder link
Then you can easily download your GitHub folder
Give it a try and let me know how it works for you
Comments
Just 5 steps to go
- Download SVN from here.
- Open CMD and go to SVN bin directory like:
cd %ProgramFiles%\SlikSvn\bin - Let's suppose I wan to download this directory URL
https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples - Replace
tree/developortree/masterwithtrunk - Now fire this last command to download folder in same directory.
svn export https://github.com/ZeBobo5/Vlc.DotNet/trunk/src/Samples
Comments
Just to amplify previous answers, a real example from a real GitHub repository to a local directory would be:
svn ls https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces
svn export https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces /temp/SvnExport/Washburn
Sometimes a concrete example helps clarify the substitutions proposed.
Comments
It's one of the few places where SVN is better than Git.
In the end we've gravitated towards three options:
- Use wget to grab the data from GitHub (using the raw file view).
- Have upstream projects publish the required data subset as build artifacts.
- Give up and use the full checkout. It's big hit on the first build, but unless you get lot of traffic, it's not too much hassle in the following builds.
1 Comment
I use Linux so, put this in ~/.bashrc , called even :D $HOME/.bashrc
git-dowloadfolder(){
a="1ドル"
svn checkout ${a/tree\/master/trunk}
}
Then refresh the shell with:
source ~/.bashrc
Then use it with git-downloadfolder blablabla :D
Comments
Open the repository to CodeSandbox by replacing GitHub with githubbox in the URL, and in CodeSandbox, go to menu File and Export it as a ZIP file.
For the following repository: https://github.com/geist-org/react/tree/master/examples/custom-themes
Enter the following URL: https://githubbox.com/geist-org/react/tree/master/examples/custom-themes
In CodeSandbox, go to menu File and Export it as a ZIP file.
1 Comment
I have created a simple application that supports download directories, files, and repositories (Private/Public).
Application: https://downdir.vercel.app/
Comments
Explore related questions
See similar questions with these tags.