A terminal emulator for the web
wterm — terminal emulator for the web
Try: ls, cat README.md, echo hello
user@wterm:~$
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,htopwork 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