A terminal emulator for the web

Starting interactive terminal

wterm ("dub-term") renders to the DOM — native text selection, copy/paste, find, and accessibility come for free. Try the Ghostty-powered terminal above.

The interactive example uses the Ghostty core and just-bash. See also: SSH, local.

Features

  • Pluggable cores — a lightweight Zig/WASM core or Ghostty VT emulation for richer terminal compatibility
  • DOM rendering — native text selection, clipboard, browser find, screen reader support
  • Native hyperlinks — OSC 8 links remain attached to their exact cells through viewport and scrollback, with safe HTTP(S) anchors
  • Dirty-row tracking — only touched rows are re-rendered each frame via requestAnimationFrame
  • Synchronized output — mode 2026 blocks paint atomically with a bounded recovery deadline
  • Themes — CSS custom properties with built-in Default, Solarized Dark, Monokai, and Light themes
  • Alternate screen buffer — vim, less, htop work correctly
  • Scrollback history — configurable ring buffer
  • Wide Unicode cells — CJK, fullwidth, and emoji codepoints stay aligned during cursor-addressed redraws
  • IME composition — tentative text appears at the cursor; only committed text reaches the application
  • 24-bit color — full RGB SGR support
  • Framework bindings — React, Vue 3, and Svelte components
  • Auto-resize — ResizeObserver-based terminal resizing
  • WebSocket transport — connect to a PTY backend with reconnection