Developers Home»Docs»Getting Started on Windows

Getting Started on Windows


Native development of substrate is not very well supported! It is highly recommended to use Windows Subsystem Linux (WSL) and follow the instructions for Ubuntu/Debian. Substrate development is easiest on Unix-based operating systems like macOS or Linux. The examples in the Substrate Tutorials and How-to Guides use Unix-style terminals to demonstrate how to interact with Substrate from the command line.

If you do decide to try and use a Windows computer to natively build Substrate, do the following:

  1. Download and install "Build Tools for Visual Studio:"

    • You can get it at this link:
    • Run the installation file: vs_buildtools.exe.
    • Ensure the "Windows 10 SDK" component is included when installing the Visual C++ Build Tools.
    • Restart your computer.
  2. Install Rust:

    • Detailed instructions are provided by the Rust Book and a quick reference is available at .

      • Download from:
      • Run the installation file: rustup-init.exe for 32 or 64 bis as appropriate.
        • It shouldn't prompt you to install vs_buildtools since you did it in step 1.
      • Choose "Default Installation."
      • To get started, you need Cargo's bin directory (%USERPROFILE%\.cargo\bin) in your PATH environment variable. Future applications will automatically have the correct environment, but you may need to restart your current shell.
  3. Run these commands in Command Prompt (CMD) to set up your Wasm Build Environment:

    rustup update nightly
    rustup update stable
    rustup target add wasm32-unknown-unknown --toolchain nightly
  4. Install LLVM:

  5. Install OpenSSL with vcpkg using PowerShell:

    mkdir C:\Tools
    cd C:\Tools
    git clone --depth=1
    cd vcpkg
    .\vcpkg.exe install openssl:x64-windows-static
  6. Add OpenSSL to your System Variables using PowerShell:

    $env:OPENSSL_DIR = 'C:\Tools\vcpkg\installed\x64-windows-static'
    $env:OPENSSL_STATIC = 'Yes'
    [System.Environment]::SetEnvironmentVariable('OPENSSL_DIR', $env:OPENSSL_DIR, [System.EnvironmentVariableTarget]::User)
    [System.Environment]::SetEnvironmentVariable('OPENSSL_STATIC', $env:OPENSSL_STATIC, [System.EnvironmentVariableTarget]::User)
  7. Install cmake:

  8. Install make

    • This can be done using Chocolatey. First you need to install the Chocolatey package manager:
    • Once Chocolatey installed you can install make:
    choco install make
Last edit: on

Run into problems?
Let us Know