PlotJuggler vs Rerun: Drag-and-Drop Plotting or Code-First Logging?

Short answer: PlotJuggler and Rerun differ first in how data gets in. PlotJuggler is a no-code, drag-and-drop application: you open a recording — a ROS bag, an MCAP file, a CSV, a ULog — and drag signals onto plots, no programming involved. Rerun is an SDK-first stack: you instrument your own code with its logging SDKs for Python, Rust or C++, and its viewer renders what your program logs — images, point clouds, tensors and time series in sync. Both are open-source, but under different licences (PlotJuggler MPL-2.0; Rerun MIT/Apache-2.0). If your data already exists as recordings, PlotJuggler meets it where it is; if you are building the system that produces the data and can log deliberately, Rerun’s model is powerful. Part of our Alternatives & Comparisons hub.

The evidence table

CriterionPlotJugglerRerun
Core modelApplication-first: open files or connect streams, drag signals onto plots. No code required at any point.SDK-first: log data from your own Python, Rust or C++ code via the Rerun SDK; the viewer renders what was logged.
Getting data inExisting recordings: ROS bags, MCAP (native in PJ4), CSV, PX4 ULog, Parquet, LeRobot; live streams: ROS 2 topics, MQTT, WebSocket, ZMQ, UDP, WebRTC (PJ4).Your program’s SDK calls; also ingests existing MCAP, .rrd and LeRobot data.
MultimodalPJ4 is a multimodal platform: time series and XY plots plus time-synced images/video (H.264/H.265/AV1, WebRTC), 3D point clouds, meshes and URDF models.Multimodal from the start: images, point clouds, tensors and time series rendered in sync — the overlap with PJ4 is real and growing.
LicenceMPL-2.0 (the application itself).MIT / Apache-2.0 (permissive).
Hosted layerNone — a desktop application. Cloud-adjacent only via ecosystem integrations.Rerun Hub: a commercial cloud layer above the open-source stack.
Analysis styleInteractive: layouts, time offsets, built-in transforms, Lua custom functions and Python transforms (PJ4) applied to recordings after the fact.Programmatic: what gets logged, and how it is structured, is decided in code up front; analysis is shaped by your instrumentation.

The real dividing line: recordings you have vs data you produce

Most comparisons of these two tools miss the practical point, which is temporal. PlotJuggler works backwards from evidence: the flight already happened, the bag already exists, the CSV is already on your disk — often produced by software you did not write and cannot change (a flight controller, a vendor driver, a colleague’s logger). Its whole interface assumes that world. Rerun works forwards from instrumentation: you decide, in your own code, what is worth logging and in what structure, and you get a viewer that understands rich multimodal data because your program described it deliberately. Neither is a lesser version of the other; they start at different ends of the pipeline. The drone engineer with a folder of ULogs, or the ROS engineer handed a rosbag2 recording, cannot retro-instrument yesterday’s flight — for them the question answers itself. The robotics developer building a new perception stack, choosing how it will explain itself, is facing the opposite situation and should weigh Rerun seriously.

Where each one wins

  • PlotJuggler wins when the data already exists as files or streams, when the analyst is not the author of the producing code, when the work is interactive debugging — align these two runs, offset this curve, compute this derived series — and when a zero-code tool must be usable by the whole team, not only its programmers. Its ROS bag and ULog workflows are the deepest available in a desktop GUI, which is why PX4’s own documentation points users to it (see the flight log roundup).
  • Rerun wins when you own the code and can log deliberately, when your data is heavily multimodal from birth (cameras, point clouds, tensors), when permissive MIT/Apache licensing matters to your product, and when you want the logging format and the viewer designed as one system. Its ingestion of MCAP and LeRobot files also makes it a credible second viewer for recordings, not only for SDK output.
  • They increasingly overlap in the middle: PlotJuggler 4 went multimodal (video, 3D, URDF) and Rerun ingests the MCAP files PlotJuggler opens natively. Expect to evaluate both if your work sits between “recordings we must analyse” and “systems we are building”. Our Best ROS 2 Data Visualization Tools roundup scores them side by side, and the platform-scale question is handled in PlotJuggler Alternatives.

Verdict by user type

You are…ChooseWhy
Analysing existing bags, MCAP files, CSVs or ULogsPlotJugglerThat is its input model; no instrumentation step exists or is needed
Building a robot/perception system and designing its loggingRerun deserves first evaluationSDK-first logging in Python/Rust/C++ with a viewer built for exactly that data
A team mixing both worldsBoth, deliberatelyPlotJuggler for recordings and flight logs; Rerun where your own code produces the data
Choosing on licence aloneRerun (MIT/Apache) is more permissive; PlotJuggler is MPL-2.0Both are open-source; the difference matters mainly when embedding in products

One habit protects you in either direction: try your actual data before committing. Open your largest real recording in PlotJuggler (files are on the Download page), and log one real session through the Rerun SDK. An afternoon with your own data settles what a month of feature tables cannot.

Keep learning

Both tools reward a solid grounding in ROS 2 and robotics software practice; if you are building that foundation: ROS and robotics courses on Coursera

(affiliate links)

Similar Posts