diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -130,6 +130,7 @@
     'PhutilConsoleBlock' => 'console/view/PhutilConsoleBlock.php',
     'PhutilConsoleConcatenatedView' => 'console/view/PhutilConsoleConcatenatedView.php',
     'PhutilConsoleFormatter' => 'console/PhutilConsoleFormatter.php',
+    'PhutilConsoleFormatterTestCase' => 'console/__tests__/PhutilConsoleFormatterTestCase.php',
     'PhutilConsoleList' => 'console/view/PhutilConsoleList.php',
     'PhutilConsoleMessage' => 'console/PhutilConsoleMessage.php',
     'PhutilConsoleProgressBar' => 'console/PhutilConsoleProgressBar.php',
@@ -653,6 +654,7 @@
     'PhutilConsoleBlock' => 'PhutilConsoleView',
     'PhutilConsoleConcatenatedView' => 'PhutilConsoleView',
     'PhutilConsoleFormatter' => 'Phobject',
+    'PhutilConsoleFormatterTestCase' => 'PhutilTestCase',
     'PhutilConsoleList' => 'PhutilConsoleView',
     'PhutilConsoleMessage' => 'Phobject',
     'PhutilConsoleProgressBar' => 'Phobject',
diff --git a/src/console/PhutilConsoleFormatter.php b/src/console/PhutilConsoleFormatter.php
--- a/src/console/PhutilConsoleFormatter.php
+++ b/src/console/PhutilConsoleFormatter.php
@@ -67,11 +67,13 @@
     $bold_re      = '/(?<![\\\\])\*\*(.*)\*\*/sU';
     $underline_re = '/(?<![\\\\])__(.*)__/sU';
     $invert_re    = '/(?<![\\\\])##(.*)##/sU';
+    $backtick_re  = '/(?<![\\\\])`(.*)`/sU';
 
     if (self::getDisableANSI()) {
       $format = preg_replace($bold_re,      '\1',   $format);
       $format = preg_replace($underline_re, '\1',   $format);
       $format = preg_replace($invert_re,    '\1',   $format);
+      $format = preg_replace($backtick_re,  '\1',   $format);
       $format = preg_replace(
         '@<(fg|bg):('.$colors.')>(.*)</\1>@sU',
         '\3',
@@ -85,6 +87,7 @@
       $format = preg_replace($bold_re,      $bold,      $format);
       $format = preg_replace($underline_re, $underline, $format);
       $format = preg_replace($invert_re,    $invert,    $format);
+      $format = preg_replace($backtick_re,  '\1',       $format);
       $format = preg_replace_callback(
         '@<(fg|bg):('.$colors.')>(.*)</\1>@sU',
         array(__CLASS__, 'replaceColorCode'),
diff --git a/src/console/__tests__/PhutilConsoleFormatterTestCase.php b/src/console/__tests__/PhutilConsoleFormatterTestCase.php
new file mode 100644
--- /dev/null
+++ b/src/console/__tests__/PhutilConsoleFormatterTestCase.php
@@ -0,0 +1,57 @@
+<?php
+
+final class PhutilConsoleFormatterTestCase extends PhutilTestCase {
+
+  public function testformatString() {
+    $esc = chr(27);
+
+    $data = array(
+      '' => array(
+        '',
+        '',
+      ),
+      '<bg:red>red background</bg>' => array(
+        'red background',
+        "{$esc}[41mred background{$esc}[49m",
+      ),
+      '<fg:blue>blue foreground</fg>' => array(
+        'blue foreground',
+        "{$esc}[34mblue foreground{$esc}[39m",
+      ),
+      '**bold**' => array(
+        'bold',
+        "{$esc}[1mbold{$esc}[m",
+      ),
+      '__underline__' => array(
+        'underline',
+        "{$esc}[4munderline{$esc}[m",
+      ),
+      '##invert##' => array(
+        'invert',
+        "{$esc}[7minvert{$esc}[m",
+      ),
+      '`backtick`' => array(
+        'backtick',
+        'backtick',
+      ),
+    );
+
+    foreach ($data as $format => $expected) {
+      list($nonansi_expected, $ansi_expected) = $expected;
+
+      $is_ansi = PhutilConsoleFormatter::getDisableANSI();
+
+      PhutilConsoleFormatter::disableANSI(true);
+      $nonansi_value = PhutilConsoleFormatter::formatString($format);
+
+      PhutilConsoleFormatter::disableANSI(false);
+      $ansi_value = PhutilConsoleFormatter::formatString($format);
+
+      $this->assertEqual($nonansi_expected, $nonansi_value);
+      $this->assertEqual($ansi_expected, $ansi_value);
+    }
+
+    PhutilConsoleFormatter::disableANSI($is_ansi);
+  }
+
+}