← All posts
EmbeddedPublished Β· 9 min readAlso on dev.to β†—

HyperTerminal for Windows 10 and 11: free replacements and how to open a COM port

Plenty of older equipment manuals still say "connect with HyperTerminal" - and then you search for it on Windows 10 or 11 and it is simply not there. It was not removed by an update; it has not shipped with Windows since Vista. Everything HyperTerminal did can be done with free tools, and whichever one you pick, there are only four settings you have to get right. This guide goes from finding the port number to connecting in each program, and ends with the order to check things in when nothing shows up.

Free tool featured in this guide
CNTerminal β€” free portable serial terminal

A single 8 MB executable, no install. Hex send and receive, ASCII/hex converter, DTR toggle. Handy for quick checks on 8N1 devices.

Free download β†’

Where did HyperTerminal go?

HyperTerminal was written by a company called Hilgraeve and licensed to Microsoft, which shipped it with Windows up to XP. According to Hilgraeve, it was discontinued when Windows Vista and Windows 7 came out. That is why typing it into the Windows 10 or 11 search box finds nothing.

Hilgraeve still sells a paid version, HyperTerminal Private Edition. As of September 2026 it is version 7.1, costs $69.99, supports Windows 11 and has a free trial. If you need the old screens and workflow exactly, that is the closest match.

⚠️

You will find advice to copy hypertrm.exe and hypertrm.dll from a Windows XP machine. That is not an official distribution channel and compatibility with current Windows is not guaranteed; the community answer on Microsoft Q&A also advises against it.

Despite the similar name, Windows Terminal is a window for Command Prompt and PowerShell and has no serial port connection feature. The GitHub issue asking for one (#1280) was opened in 2019 and is still parked in the Icebox milestone as of September 2026.

Step 1: find the COM port number

When you plug in a USB-serial cable or a board such as an Arduino or ESP32, Windows gives it a COM number. Every program below needs that number first.

  1. 1Right-click the Start button and open Device Manager.
  2. 2Expand Ports (COM & LPT).
  3. 3Unplug the device and plug it back in. The entry that disappears and comes back is yours; the number is in brackets, for example USB Serial Device (COM4).

The entry name depends on the driver. Devices using the Windows built-in driver appear as USB Serial Device, while others show a name chosen by the vendor, such as USB Serial Port or nRF Connect USB CDC ACM. If there is no port entry at all, or it has a warning icon, install the driver from the adapter chip's maker (CH340, CP210x, FTDI and so on) first, and make sure the USB cable is not a charge-only cable with no data lines.

Listing ports from PowerShell

You can skip Device Manager and ask PowerShell directly. The first line prints just the port names that exist right now; the second adds the device names and their status.

powershell
[System.IO.Ports.SerialPort]::GetPortNames()

Get-PnpDevice -Class Ports -PresentOnly | Select-Object Status, FriendlyName
text
COM1
COM34
COM35
ℹ️

A number like COM34 is nothing to worry about. Windows keeps COM numbers in a database and marks the ones it has handed out as in use. On the PC used for this guide, running the second command without -PresentOnly showed nine port devices that were no longer plugged in but still carried COM3 to COM20 in their names - while the board plugged in right now was on COM34.

Step 2: the four settings every program needs

A serial line has no handshake where the two ends agree on anything. Both sides simply assume the same rules and start sending, so if even one rule differs the port still opens fine but the text comes out garbled, or nothing appears at all. These are the four things to match.

SettingWhat it meansCommon valuesIf it differs
Speed (baud rate)Bits sent per second9600 Β· 115200A stream of unreadable characters
Data formatData bits, parity, stop bits8N1Only some characters come out wrong
Flow controlHow the receiver says "pause"NoneSending stalls, or certain bytes vanish
Line endingWhat Enter actually sendsCR Β· LF Β· CR+LFCommands get no reply
8N1 means eight data bits, no parity, one stop bit. 7E1 is seven data bits plus an even-parity bit, so the frame is the same length - the speed can be right and some characters still turn into different ones.

The values are in the device manual's communication specs. "9600, 8, N, 1" means speed 9600 and 8N1. On an Arduino, the number in the sketch's Serial.begin(115200) is the speed, and unless the sketch passes a format it is 8N1. You will meet 7E1 in some industrial protocols such as Modbus ASCII.

Flow control is how a receiver with a full buffer asks the sender to wait. Hardware flow control uses dedicated wires (RTS/CTS); XON/XOFF mixes stop and resume characters into the data itself. Most USB-serial gadgets use neither, so None is the usual choice. The opposite mistake also bites: with hardware flow control turned on and no CTS wire connected on the device side, the PC waits for permission and never sends anything.

⚠️

PuTTY's default serial flow control is XON/XOFF (per the defaults in PuTTY's source). Because XON/XOFF puts the stop and resume characters (0x13 and 0x11) inside the data stream, binary data containing those byte values gets treated as flow control. If your device does not use flow control, set Connection β†’ Serial β†’ Flow control to None.

