Old equipment manuals still say "connect with HyperTerminal". On Windows 10 or 11 you won't find it: according to Hilgraeve, who wrote it and licensed it to Microsoft, it stopped shipping with Windows Vista and 7. Hilgraeve still sells HyperTerminal Private Edition ($69.99 as of September 2026, free trial), but free tools cover everything it did.
And no, Windows Terminal doesn't do serial. The GitHub request for it (microsoft/terminal #1280) has been open since 2019 and sits in the Icebox milestone.
1. Find the COM port
Device Manager -> Ports (COM & LPT). Unplug and replug the device; the entry that disappears and returns is yours. Or ask PowerShell:
[System.IO.Ports.SerialPort]::GetPortNames()
Get-PnpDevice -Class Ports -PresentOnly | Select-Object Status, FriendlyName
No port at all? Install the adapter chip's driver (CH340, CP210x, FTDI) and rule out a charge-only USB cable.
A big number like COM34 is harmless. On the PC I wrote this on, nine unplugged port devices still carried COM3 to COM20, while the board plugged in right now was on COM34. One catch: through the Win32 API, ports above 9 must be opened as \\.\COM10 (per the CreateFile docs), and some old programs never learned that.
2. The four settings
A serial line has no negotiation. Both ends assume the same rules, and if one differs the port still opens but the output is wrong.
| Setting | Usual value | Symptom when wrong |
|---|---|---|
| Speed (baud) | 9600 or 115200 | A stream of unreadable characters |
| Data format | 8N1 | Only some characters come out wrong |
| Flow control | None | Sending stalls, or certain bytes vanish |
| Line ending | CR, LF or CR+LF | Commands get no reply |
8N1 is 8 data bits, no parity, 1 stop bit, and it's what Arduino's Serial.begin() uses unless told otherwise. 7E1 (7 data bits, even parity) is the same length on the wire, which is why the speed can be right and some characters still turn into others. You'll meet it in things like Modbus ASCII.
PuTTY gotcha: its default serial flow control is XON/XOFF (per the defaults in its source). XON/XOFF sends 0x11 and 0x13 inside the data stream, so binary data containing those bytes gets eaten as flow control. Set Connection > Serial > Flow control to None unless your device really uses it.
3. The free programs
PuTTY - Session > Connection type: Serial, Serial line COM3, Speed. Data bits, parity and flow control live under Connection > Serial. Blank window? Press Enter a few times; some devices wait for the PC to speak first. Shortcut-friendly:
putty.exe -serial COM3 -sercfg 115200,8,n,1,N
The same options work with plink, so a Windows Terminal profile running plink.exe -serial COM3 -sercfg 115200,8,n,1,N turns a tab into a serial console (syntax per the PuTTY manual).
Tera Term - the closest thing to HyperTerminal, including XMODEM/YMODEM/ZMODEM/Kermit file transfer under File > Transfer. File > New connection > Serial, then Setup > Serial port for the line settings. You can't switch ports from that dialog while connected; disconnect first. 5.7.0 (Sept 2026) ships as an installer and as a plain ZIP.
RealTerm - open source, built for binary streams: hex and 8/16/32-bit views, timestamped capture. Port tab for speed and port.
CNTerminal (my tool, open source) - one 8 MB exe, no install: hex send/receive, an ASCII/hex converter, a preview of the exact bytes before sending, and a DTR toggle so an ESP32 doesn't reset on connect. Honest limit: it's fixed at 8N1 with no flow control, so use Tera Term for 7E1 gear or XMODEM.
4. Nothing installable? PowerShell
Windows PowerShell 5.1 ships with Windows and can use .NET's SerialPort directly:
$port = New-Object System.IO.Ports.SerialPort 'COM3', 115200, 'None', 8, 'One'
$port.ReadTimeout = 2000
$port.Open()
$port.WriteLine('AT') # default line ending is LF
try { $port.ReadLine() } catch { 'no reply' }
$port.Close()
Defaults I checked: 9600, 8N1, no handshake, DTR and RTS both off. The open errors tell you what's wrong:
-
Access to the port 'COM3' is denied.- another program (Arduino serial monitor, another terminal, an upload tool) already has it open. -
The port 'COM99' does not exist.- wrong number, or the device is unplugged.
mode COM3 in a command prompt prints the port's current speed, parity, data bits and DTR/RTS state.
Checklist when nothing shows up
- Port not listed: driver, cable, another USB socket.
- Port won't open: close whatever else holds it.
- Garbled text: fix the speed; if only some characters are off, check 8N1 vs 7E1.
- No reply: try CR, LF and CR+LF. Can't see what you type? The device doesn't echo; turn on local echo.
- Board reboots on connect: that's the DTR/RTS auto-reset circuit on ESP32 and Arduino boards.
The full guide, with diagrams and a side-by-side comparison table:
- Guide: https://www.coding-now.com/en/guides/hyperterminal-alternative?utm_source=devto
- CNTerminal (free, no install): https://www.coding-now.com/en/cnterminal?utm_source=devto
What are you still using HyperTerminal-era manuals for?
Top comments (0)