PuTTY
Description
I can tell you the exact time when I knew what a server was. October 2012. Second year of university. A systems administration class. The professor wrote an IP address on the white board and told us to open PuTTY and put the address in the Host Name field and press Open. A black window appeared. A blinking cursor prompted me for a username. I typed in the one he’d given me, then a password and suddenly I was viewing a Linux command line running on a machine in a server room three buildings away. I typed ls and saw directories that I did not create. I typed whoami and it replied with my student ID. I typed rm -rf / as a joke and got “Permission denied,” which was the first and most important lesson that professor ever taught me — not because of the command, but because the server was real, it was shared, and destroying it was one missing permission flag away from possible. PuTTY was the window on that realization. A 644-kilobyte executable connecting me to a world I did not know existed.
PuTTY was written by a British software developer, Simon Tatham, and was first released in January 1999. It is a free, open source SSH and Telnet client for Windows. That description has not changed in twenty-seven years because the purpose of the software has not changed in twenty-seven years. You open it, you type in a hostname, you click on SSH, you click Open, and you get a terminal session on a remote machine. That is it. That is the entire product. There is no dashboard.
There is no subscription. There is no onboarding tutorial. There is no AI assistant. There is a configuration dialog with far too many options and a terminal window that does exactly what terminal windows have done since the 1970s — it accepts keyboard input and displays text output. In an industry obsessed with reinvention, PuTTY’s stubborn refusal to become anything other than what it is is almost philosophical.
The configuration window merits its own paragraph since every PuTTY user has a relationship with it. It is a tree of categories on the left — Session, Terminal, Window, Connection — with options panels on the right. There are settings for keyboard behavior, bell sounds, line scrollback, font size, color schemes, proxy configuration, SSH key exchange algorithms, cipher preferences, terminal emulation type and around a hundred other things that most people will never touch.
The first time you see it, it is overwhelming. By the fifth time, you know just what three settings you change and you ignore the rest forever. The ritual for me was always the same, paste hostname, change port if necessary, go to Window > Appearance and increase font to 12 point Consolas, go to Connection > Data and type my username into the auto login field, save the session, open. Twenty seconds of configuration that I did the same for ten years.
The saved sessions list is the PuTTY version of a bookmark system, and it is both essential and infuriating. You set up a connection — hostname, port, username, font, colors, the works — and save it by a name. The next time, you load the session and all the settings are restored. The issue is that the sessions are stored in the Windows Registry, and not in a file. This means they are not visible. You can not copy them to another machine by moving a file. You cannot back them up without export registry key. You cannot synchronize them from one device to another without third-party tools.
I have lost my PuTTY saved sessions 3 times — once when I reinstalled windows, once when I migrated to a new laptop and once because a registry cleaner I ran in 2016 decided they were orphaned entries and removed them. Each time I had to recreate connections to fifteen or twenty servers from memory, which mostly meant scrolling through old emails looking for hostnames I had forgotten. Every other ssh client saves sessions in a configuration file. PuTTY saves them in the most difficult place to find, difficult to transfer, and easiest to accidentally destroy.
The terminal itself is great, and that is more important than anything else because the terminal is where you spend 99 percent of your time. Text rendering is clean. Scrollback works. Copy is automatic — select text to copy to clipboard. Paste is a right-click. This behavior is confusing for new users because it is the opposite of every other Windows application, but once you get used to it, every other terminal that makes you Ctrl+C to copy is broken.
The color scheme out of the box is black background with gray text, which is fine but not great — the default colors for certain output (dark blue on black, for instance) are nearly unreadable. I switched my colors to Solarized Dark in 2015 using a registry file that I found on GitHub and have not thought about it since. The fact that changing colors involve editing the registry or importing a .reg file instead of choosing a theme from a dropdown is very Putty — functional, effective, and totally hostile to anyone who expects modern UX conventions.
SSH key authentication is where PuTTY’s ecosystem becomes powerful and complicated unnecessarily. PuTTY does not use the standard key format of OpenSSH. It uses its own format — .ppk files — generated by a companion tool called PuTTYgen. If you have an OpenSSH key (which is what most tutorials generate, what most servers expect, and what every other SSH client uses), you have to open PuTTYgen, import the OpenSSH key, and save it as a .ppk file before PuTTY can use it.
This is a minor task — thirty seconds once you know the process — but it is an extra step that exists for no reason meaningful to the user. Every time I set up a new machine and copy my ssh keys over I have to do a conversion. Every time one of my colleagues asks me how to SSH into a server using a key, I have to explain the .ppk conversion and watch their face shift from understanding to confusion. Pageant, the SSH authentication agent that stores your keys in memory so you do not have to enter passphrases repeatedly, also uses .ppk format and also requires the same conversion. The tools work. They work well. They just refuse to speak the same language as everybody else.
The lack of tabs is PuTTY’s most criticized shortcoming, and the reason why it is eventually supplemented or replaced by most power users. All PuTTY connections open in separate windows. If you are managing five servers at a time — which is not an unusual number for anyone doing deployments, monitoring, or debugging — you have five different PuTTY windows cluttering up your taskbar. There is no way to group them. There is no way to split them. There is no way to put them in a tiled layout in a single window.
People have been requesting tabs since at least 2005. Simon Tatham’s position, as stated in the PuTTY FAQ, is in essence that tabs are a window management feature and the operating system should be doing it. He is technically correct. He is also practically wrong, because every competing terminal has tabs and nobody wants to Alt+Tab through seven identical black windows to find the one connected to the production database.
This one restriction gave rise to an entire ecosystem of wrappers. MTPuTTY is used to wrap multiple PuTTY sessions in a tabbed window. SuperPuTTY does the same thing, with a slightly different interface. KiTTY is a fork of PuTTY that includes tabs, session filters, automatic passwords and other features which PuTTY has rejected. I used MTPuTTY for about two years before I finally switched to Windows Terminal, which is able to run any command-line application — including SSH — in tabs in a single window. But the fact that there is an entire category of software devoted to adding tabs to PuTTY says something about the need for the feature, as well as the developer’s dedication to not adding it.
The competition has changed dramatically since PuTTY was the only option. Windows 10 included an OpenSSH client built in by default in 2018. You can now open PowerShell or Command Prompt and type ssh user@hostname and it works. No installation. No configuration. No .ppk conversion. Native OpenSSH keys, native terminal, native everything. Windows Terminal was released in 2019 and it offers you a modern, GPU-accelerated, tabbed terminal with color themes, split panes, and customizable keybindings. Between native SSH and Windows Terminal, the two main reasons for using PuTTY – “Windows doesn’t have an SSH client” and “I need a decent terminal” – have been addressed by Microsoft itself. On macOS and Linux, PuTTY was never needed since those systems have had native SSH in the terminal since forever.
So why is PuTTY still installed on my Windows machines?
Partly habit. Muscle memory is real. I have been double-clicking on that PuTTY icon for thirteen years, and my hands are familiar with the configuration dialog as well as with most musical instruments. The path from “I need to connect to a server” to “I am connected to a server” is less in PuTTY than in anything else because I have done it thousands of times.
Partly the saved sessions. Despite my complaints about registry storage, those forty saved sessions represent a catalog of every server I interact with, each with its own customized settings — different usernames, different ports, different key files, different terminal sizes. Recreating that in Windows Terminal’s JSON configuration file would take an afternoon that I have never been motivated enough to spend.
Partly the support for the serial port. This is niche, but PuTTY can be used to connect to serial devices — routers, switches, embedded systems, Arduino boards — via COM ports. I use this perhaps four times a year when setting up network equipment, and every time I am glad that PuTTY treats serial connections using the same interface that it does for SSH. No separate software needed.
And in part because PuTTY is a known quantity in a way that few programs are. It has never crashed on me. Not once in thirteen years. It has never lost a connection that was not the fault of the network. It has never failed to connect to a server that was actually reachable. It has never corrupted any session. It has never updated itself without permission. It has never changed its interface overnight. The 644 kilobyte executable I downloaded in 2012 and the one I downloaded last month are identical in every way that matters. In a software industry where software updates regularly break features, alter workflows and eliminate functionality that users rely on, the stability of PuTTY is more than just convenient – it’s amazing.
This software has been maintained for twenty-seven years by Simon Tatham. Free. Open-source. No company behind it. No VC funding. No pivot to SaaS. No acquisition by a corporation that would add telemetry and a subscription tier. Just a developer who wrote an SSH client before most people knew what SSH was, and who has continued updating it through every version of Windows from 95 to 11, without fundamentally changing what it does or how it does it. PuTTY is not the best terminal in 2026. It is not the prettiest. It is not the richest in features. But it’s the one that was there when there wasn’t a Windows and it’s the one that still works the same way it worked when I was twenty years old sitting in a computer lab, typing whoami into a black window and realizing for the first time the machine answering me was not the one in front of me.
It is 644 kilobytes. It does not need to be anything more.