Step 3: connect with a free program

PuTTY β€” the lightweight option

Best known as an SSH client, PuTTY also does serial. Steps follow the PuTTY 0.85 documentation.

  1. 1On the Session page, set Connection type to Serial.
  2. 2The Host Name box becomes Serial line: enter the port, such as COM3, and put the baud rate in Speed.
  3. 3Under Connection β†’ Serial on the left, set data bits, stop bits, parity and flow control.
  4. 4Back on Session, give it a name and Save so next time you only Load it. Click Open to connect.

If the window stays blank, press Enter a few times. Some devices only start talking after the PC sends something, and the PuTTY manual suggests exactly this. A serial line has no "connection closed" signal, so the session stays open until you close the window.

For a desktop shortcut, use the command-line options. -sercfg takes the speed, data bits, parity (lower-case n, o, e, m, s), stop bits and flow control (upper-case N, X, R, D), separated by commas.

bat
putty.exe -serial COM3 -sercfg 115200,8,n,1,N

Tera Term β€” closest to HyperTerminal, file transfer included

If you used HyperTerminal to push files to equipment, Tera Term is the closest free match. Its File β†’ Transfer menu sends and receives with Kermit, XMODEM, YMODEM, ZMODEM and more, and it has logging and macros. Version 5.7.0, released on September 4, 2026, comes both as an installer and as a ZIP you can just extract and run.

  1. 1File β†’ New connection, choose Serial and pick the port from the list. Only ports that actually exist are listed.
  2. 2Setup β†’ Serial port: set Speed, Data, Parity, Stop bits and Flow control.
  3. 3Setup β†’ Save setup, so the next launch starts with the same settings.
ℹ️

While connected, the Serial port dialog will not let you change the port number. To move to another port, use File β†’ Disconnect and then connect again with New connection (per the Tera Term manual).

RealTerm β€” for binary data

RealTerm is an open-source terminal built for capturing and debugging binary and other awkward data streams. It can show incoming data as hex or as 8, 16 or 32-bit values and capture to a file with timestamps. Speed and port are set on the Port tab. The official page lists Windows up to 10, and the latest build is a beta (3.0.0.30).

CNTerminal β€” one executable, no install

This is the free, open-source terminal made for this site. It is a single 8 MB .exe, so it runs without an installer or admin rights: pick PORT and BAUD at the top and click Connect. It has hex send and receive, an ASCII/hex converter, a WILL SEND preview of the exact bytes before they go out, and a DTR toggle that avoids resetting an ESP32 on connect.

The trade-off: the data format is fixed at 8N1 and there is no flow-control setting (per its source code). For 7E1 equipment or XMODEM transfers, use Tera Term.

Want it inside Windows Terminal?

Windows Terminal has no serial feature of its own, but a profile can launch a command-line serial client. PuTTY's plink accepts the same -serial and -sercfg options, so putting a line like the one below in a new profile's command line turns a tab into a serial console. The syntax follows the PuTTY manual.

text
plink.exe -serial COM3 -sercfg 115200,8,n,1,N

Side by side

ProgramInstallData formatFile transfer (XMODEM etc.)Good atPrice
PuTTYInstaller or single exeAll settingsNoLight, everywhere, saved sessionsFree
Tera TermInstaller or ZIPAll settingsYesClosest to HyperTerminal, macrosFree (open source)
RealTermInstallerAll settingsβ€”Hex and binary display, captureFree (open source)
CNTerminalSingle exe8N1 onlyNoHex send/receive, DTR toggleFree (open source)
HyperTerminal PEInstallerAll settingsYesThe old HyperTerminal, as it was$69.99 (free trial)

