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.

Nested fields

Specify a topic name, then drill down to a value within that topic using periods, e.g. /some_topic.some_value.some_nested_value.

Index into an array with brackets, 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[:]{a==1}{b==2}.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'}.