ttyd
Share your terminal over the web
A tool that shares a terminal session through a web browser, run it on any server and anyone with the URL can view or interact with the terminal, with optional password, HTTPS, and file transfer support.
ttyd is a command-line tool that lets you access a terminal session through a web browser. You run a command on your server or computer, and anyone with access to the web address (and optionally a password) can interact with that terminal in their browser, as if they were typing directly on the machine.
A common use case is remote access without needing SSH or a VPN: you start ttyd on a server, point it at a shell or any other command, and access it at a URL in a browser. It is also popular on embedded devices and router firmware such as OpenWrt, where full SSH infrastructure is not always available.
The tool is built on libuv for networking and uses WebGL for rendering the terminal in the browser, which makes it fast. It supports full-featured terminal behavior including Unicode, Chinese/Japanese/Korean character input, and image output via Sixel (a protocol for displaying images inside a terminal window). File transfers between the browser session and the server are supported through ZMODEM and trzsz protocols.
Security options are available: you can require a username and password, enable SSL/TLS encryption so the connection is HTTPS rather than plain HTTP, or restrict access to a single client at a time. By default the terminal is read-only, so remote viewers can watch without being able to type. A writable flag opens up interactive input.
ttyd runs on macOS, Linux, FreeBSD, OpenBSD, Windows, and OpenWrt. You can install it through Homebrew on macOS, apt on Debian/Ubuntu, WinGet on Windows, or download a precompiled binary from the project's releases page.
Where it fits
- Access a remote server shell from a browser when SSH is blocked or unavailable on the network.
- Share a read-only terminal session so a colleague can watch a live demo without installing anything.
- Run a web terminal on an embedded device or OpenWrt router that lacks SSH infrastructure.
- Set up a password-protected HTTPS terminal for a development server accessible from any browser.