1---
2title: Building Zed for Windows
3description: "Guide to building zed for windows for Zed development."
4---
5
6# Building Zed for Windows
7
8> The following commands may be executed in any shell.
9
10## Repository
11
12Clone the [Zed repository](https://github.com/zed-industries/zed).
13
14## Dependencies
15
16- Install [rustup](https://www.rust-lang.org/tools/install)
17
18- Install either [Visual Studio](https://visualstudio.microsoft.com/downloads/) with the optional components `MSVC v*** - VS YYYY C++ x64/x86 build tools` and `MSVC v*** - VS YYYY C++ x64/x86 Spectre-mitigated libs (latest)` (`v***` is your VS version and `YYYY` is the release year. Adjust architecture as needed).
19- Or, if you prefer a slimmer installation, install only the [Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) (plus the libs above) and the "Desktop development with C++" workload.
20 This setup is not picked up automatically by rustup. Before compiling, initialize environment variables by launching the developer shell (cmd/PowerShell) installed in the Start menu or Windows Terminal.
21- Install the Windows 11 or 10 SDK for your system, and make sure at least `Windows 10 SDK version 2104 (10.0.20348.0)` is installed. You can download it from the [Windows SDK Archive](https://developer.microsoft.com/windows/downloads/windows-sdk/).
22- Install [CMake](https://cmake.org/download) (required by [a dependency](https://docs.rs/wasmtime-c-api-impl/latest/wasmtime_c_api/)). Or you can install it through Visual Studio Installer, then manually add the `bin` directory to your `PATH`, for example: `C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin`.
23
24If you cannot compile Zed, make sure a Visual Studio installation includes at least the following components:
25
26```json
27{
28 "version": "1.0",
29 "components": [
30 "Microsoft.VisualStudio.Component.CoreEditor",
31 "Microsoft.VisualStudio.Workload.CoreEditor",
32 "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
33 "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake",
34 "Microsoft.VisualStudio.Component.VC.CMake.Project",
35 "Microsoft.VisualStudio.Component.Windows11SDK.26100",
36 "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre"
37 ],
38 "extensions": []
39}
40```
41
42If you are using Build Tools only, make sure these components are installed:
43
44```json
45{
46 "version": "1.0",
47 "components": [
48 "Microsoft.VisualStudio.Component.Roslyn.Compiler",
49 "Microsoft.Component.MSBuild",
50 "Microsoft.VisualStudio.Component.CoreBuildTools",
51 "Microsoft.VisualStudio.Workload.MSBuildTools",
52 "Microsoft.VisualStudio.Component.Windows10SDK",
53 "Microsoft.VisualStudio.Component.VC.CoreBuildTools",
54 "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
55 "Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
56 "Microsoft.VisualStudio.Component.Windows11SDK.26100",
57 "Microsoft.VisualStudio.Component.VC.CMake.Project",
58 "Microsoft.VisualStudio.Component.TextTemplating",
59 "Microsoft.VisualStudio.Component.VC.CoreIde",
60 "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
61 "Microsoft.VisualStudio.Workload.VCTools",
62 "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre"
63 ],
64 "extensions": []
65}
66```
67
68You can export this component list as follows:
69
70- Open the Visual Studio Installer
71- Click on `More` in the `Installed` tab
72- Click on `Export configuration`
73
74### Notes
75
76Update `pg_hba.conf` in the `data` directory to use `trust` instead of `scram-sha-256` for the `host` method. Otherwise, the connection fails with `password authentication failed`. The file is typically at `C:\Program Files\PostgreSQL\17\data\pg_hba.conf`. After the change, it should look like this:
77
78```conf
79# IPv4 local connections:
80host all all 127.0.0.1/32 trust
81# IPv6 local connections:
82host all all ::1/128 trust
83```
84
85If you are using a non-Latin Windows locale, set the `lc_messages` parameter in `postgresql.conf` (in the `data` directory) to `English_United States.1252` (or another UTF-8-compatible encoding available on your system). Otherwise, the database may panic. The file should look like this:
86
87```conf
88# lc_messages = 'Chinese (Simplified)_China.936' # locale for system error message strings
89lc_messages = 'English_United States.1252'
90```
91
92After this, restart the `postgresql` service. Press `Win`+`R` to open the Run dialog, enter `services.msc`, and select **OK**. In Services Manager, find `postgresql-x64-XX`, right-click it, and select **Restart**.
93
94## Building from source
95
96Once you have the dependencies installed, you can build Zed using [Cargo](https://doc.rust-lang.org/cargo/).
97
98For a debug build:
99
100```sh
101cargo run
102```
103
104For a release build:
105
106```sh
107cargo run --release
108```
109
110And to run the tests:
111
112```sh
113cargo test --workspace
114```
115
116> **Note:** Visual regression tests are currently macOS-only and require Screen Recording permission. See [Building Zed for macOS](./macos.md#visual-regression-tests) for details.
117
118## Installing from msys2
119
120Zed does not support unofficial MSYS2 Zed packages built for Mingw-w64. Please report any issues you may have with [mingw-w64-zed](https://packages.msys2.org/base/mingw-w64-zed) to [msys2/MINGW-packages/issues](https://github.com/msys2/MINGW-packages/issues?q=is%3Aissue+is%3Aopen+zed).
121
122Please refer to [MSYS2 documentation](https://www.msys2.org/docs/ides-editors/#zed) first.
123
124## Troubleshooting
125
126### Setting `RUSTFLAGS` env var breaks builds
127
128If you set the `RUSTFLAGS` env var, it will override the `rustflags` settings in `.cargo/config.toml` which is required to properly build Zed.
129
130Because these settings change over time, the resulting build errors may vary from linker failures to other hard-to-diagnose errors.
131
132If you need extra Rust flags, use one of the following approaches in `.cargo/config.toml`:
133
134Add your flags in the build section
135
136```toml
137[build]
138rustflags = ["-C", "symbol-mangling-version=v0", "--cfg", "tokio_unstable"]
139```
140
141Add your flags in the windows target section
142
143```toml
144[target.'cfg(target_os = "windows")']
145rustflags = [
146 "--cfg",
147 "windows_slim_errors",
148 "-C",
149 "target-feature=+crt-static",
150]
151```
152
153Or, create a new `.cargo/config.toml` in the parent directory of the Zed repo (see below). This is useful in CI because you do not need to edit the repo's original `.cargo/config.toml`.
154
155```
156upper_dir
157├── .cargo // <-- Make this folder
158│ └── config.toml // <-- Make this file
159└── zed
160 ├── .cargo
161 │ └── config.toml
162 └── crates
163 ├── assistant
164 └── ...
165```
166
167In the new (above) `.cargo/config.toml`, if we wanted to add `--cfg gles` to our rustflags, it would look like this
168
169```toml
170[target.'cfg(all())']
171rustflags = ["--cfg", "gles"]
172```
173
174### Cargo errors claiming that a dependency is using unstable features
175
176Try `cargo clean` and `cargo build`.
177
178### `STATUS_ACCESS_VIOLATION`
179
180This error can happen if you are using the "rust-lld.exe" linker. Consider trying a different linker.
181
182If you are using a global config, consider moving the Zed repository to a nested directory and add a `.cargo/config.toml` with a custom linker config in the parent directory.
183
184See this issue for more information [#12041](https://github.com/zed-industries/zed/issues/12041)
185
186### Invalid RC path selected
187
188Sometimes, depending on the security rules applied to your laptop, you may get the following error while compiling Zed:
189
190```
191error: failed to run custom build command for `zed(C:\Users\USER\src\zed\crates\zed)`
192
193Caused by:
194 process didn't exit successfully: `C:\Users\USER\src\zed\target\debug\build\zed-b24f1e9300107efc\build-script-build` (exit code: 1)
195 --- stdout
196 cargo:rerun-if-changed=../../.git/logs/HEAD
197 cargo:rustc-env=ZED_COMMIT_SHA=25e2e9c6727ba9b77415588cfa11fd969612adb7
198 cargo:rustc-link-arg=/stack:8388608
199 cargo:rerun-if-changed=resources/windows/app-icon.ico
200 package.metadata.winresource does not exist
201 Selected RC path: 'bin\x64\rc.exe'
202
203 --- stderr
204 The system cannot find the path specified. (os error 3)
205warning: build failed, waiting for other jobs to finish...
206```
207
208To fix this issue, manually set the `ZED_RC_TOOLKIT_PATH` environment variable to the RC toolkit path. Usually this is:
209`C:\Program Files (x86)\Windows Kits\10\bin\<SDK_version>\x64`.
210
211See this [issue](https://github.com/zed-industries/zed/issues/18393) for more information.
212
213### Build fails: Path too long
214
215You may receive an error like the following when building
216
217```
218error: failed to get `pet` as a dependency of package `languages v0.1.0 (D:\a\zed-windows-builds\zed-windows-builds\crates\languages)`
219
220Caused by:
221 failed to load source for dependency `pet`
222
223Caused by:
224 Unable to update https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f2
225
226Caused by:
227 path too long: 'C:/Users/runneradmin/.cargo/git/checkouts/python-environment-tools-903993894b37a7d2/ffcbf3f/crates/pet-conda/tests/unix/conda_env_without_manager_but_found_in_history/some_other_location/conda_install/conda-meta/python-fastjsonschema-2.16.2-py310hca03da5_0.json'; class=Filesystem (30)
228```
229
230To fix this, enable long-path support for both Git and Windows.
231
232For git: `git config --system core.longpaths true`
233
234And for Windows with this PS command:
235
236```powershell
237New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
238```
239
240For more information on this, please see [win32 docs](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=powershell)
241
242(You need to restart your system after enabling long-path support.)
243
244### Graphics issues
245
246#### Zed fails to launch
247
248Zed currently uses Vulkan as its graphics API on Windows. If Zed fails to launch, Vulkan is a common cause.
249
250You can check the Zed log at:
251`C:\Users\YOU\AppData\Local\Zed\logs\Zed.log`
252
253If you see messages like:
254
255- `Zed failed to open a window: NoSupportedDeviceFound`
256- `ERROR_INITIALIZATION_FAILED`
257- `GPU Crashed`
258- `ERROR_SURFACE_LOST_KHR`
259
260Vulkan may not be working correctly on your system. Updating GPU drivers often resolves this.
261
262If there's nothing Vulkan-related in the logs and you happen to have Bandicam installed, try uninstalling it. Zed is currently not compatible with Bandicam.