diff --git a/README.md b/README.md
index 98cfaa4..4576eae 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 # Devtools
 
-Unopinionated tools for **running**, **debugging** and **testing** Mojo apps.
+Unopinionated tools for **running**, **debugging**, **testing** and
+**benchmarking** Mojo apps.
 
 ## Install
 
@@ -12,119 +13,15 @@
 
 Devtools offers the following tools:
 
- - `mojo_run` - shell runner
+ - `mojo_run` - [documentation](docs/mojo_run.md) shell runner
+ - `mojo_debug` - [documentation](docs/mojo_debug.md) debugger
  - `mojo_test` - apptest runner
- - `mojo_debug` - debugger supporting interactive tracing and debugging of a
-   running mojo shell
+ - `mojo_benchmark` - perf test runner
 
 Additionally, `remote_adb_setup` script helps to configure adb on a remote
 machine to communicate with a device attached to a local machine, forwarding the
 ports used by `mojo_run`.
 
-### Runner
-
-`mojo_run` allows you to run a Mojo shell either on the host, or on an attached
-Android device.
-
-```sh
-mojo_run APP_URL  # Run on the host.
-mojo_run APP_URL --android  # Run on Android device.
-mojo_run "APP_URL APP_ARGUMENTS"  # Run an app with startup arguments
-```
-
-Unless running within a Mojo checkout, we need to indicate the path to the shell
-binary:
-
-```sh
-mojo_run --shell-path path/to/shell/binary APP_URL
-```
-
-Some applications are meant to be run embedded in a **window manager**. To run
-these, you can pass the app url using the `--embed` flag. This will run the
-window manager and pass the given url to it:
-
-```sh
-mojo_run --embed APP_URL [--android]
-```
-
-By default, `mojo_run` uses https://core.mojoapps.io/kiosk_wm.mojo as the window
-manager. You can pass a different window manager url using the
-`--window-manager` flag to override this.
-
-### Debugger
-
-`mojo_debug` allows you to interactively inspect a running shell, collect
-performance traces and attach a gdb debugger.
-
-#### Tracing
-[Performance
-traces](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool)
-can either be collected by Mojo Shell during its startup, or collected
-interactively by `mojo_debug`.
-
-To trace the Mojo Shell startup, use the `--trace-startup` flag:
-
-```sh
-mojo_run --trace-startup APP_URL [--android]
-```
-
-In order to collect traces interactively through `mojo_debug`, make sure that
-the app being inspected was run with `--debugger` switch. E.g.:
-
-```sh
-mojo_run --debugger APP_URL [--android]
-```
-
-While Mojo Shell is running, tracing can be started and stopped by these two
-commands respectively:
-
-```sh
-mojo_debug tracing start
-mojo_debug tracing stop [result.json]
-```
-
-Trace files can be then loaded using the trace viewer in Chrome available at
-`about://tracing`.
-
-#### GDB
-It is possible to inspect a Mojo Shell process using GDB. The `mojo_debug`
-script can be used to launch GDB and attach it to a running shell process
-(android only):
-
-```sh
-mojo_debug gdb attach
-```
-
-Once started, GDB will first stop the Mojo Shell execution, then load symbols
-from loaded Mojo applications. Please note that this initial step can take some
-time (up to several minutes in the worst case).
-
-After each execution pause, GDB will update the set of loaded symbols based on
-the selected thread only. If you need symbols for all threads, use the
-`update-symbols` GDB command:
-```sh
-(gdb) update-symbols
-```
-
-If you only want to update symbols for the current selected thread (for example,
-after changing threads), use the `current` option:
-```sh
-(gdb) update-symbols current
-```
-
-If you want to debug the startup of your application, you can pass
-`--wait-for-debugger` to `mojo_run` to have the Mojo Shell stop and wait to be
-attached by `gdb` before continuing.
-
-#### Android crash stacks
-When Mojo shell crashes on Android ("Unfortunately, Mojo shell has stopped.")
-due to a crash in native code, `mojo_debug` can be used to find and symbolize
-the stack trace present in the device log:
-
-```sh
-mojo_debug device stack
-```
-
 ## Development
 
 The library is canonically developed [in the mojo
diff --git a/docs/mojo_debug.md b/docs/mojo_debug.md
new file mode 100644
index 0000000..27c8c44
--- /dev/null
+++ b/docs/mojo_debug.md
@@ -0,0 +1,73 @@
+# mojo_debug
+
+`mojo_debug` allows you to interactively inspect a running shell, collect
+performance traces and attach a gdb debugger.
+
+## Tracing
+[Performance
+traces](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool)
+can either be collected by Mojo Shell during its startup, or collected
+interactively by `mojo_debug`.
+
+To trace the Mojo Shell startup, use the `--trace-startup` flag:
+
+```sh
+mojo_run --trace-startup APP_URL [--android]
+```
+
+In order to collect traces interactively through `mojo_debug`, make sure that
+the app being inspected was run with `--debugger` switch. E.g.:
+
+```sh
+mojo_run --debugger APP_URL [--android]
+```
+
+While Mojo Shell is running, tracing can be started and stopped by these two
+commands respectively:
+
+```sh
+mojo_debug tracing start
+mojo_debug tracing stop [result.json]
+```
+
+Trace files can be then loaded using the trace viewer in Chrome available at
+`about://tracing`.
+
+## GDB
+It is possible to inspect a Mojo Shell process using GDB. The `mojo_debug`
+script can be used to launch GDB and attach it to a running shell process
+(android only):
+
+```sh
+mojo_debug gdb attach
+```
+
+Once started, GDB will first stop the Mojo Shell execution, then load symbols
+from loaded Mojo applications. Please note that this initial step can take some
+time (up to several minutes in the worst case).
+
+After each execution pause, GDB will update the set of loaded symbols based on
+the selected thread only. If you need symbols for all threads, use the
+`update-symbols` GDB command:
+```sh
+(gdb) update-symbols
+```
+
+If you only want to update symbols for the current selected thread (for example,
+after changing threads), use the `current` option:
+```sh
+(gdb) update-symbols current
+```
+
+If you want to debug the startup of your application, you can pass
+`--wait-for-debugger` to `mojo_run` to have the Mojo Shell stop and wait to be
+attached by `gdb` before continuing.
+
+## Android crash stacks
+When Mojo shell crashes on Android ("Unfortunately, Mojo shell has stopped.")
+due to a crash in native code, `mojo_debug` can be used to find and symbolize
+the stack trace present in the device log:
+
+```sh
+mojo_debug device stack
+```
diff --git a/docs/mojo_run.md b/docs/mojo_run.md
new file mode 100644
index 0000000..26dd2eb
--- /dev/null
+++ b/docs/mojo_run.md
@@ -0,0 +1,29 @@
+# mojo_run
+
+`mojo_run` allows you to run a Mojo shell either on the host, or on an attached
+Android device.
+
+```sh
+mojo_run APP_URL  # Run on the host.
+mojo_run APP_URL --android  # Run on Android device.
+mojo_run "APP_URL APP_ARGUMENTS"  # Run an app with startup arguments
+```
+
+Unless running within a Mojo checkout, we need to indicate the path to the shell
+binary:
+
+```sh
+mojo_run --shell-path path/to/shell/binary APP_URL
+```
+
+Some applications are meant to be run embedded in a **window manager**. To run
+these, you can pass the app url using the `--embed` flag. This will run the
+window manager and pass the given url to it:
+
+```sh
+mojo_run --embed APP_URL [--android]
+```
+
+By default, `mojo_run` uses https://core.mojoapps.io/kiosk_wm.mojo as the window
+manager. You can pass a different window manager url using the
+`--window-manager` flag to override this.
