|  | # Quickstart: Trace conversion | 
|  |  | 
|  | _This quickstart demonstrates how Perfetto traces can be converted into other trace formats using the `traceconv` tool._ | 
|  |  | 
|  |  | 
|  |  | 
|  | ## Prerequisites | 
|  |  | 
|  | - A host running Linux or MacOS | 
|  | - A Perfetto protobuf trace file | 
|  |  | 
|  | The supported output formats are: | 
|  |  | 
|  | - `text` - protobuf text format: a text based representation of protos | 
|  | - `json` - Chrome JSON format: the format used by chrome://tracing | 
|  | - `systrace`: the ftrace text format used by Android systrace | 
|  | - `profile` : pprof-like format. Either for traces with with | 
|  | [native heap profiler](/docs/data-sources/native-heap-profiler.md) dumps or | 
|  | [callstack sampling](/docs/quickstart/callstack-sampling.md) (note however | 
|  | callstacks requires the `--perf` flag). | 
|  |  | 
|  | ## Setup | 
|  |  | 
|  | To use the latest binaries: | 
|  |  | 
|  | ```bash | 
|  | curl -LO https://get.perfetto.dev/traceconv | 
|  | chmod +x traceconv | 
|  | ./traceconv [text|json|systrace|profile] [input proto file] [output file] | 
|  | ``` | 
|  |  | 
|  | For versioned downloads, replace `<tag>` with the required git tag: | 
|  |  | 
|  | ```bash | 
|  | curl -LO https://raw.githubusercontent.com/google/perfetto/<tag>/tools/traceconv | 
|  | chmod +x traceconv | 
|  | ./traceconv [text|json|systrace|profile] [input proto file] [output file] | 
|  | ``` | 
|  |  | 
|  | ## Converting to systrace text format | 
|  |  | 
|  | `./traceconv systrace [input proto file] [output systrace file]` | 
|  |  | 
|  | ## Converting to Chrome Tracing JSON format | 
|  |  | 
|  | `./traceconv json [input proto file] [output json file]` | 
|  |  | 
|  | ## Converting to pprof profile. | 
|  |  | 
|  | This extract all samples from the trace, and outputs a proto that is compatible | 
|  | with pprof. | 
|  |  | 
|  | If you are extracting heaps profiles like heapprofd you can use the following: | 
|  |  | 
|  | `~/traceconv profile [input proto file] [output file]` | 
|  |  | 
|  | However if you are using callstack sampling like traced_perf then use the | 
|  | following instead: | 
|  |  | 
|  | `~/traceconv profile [input proto file] [output file] --perf` | 
|  |  | 
|  | Note for `--perf` the output is one pprof file per process sampled in the trace. | 
|  | You can use pprof to merge them together if desired. | 
|  |  | 
|  | ## Opening in the legacy systrace UI | 
|  |  | 
|  | If you just want to open a Perfetto trace with the legacy (Catapult) trace | 
|  | viewer, you can just navigate to [ui.perfetto.dev](https://ui.perfetto.dev), | 
|  | and use the _"Open with legacy UI"_ link. This runs `traceconv` within | 
|  | the browser using WebAssembly and passes the converted trace seamlessly to | 
|  | chrome://tracing. |