docs: show off Perfetto as a CPU profile viewer

Add a Viewing CPU Profiles cookbook, rename the perf tag to performance and
position Perfetto as a profile viewer in the READMEs and homepage.
diff --git a/README.md b/README.md
index 3a3370b..d90587a 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,9 @@
 # Perfetto - System profiling, app tracing and trace analysis
 
 Perfetto is an open-source suite of SDKs, daemons and tools which use
-**tracing** to help developers understand the behaviour of complex systems and
-root-cause functional and performance issues on client and embedded systems.
+**tracing** and **profiling** to help developers understand the behaviour of
+complex systems and root-cause functional and performance issues on client and
+embedded systems.
 
 It is a production-grade tool that is the default tracing system for the
 **Android operating system** and the **Chromium browser**.
@@ -23,8 +24,10 @@
   and Linux (e.g. scheduling states, CPU frequencies, memory profiling,
   callstack sampling).
 - **Browser-based UI:** A powerful, fully local UI for visualizing and exploring
-  large, multi-GB traces on a timeline. It works in all major browsers, requires
-  no installation, and can open traces from other tools.
+  large, multi-GB traces on a timeline, and for exploring CPU and memory
+  profiles with flamegraphs and call trees. It works in all major browsers,
+  requires no installation, and can open traces and profiles from other tools
+  such as pprof, Linux perf and simpleperf.
 - **SQL-based analysis library:** A powerful engine that allows you to
   programmatically query traces using SQL to automate analysis and extract
   custom metrics.
@@ -50,10 +53,13 @@
 - **For Chromium Developers:** Perfetto is the tracing backend for
   `chrome://tracing`. Use it to debug and root-cause issues in the browser, V8,
   and Blink.
