- Category
- Developer Tools
- Rank
- No. 674Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- vercel-labs
- GitHub
- 3.4k stars
- Latest release
- v0.5.0
- Date
About
Vercel Labs's web terminal emulator — a polished xterm-compatible terminal you can embed in any web app.
What it does
wterm combines a browser terminal engine with DOM rendering, framework adapters, and optional shell and Markdown packages. Its Zig core compiles to WebAssembly, parses terminal escape sequences, and updates only changed rows during animation frames.
Why it's ranked here
The package split is thoughtful: applications can choose a small built-in core or a larger Ghostty backend, then add React, Vue, Bash, or Markdown support. Native DOM output also preserves ordinary browser selection, search, clipboard behavior, and screen reader access.
What's good
It covers demanding terminal behavior, including alternate screens, scrollback, 24-bit color, wide Unicode cells, mouse reporting, focus events, synchronized output, and automatic resizing. WebSocket transport includes binary framing and reconnection, while CSS custom properties make themes straightforward to customize.
Tradeoffs
Full VT compliance requires the roughly 400 KB Ghostty backend instead of the roughly 12 KB built-in core. The Markdown renderer intentionally delegates wrapping to the terminal rather than calculating ANSI-aware line widths. End-to-end coverage targets Chromium only in the supplied configuration.
How to use it well
Choose it for browser IDEs, remote shell clients, interactive documentation, or product demos that need genuine terminal behavior. Start with the lightweight core, add Ghostty when compatibility matters, and use the framework adapter matching your application. It does not provide the remote PTY server itself.
Technical notes+
README.md describes a Zig-to-WASM core, dirty-row rendering through requestAnimationFrame, mode 2026 synchronized output, ResizeObserver sizing, and a pluggable Ghostty backend. package.json defines a private pnpm and Turbo monorepo requiring Node.js 24 or newer and pnpm 11 or newer. vitest.workspace.ts covers six packages, while e2e/playwright.config.ts runs fully parallel Playwright tests against a Vite preview using Desktop Chrome. scripts/sync-versions.mjs treats the core package version as canonical, and scripts/gen-unicode-width.mjs generates merged East Asian Width ranges from Unicode data. web/js/input.js and web/js/renderer.js re-export built DOM artifacts for the vanilla demo.
Observed
- License
- Apache-2.0
- Primary implementation
- Zig core compiled to WebAssembly, with TypeScript and JavaScript packages around it
- Package surface
- Separate core, DOM, React, Vue, Ghostty, just-bash, and Markdown packages
- Interfaces
- Headless terminal core, vanilla DOM renderer, React component and hook, Vue component, and WebSocket transport
- Browser support tested
- Playwright end-to-end configuration includes Desktop Chrome on Chromium
- Package management
- Private pnpm monorepo orchestrated with Turbo
- Test structure
- Vitest workspace covers core, DOM, Ghostty, React, just-bash, and Markdown packages
Read from README.md, package.json, packages/@wterm/dom/src/index.ts, packages/@wterm/vue/src/index.ts, packages/@wterm/core/src/index.ts, packages/@wterm/react/src/index.ts, packages/@wterm/ghostty/src/index.ts, packages/@wterm/markdown/src/index.ts, packages/@wterm/just-bash/src/index.ts, vitest.workspace.ts, e2e/playwright.config.ts, scripts/sync-versions.mjs, scripts/gen-unicode-width.mjs, web/js/input.js, web/js/renderer.js.
What it can do
Execute terminal commands in a web browser
Command line instructions → Terminal command results and output
Embed interactive terminal in web applications
Web application code → Functional terminal interface within the web app
Process xterm-compatible terminal sequences
Terminal escape sequences and control codes → Rendered terminal display with proper formatting
Provide cross-platform terminal access
Web browser on any operating system → Consistent terminal interface regardless of platform
Handle terminal text input and output
Keyboard input and system responses → Interactive terminal session with real-time feedback
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