No install allowed? Use PowerShell

On a work PC where you cannot install anything, Windows PowerShell 5.1 - which ships with Windows - can use .NET's SerialPort class directly. This example sends one line and waits for one line back.

powershell
$port = New-Object System.IO.Ports.SerialPort 'COM3', 115200, 'None', 8, 'One'
$port.ReadTimeout = 2000        # give up after 2 seconds of silence
$port.Open()
$port.WriteLine('AT')           # default line ending is LF (\n)
try { $port.ReadLine() } catch { 'no reply' }
$port.Close()

The arguments after New-Object are port, speed, parity, data bits and stop bits. If the device expects CR at the end of a line, change the NewLine property or send the text yourself with Write. The defaults checked on this PC are 9600, 8N1 and no flow control, with DTR and RTS both off (False).

The error you get when opening the port tells you which problem you have. These messages were reproduced on this PC (port numbers are examples).

MessageMeaningWhat to do
Access to the port 'COM3' is denied.Another program (or window) already has the port openClose the other terminal or the Arduino IDE serial monitor
The port 'COM99' does not exist.No port with that number right nowRecheck the number and the cable

The built-in mode command shows a port's current settings. Run mode with no arguments to list every COM port.

text
C:\> mode COM1

Status for device COM1:
-----------------------
    Baud:            1200
    Parity:          None
    Data Bits:       7
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     ON
    RTS circuit:     ON

Nothing works? Check in this order

Each step only matters once the one before it passes. Start from the step that matches what you see.
  1. 1The port is not listed β€” check the driver, then the cable (charge-only?), then a different USB socket.
  2. 2The port will not open β€” a port can be open in only one program at a time. Make sure the Arduino IDE serial monitor, another terminal window or an upload tool is not holding it.
  3. 3The text is garbled β€” fix the speed first. If only some characters are still wrong, check the data format (8N1 vs 7E1).
  4. 4Commands get no reply β€” try CR, LF and CR+LF as the line ending. If what you type does not appear on screen, the device may simply not echo it back; turning on local echo in the terminal shows it.
  5. 5The board reboots every time you connect β€” the auto-reset circuit on ESP32 and Arduino boards reacts to DTR/RTS. The guide "Why your ESP32 resets every time you open the serial monitor" on this blog has the fix for each tool.
ℹ️

Some old programs cannot open COM10 and above. Through the Windows API, ports numbered above 9 have to be opened as \\.\COM10 (Microsoft's CreateFile documentation), and not every program does that. If you are stuck with such a program, change the port's number to COM9 or lower in its Device Manager properties.

FAQ

Q. Can I install HyperTerminal on Windows 11?

It is not part of Windows. Hilgraeve's paid HyperTerminal Private Edition supports Windows 11 and has a free trial. For a free program that does the same job, Tera Term is the closest.

Q. Can Windows Terminal connect to a COM port?

Not by itself. The GitHub issue requesting it (#1280) is still parked as of September 2026. You can make a profile that runs PuTTY's plink -serial instead.

Q. What if I don't know the baud rate?

The device manual's communication specs are the reliable answer. Failing that, try 9600 and 115200 first. A wrong speed gives unreadable characters and the right one gives readable text straight away, so it is easy to tell. On an Arduino, the number in the sketch's Serial.begin() is the answer.

Q. How do I do the XMODEM file transfers I used HyperTerminal for?

Tera Term's File β†’ Transfer menu sends and receives with XMODEM, YMODEM, ZMODEM and Kermit. PuTTY and CNTerminal do not have this.

Q. Why does uploading fail while the serial monitor is open?

A COM port can be open in only one program at a time. While a terminal holds the port, the upload tool cannot open it; with esptool on an ESP32 you get an error starting Could not open COM3, the port is busy. Disconnect the terminal before uploading.

Free tool featured in this guide
CNTerminal β€” free portable serial terminal

A single 8 MB executable, no install. Hex send and receive, ASCII/hex converter, DTR toggle. Handy for quick checks on 8N1 devices.

Free download β†’

More posts