-- **For Performance Engineers & SREs:** Analyze and visualize a wide range of
-  profiling and tracing formats, not just Perfetto's. Use the powerful SQL
-  interface to programmatically analyze traces from tools like **Linux perf**,
-  **macOS Instruments**, **Chrome JSON traces**, and more.
+- **For Performance Engineers & SREs:** Use Perfetto as a profile viewer for
+  CPU profiles from **pprof**, **Linux perf** and **simpleperf**: explore them
+  with flamegraphs and call trees, see samples on a timeline, and query them
+  with SQL. See
+  [Viewing CPU Profiles](https://perfetto.dev/docs/getting-started/viewing-cpu-profiles).
+  Perfetto also opens traces from tools like **macOS Instruments**, **Chrome
+  JSON traces**, and more.
 
 ## Getting Started
 
diff --git a/docs/AGENTS.md b/docs/AGENTS.md
index 68bfeda..f77b8f0 100644
--- a/docs/AGENTS.md
+++ b/docs/AGENTS.md
@@ -241,6 +241,50 @@
 out/linux_msan/perfetto_unittests --gtest_brief=1 --gtest_filter="<TestSuiteName.*>"
 ```
 
+## Writing Documentation
+
+The docs in docs/ are published at https://perfetto.dev/docs. The sidebar is
+defined by docs/toc.md.
+
+- **Never move or rename existing doc files.** File paths are the public URLs
+  and are linked from blogs, bugs and elsewhere. Reorganize the sidebar by
+  editing docs/toc.md instead: a page's position in the sidebar is independent
+  of where the file lives.
+- **Follow the [Diátaxis](https://diataxis.fr/) framework.** Every page should
+  be exactly one of the four types, and file into the matching part of the
+  sidebar:
+  - *Tutorials* (learning-oriented lessons with a guaranteed outcome):
+    "Tutorials".
+  - *How-to guides* (goal-oriented recipes for someone who knows what they
+    want): "Cookbooks".
+  - *Explanation* (understanding-oriented background): "Concepts" and the
+    "Overview" pages.
+  - *Reference* (dry, complete descriptions of formats, APIs, tables, CLIs):
+    "Reference", "Data Sources" and similar.
+  Don't mix types on one page: e.g. a how-to guide should link to the
+  reference for details rather than repeating it.
+- **Every page appears in docs/toc.md exactly once.** Sidebar labels can be
+  changed freely; avoid giving two nearby entries the same label.
+- **Prefer extending an existing page over adding a new one.** Add a new page
+  only when the content has a distinct audience or task. Link to existing pages
+  rather than duplicating their content.
+- **Tag every sidebar entry.** Tags (e.g. `{.tag-android .tag-performance}`)
+  drive the "Perfetto for:" audience switcher at the top of the sidebar, which
+  hides entries not relevant to the selected audience. Only add a tag if that
+  audience would *usually* need the page, not merely if it *could* apply: an
+  audience that sees everything sees nothing. The tags are:
+  - `tag-android`: Android app and platform developers. This is the primary
+    audience and the default selection.
+  - `tag-linux`: Linux kernel and system developers.
+  - `tag-cpp-rust`: developers instrumenting C/C++/Rust apps with the SDKs.
+  - `tag-chrome`: Chromium developers.
+  - `tag-performance`: general performance engineers who are not tied to one
+    of the platforms above, e.g. people profiling with pprof, Linux perf or
+    samply, or bringing traces and profiles from other tools.
+  - `tag-contrib`: contributors to Perfetto itself.
+- Pages in the "Overview" section are left untagged so every audience sees
+  them.
+
 ## Creating Pull Requests
 
 **Note:** This is the default PR workflow. If the user has their own way of
diff --git a/docs/README.md b/docs/README.md
index 8afa578..5f1a997 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -5,8 +5,9 @@
 page first.
 
 Perfetto is an open-source suite of SDKs, daemons and tools which use
-**tracing** to help developers understand the behaviour of the complex systems
-and root-cause functional and performance issues on client / embedded systems.
+**tracing** and **profiling** to help developers understand the behaviour of
+complex systems and root-cause functional and performance issues on client /
+embedded systems.
 
 It consists of:
 
@@ -20,9 +21,10 @@
   level (e.g. scheduling states, CPU frequencies, memory profiling, callstack
   sampling) context during the trace.
 - **Fully local, browser-based UI** for visualizing large amounts of complex,
-  interconnected data on a timeline. Our UI works in all major browsers, doesn't
-  require any installation, works offline, and can open traces recorded by other
-  (non-Perfetto) tracing tools.
+  interconnected data on a timeline and for exploring CPU and memory profiles
+  with flamegraphs and call trees. Our UI works in all major browsers, doesn't
+  require any installation, works offline, and can open traces and profiles
+  recorded by other tools, such as pprof, Linux perf and simpleperf.
 - **Powerful, SQL-based analysis library** for programmatically analyzing large
   amounts of complex, interconnected data on a timeline, even if it was not
   collected with Perfetto recording tooling.
@@ -64,15 +66,20 @@
   kernel issues via ftrace, scheduling latency or IPCs between processes.
 - **Collecting, analysing and visualizing heap profiles on Linux** to debug high
   memory usage of C/C++/Rust apps and libraries.
-- **Analysing and visualizing CPU profiles (Linux perf profiles) on Linux** to
-  optimize CPU usage in C/C++/Rust apps and libraries.
+- **Viewing and analysing CPU profiles from other profilers** such as pprof,
+  Linux perf and simpleperf, to optimize CPU usage of apps and libraries in
+  any language. See
+  [Viewing CPU Profiles](/docs/getting-started/viewing-cpu-profiles.md).
 - **Analyze and visualize a wide range of profiling and tracing formats.**
   Perfetto can open traces and profiles from various other tools, allowing you
   to use the Perfetto UI and its SQL-based query engine on many data sources,
   including:
+  - _pprof_
   - _Chrome JSON format_
   - _Firefox Profiler JSON format_
   - _Linux perf (binary and text formats)_
+  - _Android simpleperf_
+  - _Collapsed stacks (Brendan Gregg's FlameGraph format)_
   - _Linux ftrace text format_
   - _macOS Instruments_
   - _Fuchsia tracing format_
diff --git a/docs/getting-started/cpu-profiling.md b/docs/getting-started/cpu-profiling.md
index bbb21db..6b9d301 100644
--- a/docs/getting-started/cpu-profiling.md
+++ b/docs/getting-started/cpu-profiling.md
@@ -420,9 +420,10 @@
 
 The perfetto profiling implementation is built for continuous (streaming)
 collection, and is therefore less optimised for short, high-frequency profiling.
-If all you need are aggregated flamegraphs, consider `simpleperf` on Android and
-`perf` on Linux. These tools are more mature and have a simpler user interface
-for this use case.
+If all you need is a short CPU profile, consider recording with `simpleperf` on
+Android or `perf` on Linux instead. These recorders have a simpler command line
+for this use case, and you can still open their profiles in the Perfetto UI: see
+[Viewing CPU Profiles](/docs/getting-started/viewing-cpu-profiles.md).
 
 ## Next steps
 
diff --git a/docs/getting-started/start-using-perfetto.md b/docs/getting-started/start-using-perfetto.md
index 4daee23..8bc075d 100644
--- a/docs/getting-started/start-using-perfetto.md
+++ b/docs/getting-started/start-using-perfetto.md
@@ -38,6 +38,7 @@
     B --> E["<a href='#c-cpp-developers'>C/C++ Developer (non-Android)</a>"];
     B --> E2["<a href='#rust-developers'>Rust Developer</a>"];
     B --> F["<a href='#chromium-developers'>Chromium Developer</a>"];
+    B --> P["<a href='#cpu-profiles'>I have a CPU profile (pprof, perf, simpleperf...)</a>"];
     B --> G["<a href='#trace-like-data'>I have trace-like data</a>"];
     B --> H["<a href='#not-listed'>None of the above</a>"];
 ```
@@ -222,7 +223,7 @@
   - **Tutorial**:
     [Recording performance counters and CPU profiling with Perfetto](/docs/getting-started/cpu-profiling.md)
   - **Tutorial**:
-    [Visualizing simpleperf files](/docs/getting-started/other-formats.md#firefox-json-format)
+    [Viewing simpleperf profiles](/docs/getting-started/viewing-cpu-profiles.md#simpleperf)
 
 ### {#android-diagnosing-memory-issues} Diagnosing Memory Issues
 
@@ -326,7 +327,7 @@
   - **Tutorial**:
     [Recording performance counters and CPU profiling with Perfetto](/docs/getting-started/cpu-profiling.md)
   - **Guide**:
-    [Visualizing perf files](/docs/getting-started/other-formats.md#firefox-json-format)
+    [Viewing Linux perf profiles](/docs/getting-started/viewing-cpu-profiles.md#linux-perf)
 
 ## {#c-cpp-developers} C/C++ Developer (non-Android)
 
@@ -405,6 +406,23 @@
 [this Perf-Planet blog post](https://calendar.perfplanet.com/2023/digging-chrome-traces-introduction-example/)
 is also a helpful resource.
 
+## {#cpu-profiles} Anyone with a CPU profile to explore
+
+Perfetto is also a CPU profile viewer. If you already profile with **pprof**
+(e.g. from Go), **Linux perf** or Android **simpleperf**, you can open
+those profiles directly in the Perfetto UI, without installing anything, and
+explore them with flamegraphs and call trees. Where the profile has
+timestamps, you can also see the samples on a timeline, and in all cases you
+can query them with SQL.
+
+- **Guide**:
+  [Viewing CPU Profiles](/docs/getting-started/viewing-cpu-profiles.md)
+  (Commands to produce a profile with each tool and open it in Perfetto)
+- **Tutorial**:
+  [Recording CPU profiles with Perfetto](/docs/getting-started/cpu-profiling.md)
+  (If you want to record profiles on Android or Linux with Perfetto's own
+  tooling, alongside other system data)
+
 ## {#trace-like-data} Anyone with "trace-like" data to analyse/visualize
 
 Perfetto's powerful UI and Trace Processor are not limited to traces recorded by
diff --git a/docs/getting-started/viewing-cpu-profiles.md b/docs/getting-started/viewing-cpu-profiles.md
new file mode 100644
index 0000000..e6e31d7
--- /dev/null
+++ b/docs/getting-started/viewing-cpu-profiles.md
@@ -0,0 +1,194 @@
+# Cookbook: Viewing CPU profiles from other profilers
+
+This page collects **recipes** for opening CPU profiles recorded by other
+profilers in the [Perfetto UI](https://ui.perfetto.dev): pprof, Linux `perf`
+and Android `simpleperf`. Each recipe gives the commands to produce a profile
+that Perfetto can open with function names intact, and describes what you will
+see once it is loaded.
+
+The Perfetto UI runs entirely in your browser: profiles are processed locally
+and never uploaded anywhere. To open a profile, either drag and drop the file
+onto [ui.perfetto.dev](https://ui.perfetto.dev) or click "Open trace file" in
+the sidebar.
+
+For the full details of each file format, see
+[Opening traces and profiles from other tools](/docs/getting-started/other-formats.md).
+If instead you want to record CPU profiles on Android or Linux with Perfetto's
+own tooling, alongside other system data, see
+[Recording CPU profiles](/docs/getting-started/cpu-profiling.md).
+
+## {#pprof} pprof profiles
+
+pprof profiles (`profile.proto`, usually gzipped) are produced by Go's
+`runtime/pprof` and `net/http/pprof` packages, as well as other tools which
+write the same format.
+
+1.  Collect a profile. For example, from a Go server exposing `net/http/pprof`:
+
+    ```bash
+    curl -o cpu.pb.gz 'http://localhost:6060/debug/pprof/profile?seconds=30'
+    ```
+
+    Or from Go benchmarks:
+
+    ```bash
+    go test -bench . -cpuprofile cpu.pb.gz
+    ```
+
+2.  Open `cpu.pb.gz` in the Perfetto UI. There is no need to decompress it.
+
+Since pprof profiles do not record when each sample happened, they are shown on
+the **Aggregate Profiles** page rather than on the timeline. The UI opens this
+page automatically when the profile is the only thing loaded; otherwise it is
+available from the sidebar. If the profile has several sample types (e.g.
+`samples` and `cpu`, or allocation counts and sizes in a heap profile), pick the
+one to display from the metric selector.
+
+To look at several pprof profiles at once, put them in a single `.zip` or `.tar`
+archive and open that: each file shows up as a separate profile, and you can
+step between them with the arrow keys.
+
+NOTE: pprof sample labels are not imported yet.
+
+## {#linux-perf} Linux perf profiles
+
+There are two ways to open profiles recorded with `perf record`. Converting to
+text with `perf script` is the simplest, because `perf` itself resolves function
+names. Opening `perf.data` directly keeps more information, but needs an extra
+step to add symbols.
+
+### {#perf-script} Option 1: convert to text with `perf script`
+
+1.  Record a profile with call stacks:
+
+    ```bash
+    perf record -g -- ./my_program
+    ```
+
+    DWARF-based unwinding (`--call-graph dwarf`) also works with this option,
+    because `perf script` does the unwinding.
+
+2.  Convert it to text on the same machine, so `perf` can find the binaries and
+    their symbols:
+
+    ```bash
+    perf script > profile.txt
+    ```
+
+3.  Open `profile.txt` in the Perfetto UI.
+
+### {#perf-data} Option 2: open `perf.data` directly
+
+`perf.data` does not contain function names, only references to the binaries
+that were running. Use `trace_processor bundle` to find those binaries (matched
+by build ID) and package their symbols together with the profile:
+
+1.  Record a profile using frame pointers (`-g`) for call stacks:
+
+    ```bash
+    perf record -g -- ./my_program
+    ```
+
+    DWARF-based unwinding (`--call-graph dwarf`) is not supported when opening
+    `perf.data` directly: use [Option 1](#perf-script) for those profiles.
+
+2.  Download `trace_processor` and bundle the profile with symbols:
+
+    ```bash
+    curl -LO https://get.perfetto.dev/trace_processor
+    chmod +x trace_processor
+    ./trace_processor bundle perf.data profile.tar
+    ```
+
+    If your binaries with symbols live somewhere else, pass
+    `--symbol-paths /path/to/dir`. Add `--verbose` to see where
+    `trace_processor` looked. See
+    [Symbolization](/docs/learning-more/symbolization.md) for more details.
+
+3.  Open `profile.tar` in the Perfetto UI.
+
+### What you will see
+
+`perf` profiles have timestamps, so the samples appear **on the timeline** as
+callstack tracks under each process, one per thread plus one for the whole
+process. Drag across a time range on those tracks to open a flamegraph of the
+samples in that range. This lets you look at, for example, only the samples
+during a slow request instead of the whole recording.
+
+TIP: If you want to line up a `perf` profile with a Perfetto trace recorded at
+the same time, record with `perf record -k mono` (or `-k boot`). See
+[Perf textual format](/docs/getting-started/other-formats.md#perf-textual-format)
+for details.
+
+## {#simpleperf} Android simpleperf profiles
+
+1.  Record a profile of your app with `app_profiler.py`, which ships in the
+    `simpleperf/` directory of the Android NDK:
+
+    ```bash
+    python3 <NDK>/simpleperf/app_profiler.py \
+        --app com.example.myapp \
+        -r "-g --duration 10"
+    ```
+
+    This writes `perf.data` in the current directory. See the
+    [simpleperf documentation](https://android.googlesource.com/platform/system/extras/+/refs/heads/main/simpleperf/doc/README.md)
+    for more recording options.
+
+2.  Open `perf.data` in the Perfetto UI. There is no need to convert it first.
+
+simpleperf stores the function names it finds on the device in `perf.data`, so
+most frames are named without extra steps. If frames from your own native
+libraries have no names (usually because the libraries on the device are
+stripped), bundle the profile with the unstripped libraries from your build:
+
+```bash
+./trace_processor bundle perf.data profile.tar \
+    --symbol-paths app/build/intermediates/merged_native_libs
+```
+
+As with Linux `perf`, samples appear on the timeline and you can open a
+flamegraph for any time range.
+
+## {#samply} samply profiles
+
+Perfetto can open the `profile.json` files written by
+`samply record --save-only`, but it does not symbolize them yet: function names
+are shown as addresses.
+
+## {#other-formats} Other profile formats
+
+Perfetto also opens:
+
+- [Firefox Profiler JSON](/docs/getting-started/other-formats.md#firefox-json-format),
+  e.g. from `perf script report gecko` or Python's `profiling.sampling`
+  module.
+- [Collapsed stacks](/docs/getting-started/other-formats.md#collapsed-stack-format),
+  as used by Brendan Gregg's FlameGraph scripts. These are shown on the
+  Aggregate Profiles page, like pprof.
+- [macOS Instruments XML exports](/docs/getting-started/other-formats.md#macos-instruments-format-xml-export-),
+  shown on the timeline.
+
+## {#exploring} Exploring the profile
+
+Whichever way a profile is opened, it is explored with the same flamegraph
+panel:
+
+- Switch between **Flamegraph**, **Call Tree** and **Functions** views, and
+  between **Top Down** and **Bottom Up** orderings.
+- Focus on or hide frames and stacks matching a regular expression, or pivot on
+  a function to see everything that calls it and everything it calls.
+- Export the data shown as TSV, Markdown or JSON.
+
+For profiles shown on the timeline, see
+[Area Selections](/docs/visualization/perfetto-ui.md#area-selections) for how
+to select samples. Their samples can also be queried with SQL through the
+`stack_sample` table: see
+[PerfettoSQL Getting Started](/docs/analysis/perfetto-sql-getting-started.md).
+
+## {#memory} Memory profiles
+
+Perfetto is also a memory profile viewer. pprof heap profiles open on the
+Aggregate Profiles page as above. For native heap profiles and Java heap dumps
+on Android and Linux, see
+[Memory Profiling](/docs/getting-started/memory-profiling.md).
diff --git a/docs/toc.md b/docs/toc.md
index 3c892b6..2421f73 100644
--- a/docs/toc.md
+++ b/docs/toc.md
@@ -11,22 +11,23 @@
     - [System Tracing](getting-started/system-tracing.md) {.tag-android .tag-linux}
     - [In-App Tracing](getting-started/in-app-tracing.md) {.tag-cpp-rust}
     - [Rust SDK](getting-started/rust-sdk.md) {.tag-cpp-rust}
-    - [Memory Profiling](getting-started/memory-profiling.md) {.tag-android .tag-linux}
-    - [CPU Profiling](getting-started/cpu-profiling.md) {.tag-android .tag-linux}
+    - [Recording CPU Profiles](getting-started/cpu-profiling.md) {.tag-android .tag-linux .tag-performance}
+    - [Memory Profiling](getting-started/memory-profiling.md) {.tag-android .tag-linux .tag-performance}
     - [Instrumenting with atrace](getting-started/atrace.md) {.tag-android}
     - [Instrumenting with ftrace](getting-started/ftrace.md) {.tag-linux .tag-android}
     - [Recording Chrome Traces](getting-started/chrome-tracing.md) {.tag-chrome}
-    - [Importing Other Formats](getting-started/other-formats.md) {.tag-perf}
-    - [Converting Data to Perfetto](getting-started/converting.md) {.tag-perf}
+    - [Opening Traces & Profiles from Other Tools](getting-started/other-formats.md) {.tag-android .tag-linux .tag-cpp-rust .tag-performance}
+    - [Converting Data to Perfetto](getting-started/converting.md) {.tag-performance}
 
   - [Cookbooks](#)
 
     - [Recording Android Traces Locally](getting-started/local-android-trace-recording.md) {.tag-android}
     - [Analyzing Android Traces](getting-started/android-trace-analysis.md) {.tag-android}
-    - [Analyzing Traces from the Command Line](getting-started/command-line-analysis.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Viewing CPU Profiles](getting-started/viewing-cpu-profiles.md) {.tag-android .tag-linux .tag-cpp-rust .tag-performance}
+    - [Analyzing Traces from the Command Line](getting-started/command-line-analysis.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
     - [Tracing on Linux](getting-started/linux-cookbook.md) {.tag-linux}
     - [Capturing Periodic Trace Snapshots](getting-started/periodic-trace-snapshots.md) {.tag-android .tag-linux}
-    - [Using AI with Perfetto](getting-started/using-ai.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Using AI with Perfetto](getting-started/using-ai.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
   - [Case Studies](#)
 
@@ -46,16 +47,16 @@
     - [Buffers and Dataflow](concepts/buffers.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome}
     - [Trace Configuration](concepts/config.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome}
     - [Clock Synchronization](concepts/clock-sync.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome}
-    - [Trace merging](concepts/merging-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Trace merging](concepts/merging-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
     - [Concurrent Sessions](concepts/concurrent-tracing-sessions.md) {.tag-android .tag-linux .tag-cpp-rust}
 
   - [Recording](#)
 
     - [Tracing in Background](learning-more/tracing-in-background.md) {.tag-android .tag-linux}
     - [Advanced Android Tracing](learning-more/android.md) {.tag-android}
-    - [Symbolization and Deobfuscation](learning-more/symbolization.md) {.tag-android .tag-linux}
+    - [Symbolization and Deobfuscation](learning-more/symbolization.md) {.tag-android .tag-linux .tag-performance}
     - [Tracing across Reboots](data-sources/previous-boot-trace.md) {.tag-android .tag-linux}
-    - [Custom Proto Extensions](instrumentation/extensions.md) {.tag-cpp-rust .tag-android .tag-perf}
+    - [Custom Proto Extensions](instrumentation/extensions.md) {.tag-cpp-rust .tag-android .tag-performance}
     - [heapprofd API](instrumentation/heapprofd-api.md) {.tag-cpp-rust}
     - [Multi-machine recording](learning-more/multi-machine-tracing.md) {.tag-android .tag-linux}
 
@@ -67,7 +68,7 @@
       - [System Calls](data-sources/syscalls.md) {.tag-android .tag-linux}
       - [CPU Frequency](data-sources/cpu-freq.md) {.tag-android .tag-linux}
       - [Function Graph](data-sources/funcgraph.md) {.tag-android .tag-linux}
-      - [GPU](data-sources/gpu.md) {.tag-android .tag-linux .tag-perf}
+      - [GPU](data-sources/gpu.md) {.tag-android .tag-linux .tag-performance}
 
     - [Memory](#)
 
@@ -92,46 +93,46 @@
 
   - [Visualization](#)
 
-    - [Perfetto UI](visualization/perfetto-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Merging traces in the UI](visualization/merging-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Data Explorer](visualization/data-explorer.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Opening Large Traces](visualization/large-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Deep Linking](visualization/deep-linking-to-perfetto-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Embedding the UI](visualization/embedding-the-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Debug Tracks](analysis/debug-tracks.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Perfetto UI](visualization/perfetto-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Merging traces in the UI](visualization/merging-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Data Explorer](visualization/data-explorer.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Opening Large Traces](visualization/large-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Deep Linking](visualization/deep-linking-to-perfetto-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Embedding the UI](visualization/embedding-the-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Debug Tracks](analysis/debug-tracks.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
     - [Heap Dump Explorer](visualization/heap-dump-explorer.md) {.tag-android}
     - [Memscope & Memory Overview](visualization/memscope.md) {.tag-android .tag-linux}
 
     - [Extending the UI](#)
 
-      - [Overview](visualization/extending-the-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-perf}
-      - [UI Automation](visualization/ui-automation.md) {.tag-android .tag-linux .tag-cpp-rust .tag-perf}
-      - [Commands Reference](visualization/commands-automation-reference.md) {.tag-android .tag-linux .tag-cpp-rust .tag-perf}
-      - [Extension Servers](visualization/extension-servers.md) {.tag-android .tag-linux .tag-cpp-rust .tag-perf}
+      - [Overview](visualization/extending-the-ui.md) {.tag-android .tag-linux .tag-cpp-rust .tag-performance}
+      - [UI Automation](visualization/ui-automation.md) {.tag-android .tag-linux .tag-cpp-rust .tag-performance}
+      - [Commands Reference](visualization/commands-automation-reference.md) {.tag-android .tag-linux .tag-cpp-rust .tag-performance}
+      - [Extension Servers](visualization/extension-servers.md) {.tag-android .tag-linux .tag-cpp-rust .tag-performance}
 
   - [Trace Analysis](#)
 
-    - [Getting Started](analysis/getting-started.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Overview](analysis/getting-started.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
     - [PerfettoSQL](#)
 
-      - [Getting Started](analysis/perfetto-sql-getting-started.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Syntax](analysis/perfetto-sql-syntax.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Standard Library](analysis/stdlib-docs.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Style Guide](analysis/style-guide.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Backwards Compatibility](analysis/perfetto-sql-backcompat.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+      - [Getting Started](analysis/perfetto-sql-getting-started.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Syntax](analysis/perfetto-sql-syntax.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Standard Library](analysis/stdlib-docs.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Style Guide](analysis/style-guide.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Backwards Compatibility](analysis/perfetto-sql-backcompat.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
     - [Trace Processor](#)
 
-      - [C++ Library](analysis/trace-processor.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Python Library](analysis/trace-processor-python.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Batch Trace Processor](analysis/batch-trace-processor.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+      - [C++ Library](analysis/trace-processor.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Python Library](analysis/trace-processor-python.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Batch Trace Processor](analysis/batch-trace-processor.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
-    - [Merging traces from the command line](analysis/merging-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Trace Summarization](analysis/trace-summary.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Merging traces from the command line](analysis/merging-traces.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Trace Summarization](analysis/trace-summary.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
     - [Converting from Perfetto](quickstart/traceconv.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome}
 
-  - [FAQ](faq.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+  - [FAQ](faq.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
 - [Diving Deep](#)
 
@@ -149,19 +150,19 @@
     - [Protos](#)
 
       - [Trace Config](reference/trace-config-proto.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome}
-      - [Trace Packet](reference/trace-packet-proto.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+      - [Trace Packet](reference/trace-packet-proto.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
     - [PerfettoSQL](#)
 
-      - [Prelude Tables](analysis/sql-tables.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Built-in Functions](analysis/builtin.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-      - [Stats Table](analysis/sql-stats.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+      - [Prelude Tables](analysis/sql-tables.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Built-in Functions](analysis/builtin.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+      - [Stats Table](analysis/sql-stats.autogen) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
 
-    - [Synthetic Track Events](reference/synthetic-track-event.md) {.tag-perf}
+    - [Synthetic Track Events](reference/synthetic-track-event.md) {.tag-performance}
     - [Kernel Track Events](reference/kernel-track-event.md) {.tag-android .tag-linux}
-    - [Trace manifest format](reference/perfetto-manifest.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Extension Server Protocol](visualization/extension-server-protocol.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
-    - [Embedding API](visualization/embedding-api-reference.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-perf}
+    - [Trace manifest format](reference/perfetto-manifest.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Extension Server Protocol](visualization/extension-server-protocol.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
+    - [Embedding API](visualization/embedding-api-reference.md) {.tag-android .tag-linux .tag-cpp-rust .tag-chrome .tag-performance}
     - [Android Version Notes](reference/android-version-notes.md) {.tag-android}
 
   - [Advanced Topics](#)
@@ -170,8 +171,8 @@
     - [Interceptors](instrumentation/interceptors.md) {.tag-cpp-rust}
     - [Legacy (v1) Metrics](analysis/metrics.md) {.tag-android}
     - [Multi-machine architecture](deployment/multi-machine-architecture.md) {.tag-android .tag-linux}
-    - [BigTrace (Single Machine)](deployment/deploying-bigtrace-on-a-single-machine.md) {.tag-android .tag-perf}
-    - [BigTrace on Kubernetes](deployment/deploying-bigtrace-on-kubernetes.md) {.tag-android .tag-perf}
+    - [BigTrace (Single Machine)](deployment/deploying-bigtrace-on-a-single-machine.md) {.tag-android .tag-performance}
+    - [BigTrace on Kubernetes](deployment/deploying-bigtrace-on-kubernetes.md) {.tag-android .tag-performance}
 
   - [Contributing](#)
 
diff --git a/infra/perfetto.dev/src/template_index.html b/infra/perfetto.dev/src/template_index.html
index 9b401a3..bc00a86 100644
--- a/infra/perfetto.dev/src/template_index.html
+++ b/infra/perfetto.dev/src/template_index.html
@@ -12,7 +12,7 @@
   <section class="home-highlights">
     <a href="#profiling"><div class="icon"></div>System Profiling</a>
     <a href="#tracing"><div class="icon"></div>In-App Tracing</a>
-    <a href="#viewer"><div class="icon"></div>Trace Viewer</a>
+    <a href="#viewer"><div class="icon"></div>Trace &amp; Profile Viewer</a>
     <a href="#analysis"><div class="icon"></div>Trace Analysis</a>
   </section>
   </div>
@@ -71,16 +71,21 @@
   <section class="home-section" id="viewer">
     <img src="/assets/ui.png" alt="Trace viewer illustration">
     <div>
-      <h2>Trace Viewer</h2>
+      <h2>Trace &amp; Profile Viewer</h2>
       <div class="home-item">
         <i class="material-icons-round">timeline</i>
         <h3>Interactive trace exploration</h3>
         <p>Record, view and process trace data with the Perfetto UI</p>
       </div>
       <div class="home-item">
+        <i class="material-icons-round">local_fire_department</i>
+        <h3>CPU and memory profile viewer</h3>
+        <p>Flamegraphs and call trees for profiles from pprof, Linux perf and simpleperf</p>
+      </div>
+      <div class="home-item">
         <i class="material-icons-round">file_copy</i>
         <h3>Supports popular trace format files</h3>
-        <p>TraceEvent JSON, Android systrace, ftrace text output</p>
+        <p>TraceEvent JSON, Android systrace, ftrace text output, Firefox Profiler JSON</p>
         </div>
       <div class="home-item">
         <i class="material-icons-round">offline_bolt</i>