Broken Backspace or Delete behavior in PuTTY turns basic command-line editing into a small festival of odd characters like ^H, ^?, or a random ~. The usual symptom is a key that prints junk instead of erasing, or a key that appears to do nothing in shells and editors.
Special keys are sent as control characters or escape sequences, and the remote system decides how to interpret them based on the current TTY settings and the declared terminal type ($TERM). A mismatch between what PuTTY sends and what the remote line discipline expects for erase breaks Backspace, while an incompatible terminal type or keypad mode can make the Delete key send a sequence the remote applications do not understand.
Keyboard options are saved per PuTTY session profile, so one host can use Control-H while another uses Control-? without affecting other profiles. Serial consoles and network appliances often expect older terminal types (such as vt100), so pairing a compatible Terminal-type string with the correct keyboard mode avoids surprises in full-screen programs such as vim and nano.
Steps to fix Backspace and Delete keys in PuTTY:
- Launch PuTTY.

- Select the saved session profile, or enter the target Host Name and Port under Session.

- Click Load when using a saved session profile.

- Open the Terminal → Keyboard category.

- Select Control-? (127) under The Backspace key.
^H is Control-H (8) and ^? is DEL (127) when echoed by a terminal.
- Select Xterm R6 under The Function keys and keypad.
This setting improves compatibility for Delete, Home, and End sequences.
- Open the Connection → Data category.

- Set Terminal-type string to xterm unless the remote device documentation requires a different value.
Setting $TERM to a value without a matching terminfo entry can break full-screen programs with errors such as unknown terminal type.
- Return to the Session category.

- Click Save to store the changes in the session profile.
Saving Default Settings applies the change to new sessions created later.
- Click Open to start the session.

- Log in to the remote system and reach a shell prompt.

- Test Backspace by typing a few characters at the prompt and pressing Backspace.
Continue with the next steps if Backspace still prints ^H/^? or fails to erase.
- Check the remote erase character when Backspace still behaves incorrectly.
$ stty -a speed 38400 baud; rows 44; columns 160; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; ##### snipped #####
Match The Backspace key to erase = ^? (use Control-?) or erase = ^H (use Control-H).
- Close the PuTTY session window after noting the erase value.

- Launch PuTTY and load the same saved session profile.

- Select Control-H (8) under The Backspace key when erase is shown as ^H.

- Click Save to store the updated Backspace mode in the session profile.

- Reconnect and confirm Backspace deletes characters during command-line editing.

- Verify the Delete key sends an escape sequence expected by xterm-like terminals.
$ cat -v ^[[3~ ^C
Press Delete once, then press Ctrl+C to exit cat.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
