Skip to main content
NinjaTerm logo.
A serial port terminal that's got your back. 
All Downloads
Goto Web AppManualGitHub

NinjaTerm is an open source and free electron (or web-based) application designed for viewing debug serial port data and sending commands when developing firmware for an embedded device (e.g. microcontroller). TEST

If you are looking for a serious terminal for continual use, the installable desktop versions are recommended. If you are looking for a quick way to view some serial data without having to install anything, the web-based version is for you!

For the web-based version, natively supported browsers include Chromium-based desktop browsers (e.t.c. Chrome, Edge, Brave) and Opera. Firefox is supported but you have to install the WebSerial for Firefox extension first. Unfortunately Safari is not supported (as of June 2024).

See https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility for a compatibility table.

Download NinjaTerm for your operating system. If you're not sure which version to download, use the platform-specific button above or check the explanations below:

Windows
Windows

Loading Windows downloads...

macOS
macOS

Loading macOS downloads...

Linux
Linux
AppImage (Recommended)

Portable applications that work on most Linux distributions. No installation required - just download, make executable, and run. .AppImage does require FUSE to be installed (sudo apt install fuse on Debian-based distros).

DEB Packages

For Debian-based distributions (Ubuntu, Linux Mint, Elementary OS, etc.). Install with: sudo dpkg -i filename.deb.

Loading Linux downloads...

Not sure which architecture to choose?

x64/x86_64: Standard 64-bit processors. This is what most computers use (Intel Core i3/i5/i7, AMD Ryzen, older Macs).

ARM64: Newer ARM-based processors. This includes Apple Silicon Macs (M1/M2/M3), Raspberry Pi 4+, and some newer Windows laptops.

When in doubt: Try x64 first - it works on most computers. If it doesn't work, then try ARM64.

Features

ANSI Escape Code Support

Rich support for ANSI CSI colour codes, giving you ability to express information however you see fit! (e.g. colour errors red, warnings yellow).

Graphing

Extract data from your stream of debug data and graph it! Flexible options to extract data from text based serial streams, or dedicate the serial port for data only!

Smart Scrolling

Most of the time you want to see the most recent information printed to the screen. NinjaTerm has a "scroll lock" feature to allow for that. However, scrolling up allows you to break the "scroll lock" and focus on previous info (e.g. an error that occurred). NinjaTerm will adjust the scroll point to keep that information in view even if the scrollback buffer is full.

Show Invisible Characters

When debugging ASCII based data, sometimes unexpected "invisible" characters such as ASCII control characters or bytes above 0x7F (which are not part of ASCII) cause weird things to happen to your data! NinjaTerm contains a special font with glyphs for all ASCII control chars and all hex codes from 0x00 to 0xFF. Enable this mode from the settings to "see" any received byte of data!

Logging

Log your data to the file system for future retrieval or post analysis with other software. The file is written to once per second so your previous data should still be there even if the computer crashes/resets!

Filtering

Narrow down on the info you want by using filtering! Great for quickly finding errors, warnings, or debug prints from specific modules. Only rows of received data matching the filter text are shown. Clear the filter text to show all rows again.

Number Types

Don't just treat your data as ASCII! NinjaTerm also supports parsing received data as various numbers, including hex (variable byte length), uint8, int8, uint16, float32, e.t.c. View your data in the way you want it.

And more!

  • Ability to switch between a combined TX/RX terminal and separate terminals.
  • Options for controlling carriage return (CR) and line feed (LF) behavior.
  • Smart copy/paste between the terminals and the clipboard with Ctrl-Shift-C and Ctrl-Shift-V. When copying to the clipboard, rows in the terminal created due to wrapping do not insert new lines into the clipboard data.
  • Macros to send repetitive ASCII or HEX data easily.
  • Send 200ms "break signals" with Ctrl-Shift-B.
  • Support for standard serial port and TCP socket connections.

Bugs and Features

Found a bug? Have a awesome feature you'd like added to NinjaTerm? Open an issue on GitHub.

Contributors

Thanks to Zac Frank for user-interaction guidance and tips!

Thanks to testing done by William Hunter.

Thanks to John Hofman for helping port the project to Maven and setup TravisCI (back when NinjaTerm was written in Java).

Big ups to "utopian" to creating the new NinjaTerm logo!


NinjaTerm is developed and maintained by Geoffrey Hunter

(blog.mbedded.ninja).