diff --git a/docs/reference.md b/docs/reference.md
index f606086..ddf73e6 100644
--- a/docs/reference.md
+++ b/docs/reference.md
@@ -1748,7 +1748,7 @@
   specifying the intended location of the output file.
 
   The `output_conversion` variable specified the format to write the
-  value. See `gn help output_conversion`.
+  value. See `gn help io_conversion`.
 
   One of `contents` or `data_keys` must be specified; use of `data` will write
   the contents of that value to file, while use of `data_keys` will trigger a
@@ -2352,7 +2352,7 @@
       unspecified or the empty list which means no arguments.
 
   input_conversion:
-      Controls how the file is read and parsed. See "gn help io_conversion".
+      Controls how the file is read and parsed. See `gn help io_conversion`.
 
       If unspecified, defaults to the empty string which causes the script
       result to be discarded. exec script will return None.
@@ -2922,7 +2922,7 @@
       Filename to read, relative to the build file.
 
   input_conversion
-      Controls how the file is read and parsed. See "gn help io_conversion".
+      Controls how the file is read and parsed. See `gn help io_conversion`.
 ```
 
 #### **Example**
@@ -4150,7 +4150,7 @@
       The list or string to write.
 
   output_conversion
-    Controls how the output is written. See "gn help io_conversion".
+    Controls how the output is written. See `gn help io_conversion`.
 ```
 ## <a name="predefined_variables"></a>Built-in predefined variables
 
@@ -5851,7 +5851,7 @@
 
 ```
   Controls how the "contents" of a generated_file target is formatted.
-  See "gn help io_conversion".
+  See `gn help io_conversion`.
 ```
 ### <a name="var_output_dir"></a>**output_dir**: [directory] Directory to put output file in.
 
diff --git a/src/gn/function_exec_script.cc b/src/gn/function_exec_script.cc
index f5f24aa..194dc31 100644
--- a/src/gn/function_exec_script.cc
+++ b/src/gn/function_exec_script.cc
@@ -94,7 +94,7 @@
       unspecified or the empty list which means no arguments.
 
   input_conversion:
-      Controls how the file is read and parsed. See "gn help io_conversion".
+      Controls how the file is read and parsed. See `gn help io_conversion`.
 
       If unspecified, defaults to the empty string which causes the script
       result to be discarded. exec script will return None.
diff --git a/src/gn/function_read_file.cc b/src/gn/function_read_file.cc
index 7aedf8e..acb5444 100644
--- a/src/gn/function_read_file.cc
+++ b/src/gn/function_read_file.cc
@@ -32,7 +32,7 @@
       Filename to read, relative to the build file.
 
   input_conversion
-      Controls how the file is read and parsed. See "gn help io_conversion".
+      Controls how the file is read and parsed. See `gn help io_conversion`.
 
 Example
 
diff --git a/src/gn/function_write_file.cc b/src/gn/function_write_file.cc
index b0884da..709f5fb 100644
--- a/src/gn/function_write_file.cc
+++ b/src/gn/function_write_file.cc
@@ -48,7 +48,7 @@
       The list or string to write.
 
   output_conversion
-    Controls how the output is written. See "gn help io_conversion".
+    Controls how the output is written. See `gn help io_conversion`.
 )";
 
 Value RunWriteFile(Scope* scope,
diff --git a/src/gn/functions_target.cc b/src/gn/functions_target.cc
index d781fd5..4e8038f 100644
--- a/src/gn/functions_target.cc
+++ b/src/gn/functions_target.cc
@@ -886,7 +886,7 @@
   specifying the intended location of the output file.
 
   The `output_conversion` variable specified the format to write the
-  value. See `gn help output_conversion`.
+  value. See `gn help io_conversion`.
 
   One of `contents` or `data_keys` must be specified; use of `data` will write
   the contents of that value to file, while use of `data_keys` will trigger a
diff --git a/src/gn/input_conversion.cc b/src/gn/input_conversion.cc
index 73e8dcc..c09ac91 100644
--- a/src/gn/input_conversion.cc
+++ b/src/gn/input_conversion.cc
@@ -234,7 +234,7 @@
     return ParseJSON(settings, input, origin, err);
 
   *err = Err(original_input_conversion, "Not a valid input_conversion.",
-             "Run gn help input_conversion to see your options.");
+             "Run `gn help io_conversion` to see your options.");
   return Value();
 }
 
diff --git a/src/gn/output_conversion.cc b/src/gn/output_conversion.cc
index 04017dd..971e740 100644
--- a/src/gn/output_conversion.cc
+++ b/src/gn/output_conversion.cc
@@ -154,7 +154,7 @@
   } else {
     // If we make it here, we didn't match any of the valid options.
     *err = Err(original_output_conversion, "Not a valid output_conversion.",
-               "Run gn help output_conversion to see your options.");
+               "Run `gn help io_conversion` to see your options.");
   }
 }
 
diff --git a/src/gn/variables.cc b/src/gn/variables.cc
index d5c5e45..285f3b9 100644
--- a/src/gn/variables.cc
+++ b/src/gn/variables.cc
@@ -2186,7 +2186,7 @@
     R"(output_conversion: Data format for generated_file targets.
 
   Controls how the "contents" of a generated_file target is formatted.
-  See "gn help io_conversion".
+  See `gn help io_conversion`.
 )";
 
 const char kWriteRuntimeDeps[] = "write_runtime_deps";
