A browser-based serial monitor and live plotter for embedded boards:
STM32, Arduino, ESP32 or anything with a USB serial port. Print text and numbers from your
firmware, and this page shows every line and plots the numbers in real time.
Nothing to install. Your data never leaves your computer.
🧭 IMU Orientation Viewer
🎓 Steppe School courses
▶ Getting Started
- Open this page in Chrome or Edge. The Web Serial API is not supported in Firefox or Safari.
- Close any other program using the port (Arduino IDE Serial Monitor, CubeIDE terminal, PuTTY…). Only one program can open a port at a time.
- Set the Baud rate to match your firmware (default 115200).
- Click Connect and choose your board's port in the browser popup.
- Every received line appears in the Console; lines containing numbers are also plotted.
No board yet? Click Demo Mode to see simulated signals.
📌 Data Format
Send one sample per line, ending with \n. Two formats are plotted:
- Plain numbers separated by commas, spaces, tabs or semicolons. Channels are named
ch1, ch2, … by position:
0.98,-0.02,0.11
- Labelled values
name:value (the Arduino Serial Plotter format), so each channel gets its own name:
ax:0.98,ay:-0.02,az:0.11
Lines that mix words and numbers (e.g. WHO_AM_I = 0x6C) are shown in the console only and are not plotted.
💻 Firmware Examples
Arduino / ESP32
Serial.begin(115200);
...
Serial.print("ax:"); Serial.print(ax); Serial.print(",");
Serial.print("ay:"); Serial.println(ay);
STM32 (HAL, printf retargeted to UART)
printf("ax:%.3f,ay:%.3f,az:%.3f\r\n", ax, ay, az);
On STM32, printing floats with printf needs the "Use float with printf" option (newlib-nano) enabled in the project settings.
🛠 Tips
- Pause stops recording: lines that arrive while paused are discarded, like an oscilloscope's Stop. While paused, drag or scroll the plot (or use ← → and the timeline slider) to look back in time; dragging or scrolling while live pauses automatically. Resume / Back to live returns to the newest data. About the last 100,000 samples per channel are kept.
- Click a channel name above the plot to hide or show it.
- Leave Y empty for auto-scaling, or fix the range to compare runs.
- CSV downloads every plotted sample (with a time column); Log downloads the console text.
- Garbled characters usually mean a wrong baud rate.
- Sending binary packets (e.g. for the IMU Viewer)? Use the IMU Viewer instead: this page expects text.