Windows Terminal vs WezTerm

Windows Terminal vs WezTerm: a Windows-only C++ terminal with JSON settings against a cross-platform Rust terminal with Lua config.

Updated

short verdict

Pick Windows Terminal if you work only on Windows and want PowerShell, cmd and WSL profiles created automatically, edited in settings.json or a settings UI. Pick WezTerm if you use Linux, macOS or FreeBSD as well, or want a built-in multiplexer with SSH domains and a Lua config that can run your own logic.

Both are GPU-accelerated, MIT-licensed terminal emulators with tabs and splits. Windows Terminal is Microsoft's Windows-only application, written in C++, that hosts shells as profiles. WezTerm is a Rust terminal and multiplexer that runs on several operating systems and is configured by a Lua program. The choice mostly comes down to platform, configuration style, and whether you want multiplexing inside the terminal.

this page is for

  • Windows developers who switch between PowerShell, cmd and WSL
  • Users who want one terminal across Linux, macOS and Windows
  • Readers deciding between JSON settings and a Lua config
pick

Windows Terminal

★ 105.3kC++
details

Better pick if you only use Windows and want PowerShell, cmd and WSL distributions as ready-made tabbed profiles.

best for

  • Windows-only developers using PowerShell, cmd and WSL side by side
  • Users who prefer a graphical settings UI plus JSON

strengths

  • Creates profiles for PowerShell and WSL distributions automatically when they are installed
  • Settings in settings.json or a settings UI; every shortcut is a rebindable action in a command palette
  • wt command builds layouts at launch with new-tab and split-pane; wt -w _quake gives a drop-down window
  • Per-profile color schemes, background images, acrylic transparency, custom pixel shaders and Sixel image support

weaknesses

  • Runs only on Windows 10 2004 (build 19041) and later
  • No built-in remote multiplexing; the documented scope is hosting local shells in tabs and panes
  • Manual installs from GitHub releases do not update themselves; only the Microsoft Store build auto-updates
pick

WezTerm

★ 29.4kRust
details

Better pick if you work across Linux, macOS and Windows, or want tabs, splits and remote sessions handled by the terminal itself.

best for

  • Cross-platform users who want the same terminal and config everywhere
  • Users who connect over SSH and want remote tabs in the native UI

strengths

  • Lua config in ~/.wezterm.lua reloads on save and can register handlers with wezterm.on
  • Multiplexer domains over Unix socket, SSH or TLS, plus wezterm ssh with a built-in SSH client and serial port support
  • wezterm cli scripts a running instance with split-pane, spawn, send-text and get-text
  • Supports iTerm2 image protocol with a built-in imgcat, kitty graphics, ligatures and searchable scrollback with Ctrl-Shift-F

weaknesses

  • Configuration is code, so there is no graphical settings UI documented
  • SSH domains need a compatible WezTerm installed on the remote host
  • The docs call multiplexing a young, evolving feature, and the README calls the project a spare-time project

Key differences

  • Platform: Windows Terminal runs only on Windows; WezTerm runs on Linux, macOS, Windows 10, FreeBSD and NetBSD.
  • Language: Windows Terminal is written in C++; WezTerm is written in Rust. Both are MIT licensed.
  • Configuration: Windows Terminal uses settings.json and a settings UI; WezTerm uses a Lua file that can run logic.
  • Multiplexing: WezTerm has domains over Unix socket, SSH or TLS; Windows Terminal documents tabs and panes only.
  • Shell integration: Windows Terminal auto-creates PowerShell and WSL profiles; WezTerm does not document this.
  • Scripting: Windows Terminal uses the wt command with new-tab and split-pane; WezTerm uses wezterm cli on a running instance.

Choose Windows Terminal when

  • You work only on Windows and switch between PowerShell, cmd and WSL distributions.
  • You want a settings UI and a command palette alongside settings.json.
  • You want a drop-down quake-mode window through wt -w _quake.
  • You want per-profile effects such as acrylic transparency or custom pixel shaders.

Choose WezTerm when

  • You use more than one OS, including Linux, macOS or FreeBSD, and want one terminal.
  • You connect to remote hosts and want SSH or TLS multiplexer domains with native tabs.
  • You want a Lua config that reacts to events and sets key bindings through code.
  • You need serial port connections from the terminal.

When not to use these

  • You need a terminal on a system neither supports; Windows Terminal is Windows-only, and WezTerm lists only Linux, macOS, Windows 10, FreeBSD and NetBSD.
  • You want a stable multiplexer for long-lived remote sessions; WezTerm's docs describe its multiplexing as still evolving.

FAQ

Which is faster, Windows Terminal or WezTerm?
Neither project publishes benchmark comparisons. Both render text on the GPU, and Windows Terminal also offers a software renderer through experimental.rendering.software.
Can I use both on Windows?
Both run on Windows, so you can install both. Neither project documents using them together, but they are separate applications with separate config files: settings.json and a Lua file.
Which is easier to configure?
Windows Terminal offers a settings UI and settings.json, and creates profiles for PowerShell and WSL automatically. WezTerm requires writing a Lua file, which gives more control but needs some programming.
Does WezTerm run on Windows?
Yes. WezTerm runs on Windows 10, along with Linux, macOS, FreeBSD and NetBSD.

related