The Arduino IDE includes a “Serial Monitor” which is decent for basic serial communication.  However, when you need real time serial interaction or data logging capabilities, that’s when one of these serial monitor alternatives can come in handy.

putty [Windows]

Download:  PuTTY. License:  MIT.

Putty Screenshot

Hands-down one of my favorite terminal applications for  Windows is PuTTY from Simon Tatham.  In addition to being a great serial terminal it can also handle telnet, ssh, and a host of other things (no pun intended).  The source is available and looks like it runs on UNIX platforms, but I have never tried.  If you’re using Windows, this is probably your best go-to terminal application.  Every Windows machine I use gets PuTTY in the Start Menu shortcuts.

Screen [Mac, Linux, Win]

Download:  None (for Mac and Linux) License:  GPL

screen for mac and linux

Screen is a command line based fullscreen VT100 emulator.  It makes a create terminal client and has the ability to “detach” from the current terminal to run in the background.  When it comes to serial communication, it’s the tool I used the most outside of the Serial Monitor.  On Windows you will probably need to install Cygwin.  On Linux and the Mac, you’ve already got it.  Drop to a terminal and run screen.
screen <serial_port> <baud_rate>
Since it comes with all Unix systems it is hard to beat.  Except, if you have a Mac.  There’s one option that will beat it!

Cathode [Mac]

One of the coolest terminal emulators available is Cathode from Secret Geometry, which I’ve written about before (with video).  It emulates old-school CRT monitors which sends any grey-bearded hacker (or soon to be) into a nostalgic frenzy.  Which combined with screen can be super nerdy way to interact with your Arduino project.  Go full screen and you’ll make new friends in your makerspace in no time.
It’s too beautiful for screen shots, so there’s a video of the Arduino ASCIITable Example.

Code For Testing Serial Monitors

To demonstrate screen and PuTTY,  I loaded the following code on to my Arduino Uno.  It sends back whatever characters it receives.

void setup() {

void loop() {
  while(Serial.available()) {
   char incoming =;


Use whatever serial application suits your need. There are plenty of other terminals you can use. What are some of the others you know about?

Fan of making things beep, blink and fly. Created AddOhms. Stream on Twitch. Video Host on element14 Presents and writing for Hackster.IO. Call sign KN6FGY.


  1. I have screen on Ubuntu 18.04 and I can receive stuff just fine but how do you ACTUALLY SEND DATA to the arduino on the USB port?!

  2. I just want to monitor the serial out put from my air compressors from any were in the plant and at home. they have an RS232 9 pin D-sub connector. Can I use Arduino to WiFi it to my android. This will be my first Aduino project.

    • You need to measure the signals to verify if they are “true” RS232. True-RS232 outputs can go up to +12V and down to -12V. Either range would be deadly to an Arduino. If the signal swings from 0v to 12v (meaning always positive), then you could use a voltage divider to safely monitor the signal. If the signal swings 0v to 5v, then you can safely monitor with a 5-volt Arduino. Basically and you’re good.

      Instead of Arduino to WiFi, I would get an Adafruit ESP8266 Huzzah/Feather board. You will likely still need to do some logic shifting since that is a 3.3 volt board. But it is rather easy to do WiFi with it.

  3. How do I get Arduino to send data to the new terminal instead of it’s built in terminal?
    Nothing to set here:

    void setup() {

    or in Arduino preferences.
    In everything I read about terminals, nowhere does anybody address this.
    Is it supposed to automatically happen…somehow?

    • The name “Serial Monitor” has nothing to do with code “Serial.begin().” The IDE’s built-in serial monitor is JUST a simple terminal program. It opens a COM port, sends, and receives data. By using “Serial.begin()” you are telling your Arduino to send the computer serial data. Any program on your computer, such as these in this list, that can open a serial port can send/receive data to the Arduino.

      So in other words, there are no additional steps necessary. You open the serial port on your Arduino with Serial.begin() and you open the serial port with a terminal program on the PC.

  4. try YAT, far better than any of the other half built terminals ive come across

  5. How do I send commands to the arduino when using putty? – When using serial monitor in the arduino IDE I can just type commands in the box at the top of the screen and hit enter but with putty I can see the arduinos serial output OK, but don’t see any way to enter commands?

    • There isn’t the concept of a “command” box like the IDE’s Serial Monitor. putty is more like a traditional dumb terminal. putty send keystrokes as you type them. If you want to “see” what you are typing, then you would need to enable “local echo” on the putty side (or echo the characters back on the arduino side.)

      • Ahh, knew there had to be an option in there somewhere! (Config – Terminal – Line Discipline Options. It was set to ‘Auto’ but I needed to force it to ‘On’)

        I’ll need to tweek my arduino prog a little as it currently sends data out every second and this doesn’t allow me enough time to type a response before it overwrites what I’m typing!
        Thanks for the pointer, much appreciated.

    • Unfortunately, no I haven’t looked at Tellurium. Looks to be Windows-only, so maybe one day if I ever switch back to the PC world full time.

  6. Great! Already loved screen, but I didn’t know it was the serial monitor I was looking for… but how do I gracefully close the monitor?

    • Screen has a two “key” exit.

      Press CTRL-A and then \ (backslash)

      That’ll exit screen gracefully.

  7. Thanks, for some reason the serial monitor in my Arduino IDE won’t come out of the background so a little search brought me here. I’ve used Putty to connect to my Linux boxes for years and forgot how handy it is, just switch to com5 and I’m back monitoring… Cheers!

    • You might check the Arduino’s preferences.txt file for the entry “last.serial.location.” I believe the 4 parameters are loc_x, loc_y, width, height (but I may have those mixed up). Make sure the numbers are sane. For example, save their current value and then change to “100,100,100,100”. Or in my case, I have a 1440×900 screen and mine are “1601,491,500,500”.

      Or just keep using putty! 😉

      • You are correct, the preferences file had some huge number that would have pushed the window far off the screen. I guess it was moved while two monitors were being used and did not update itself for a single monitor. Thanks! I’m still keeping putty in my arsenal.

Write A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.