Message path syntax

Message path syntax is used throughout Studio to help you drill down to the exact information you want to inspect in your data.

Topics and fields

Specify the topic name to display all messages for that topic, e.g. /some_topic.

To access nested fields, first specify the topic, then use dot notation to drill down into a nested field, e.g. /some_topic.some_nested_field.

Typing any text into a message path input field will display a list of matching autocomplete options – any topics or nested fields that contain the user-input text will be included in this list.

autocomplete options

Index into an array with bracket notation, e.g. /some_topic.many_values[0].width.


Slices will return an array of values, e.g. /some_topic.many_values[1:3].x or even /some_topic.many_values[:].x to get all values.

Negative slices work backwards from the end of the array, e.g. [-1] gets the last element, and [-2:-1] gets the last 2 elements.

Slice on a variable, e.g. /some_topic.many_values[$my_start_idx:$my_end_idx].


Filter messages based on their fields’ boolean, number, or string values. Only equality is currently supported.

Filter on fields in the top-level message using curly brackets – e.g. /some_topic{}. Messages that don't match the filter will be skipped entirely.

You can also filter on a message’s nested field values using a combination of slices and filters: /some_topic.many_values[:]{id==123}.x.

In addition to filtering on primitive values, you can filter on a variable: /some_topic.many_values[:]{id==$my_id}.

When you apply multiple filters, only messages that satisfy all filters will be returned (i.e. an AND expression): /some_topic.many_values[:]{some_str_field=="abc"}{some_num_field==5}{some_boolean_field==false}.x.

We don't support escaping quotation marks in strings, but you can use single or double quotes, which allows you to express most strings, e.g. {value='string with "double" quotes'}.