The NVDA project uses the git version control system for its source code and documentation.
The NVDA repository is located at https://github.com/nvaccess/nvda.
If you plan on contributing to NVDA, you will need to fork and clone the repository.
After forking the repository into your user account (YOUR-USERNAME), clone with --recursive to fetch all required submodules.
git clone --recursive https://github.com/YOUR-USERNAME/nvda.gitWhen you fork the repository, GitHub will create a copy of the master branch.
However, this branch will not be updated when the NV Access master branch is updated.
To ensure your work is always based on the latest commit in the nvaccess/nvda master branch, it is recommended that your master branch be linked to the nvaccess/nvda master branch, rather than the master branch in your GitHub fork.
You can do this from the command line as follows:
# Add a remote for the NV Access repository.
git remote add nvaccess https://github.com/nvaccess/nvda.git
# Fetch the NV Access branches.
git fetch nvaccess
# Switch to the local master branch.
git checkout master
# Set the local master to use the NV Access master as its upstream.
git branch -u nvaccess/master
# Update the local master.
git pullAt a minimum, running and building NVDA from source requires Windows 10 (Version 1507). We recommend Windows 11 to work with features under active support, and if you need to use Windows 10, use Version 22H2.
The NVDA source depends on several other packages to run correctly.
The following dependencies need to be installed on your system:
Python, version 3.13.13, 64-bit. Install the python version listed in .python-versions
uv is used as package and project manager.
- Microsoft Visual Studio 2022 or 2026
- To replicate the production build environment, use the version of Visual Studio 2022 that GitHub Actions is using.
- If you don't use the Visual Studio IDE itself, you can download the build tools.
- If you do intend to use the Visual Studio IDE (not required for NVDA development), you can download the community version.
- The Professional and Enterprise versions are also supported.
- Preview or insiders versions are not supported.
- When installing Visual Studio, additional components must be included:
- You can automatically fetch these using NVDAs .vsconfig using the import feature of the VS installer.
- In the list on the Workloads tab, in the Desktop grouping:
- Desktop development with C++.
- Once selected, ensure "C++ Clang tools for Windows" is included under the optional grouping.
- Desktop development with C++.
- On the Individual components tab, ensure the following items are selected:
- Windows 11 SDK (10.0.26100.x)
- MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools
- MSVC v143 - VS 2022 C++ x64/x86 build tools
- C++ ATL for v143 build tools (x86 & x64)
- C++ ATL for v143 build tools (ARM64/ARM64EC)
Some of the dependencies are contained in Git submodules.
If you didn't pass the --recursive option to git clone, you will need to run git submodule update --init.
Whenever a required submodule commit changes (e.g. after git pull), you will need to run git submodule update.
If you aren't sure, run git submodule update after every git pull, merge or checkout.
- eSpeak NG, commit
b0b605c8a80f76c4c19e18033c6780c3cc4afc5b - Sonic, commit
d2cdb40fbdc82b464be364a50b34e8dd82b6c80a - IAccessible2, commit
c9ae003d9c85eb707716928de97e055f5b77189c - liblouis, version 3.37.0
- Unicode Common Locale Data Repository (CLDR), version 48.0
- Adobe Acrobat accessibility interface, version XI
- Microsoft Detours, commit
9764cebcb1a75940e68fa83d6730ffaf0f669401 - brlapi Python bindings, version 0.8.7 or later, built with GitHub Actions in the NV Access fork of the brlTTY repository
- lilli.dll, version 2.1.0.0
- Nullsoft Install System, version 3.11
- Java Access Bridge 64 bit, from Zulu Community OpenJDK build 17.0.16+8 Zulu (17.60.17)
- Windows Implementation Library (WIL), commit
7cf41936c5b4ab79daf0d9437211380dc69fa958
The following build time dependencies are included in the miscDeps git submodule:
- xgettext and msgfmt from GNU gettext
-
If you use Visual Studio Code as your integrated development environment, you get the benefit of our prepopulated workspace configuration, which is included as a submodule. If you do not wish to use the pre-populated VS Code workspace configuration, you can unregister the
.vscodesubmodule.git submodule deinit .vscode
If you change your mind, you can re-enable it at any time.
git submodule init .vscode
NVDA and its build system also depend on an extensive list of Python packages.
They are all listed with their specific versions in the pyproject.toml file in the root of this repository.
However, the build system takes care of fetching these itself when needed.
These packages will be installed into an isolated Python virtual environment within this repository, and will not affect your system-wide set of packages.
The following dependencies aren't needed by most people:
- To generate developer documentation for nvdaHelper: Doxygen Windows installer, version 1.8.15.