|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sr_gui_hand_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged plotjuggler at Robotics Stack Exchange
|
plotjuggler package from plotjuggler repoplotjuggler |
ROS Distro
|
Package Summary
| Version | 3.16.0 |
| License | MPL-2.0 |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/facontidavide/PlotJuggler.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-28 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Davide Faconti
Authors
- Davide Faconti
Gold Sponsor:
PlotJuggler 3.17
PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
Noteworthy features:
- Simple Drag & Drop user interface.
- Load data from file.
- Connect to live streaming of data.
- Save the visualization layout and configurations to reuse them later.
- Fast OpenGL visualization.
- Can handle thousands of timeseries and millions of data points.
- Transform your data using a simple editor: derivative, moving average, integral, etc…
- PlotJuggler can be easily extended using plugins.

Data sources (file and streaming)
- Load CSV files.
- Load ULog (PX4).
- Subscribe to many different streaming sources: MQTT, WebSockets, ZeroMQ, UDP, etc.
- Understand data formats such as JSON, CBOR, BSON, Message Pack, etc.
- Well integrated with ROS: open rosbags and/or subscribe to ROS topics (both ROS1 and ROS2).
- Supports the Lab Streaming Layer, that is used by many devices.
- Easily add your custom data source and/or formats…
Transform and analyze your data
PlotJuggler makes it easy to visualize data but also to analyze it. You can manipulate your time series using a simple and extendable Transform Editor.

Alternatively, you may use the Custom Function Editor, which allows you to create Multi-input / Single-output functions using a scripting language based on Lua.
If you are not familiar with Lua, don’t be afraid, you won’t need more than 5 minutes to learn it ;)

Tutorials
To learn how to use PlotJuggler, check the tutorials here:
| Tutorial 1 | Tutorial 2 | Tutorial 3 |
|---|---|---|
![]() |
![]() |
![]() |
Supported plugins
Some plugins can be found in a different repository. The individual README files should include all the information needed to compile and use the plugin.
Please submit specific issues, Pull Requests and questions on the related Github repository:
If you want a simple example to learn how to write your own plugins, have a look at PlotJuggler/plotjuggler-sample-plugins
Installation
You can download the latest ready to use binaries from the Release page.
Snap (recommended in Ubuntu, to ROS users too)
The snap contains a version of PlotJuggler that works (with some limitations) with ROS2.
File truncated at 100 lines see the full file
Changelog for package plotjuggler
3.17.0 (2026-04-27)
- New plugin: ToolboxMosaico for Mosaico Flight datasets, with streaming pullTopics and per-topic download progress UI (#1340)
- New plugin: Serial Port DataStreamer with nested-JSON support and robust port parsing (#1314)
- New parser: OMG IDL support for ROS 2 message definitions (#1345)
- New ToolboxCSV: rewritten CSV/Parquet export with single-file and multi-file modes, topic filter, time-gap segmentation and NaN/Null/Inf detection (replaces the legacy CSV export)
- Function Editor: Python custom functions, library dialog, and UX refactor (red highlight on empty name, vertical splitter)
- UDP DataStreamer: header-byte dispatch for multi-type payloads, with topic→descriptor mapping in the protobuf parser (#1144)
- Add common statistics SISO transforms: RMS, MAV, stddev, peak-to-peak (#1325)
- Fix CSV loading issues (#1338, addresses #850, #987, #1000)
- Fix curve restoration when loading layout XML files (#1339)
- dataload_ulog: support files larger than 2 GB (#1346)
- parser_ros: emit Header fields per the schema, drop double-prefix (#1350)
- rosx_introspection: parse bounded sequence syntax
[<=N](#1349) - MCAP: more resilient reading of corrupted files
- AppImage: HiDPI scaling and theme isolation on GNOME (#1344)
- Update Qt Advanced Docking to 4.5 and fix a Wayland issue
- Fix tree view collisions when a curve path is also a parent node, and stale X-axis ordering / Parquet column list
- Fix #749: wrap multi-file prefix dialog content in QScrollArea
- Fix #464:
-dflag data is no longer overwritten when a layout is also passed with-l - Fix #1052: segfault when a dock area is destroyed during mouse events
- Fix #1080: vertical zoom no longer stuck at max 0.1
- Fix #1291: use UTC when formatting epoch-based time axis labels
- Fix #1014: deterministic attribute order in layout XML
- Fix #1151: always save colormaps in layout XML
- Fix #994: save/restore streaming buffer size in layout XML
- Fix #1326: standalone time-like CSV columns kept as strings
- Fix #1062: bump nlohmann_json to v3.13.0 for clang >= 19 compatibility
- Fix #1324: keep internal series names aligned after prefix remap
- Fix #967,
#528:
--buffer_sizeactually sets the value and the time slider updates on offset toggle - omgidl: enable
/Zc:__cplusplusfor MSVC to satisfy peglib's C++17 check - CI/build hardening: ros2-rolling typesupport, Conan/Homebrew ordering on macOS, dependabot bumps
- Contributors: Alvvalencia, avalen2022, Davide Faconti, GNERSIS, Gor, Lanove, Per Hedblom, Thies Oelerich, Timo Stienstra, Valentin Platzgummer, dependabot[bot]
3.16.0 (2026-03-10) -----------* add plotjuggler and foxglove bridge plugins * fix Windows MSVC wasmer linking * fix: timestamp detection with array fields (#1310) * Add PlotGroup support to parsing plugins (topic/channel as group) * WebSocket dialog: dedicated Connect button, sorting, and UI polish * move to wasmer * Fix: No buttons appears / Can't select any topics (#1306) * much faster MCAP pre-loading and update to 2.1.2 * Replace StringRef with dictionary index in StringSeries. Fixes #1031 * Fix dangling StringRef pointers in StringSeries::clonePoints (#1279) * Fix WebSocket plugin: use project's zstd target instead of find_path *
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| catkin | |
| ament_cmake | |
| roslib | |
| roscpp | |
| ament_index_cpp | |
| data_tamer_cpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| plotjuggler_ros |





