diff --git a/demumble.cc b/demumble.cc
index 0363b45..531f83d 100644
--- a/demumble.cc
+++ b/demumble.cc
@@ -15,6 +15,7 @@
 "if symbols are unspecified, reads from stdin.\n"
 "\n"
 "options:\n"
+"  -b         print both demangled and mangled name\n"
 "  -m         only print mangled names that were demangled, omit other output\n"
 "  -u         use unbuffered output\n"
 "  --version  print demumble version (\"%s\")\n", kDemumbleVersion);
@@ -24,15 +25,15 @@
   return strncmp(s, prefix, strlen(prefix)) == 0;
 }
 
-static void print_demangled(const char* s) {
+static void print_demangled(const char* format, const char* s) {
   const char* cxa_in = s;
   if (starts_with(s, "__Z") || starts_with(s, "____Z"))
     cxa_in += 1;
   if (char* itanium = llvm::itaniumDemangle(cxa_in, NULL, NULL, NULL)) {
-    printf("%s", itanium);
+    printf(format, itanium, s);
     free(itanium);
   } else if (char* ms = llvm::microsoftDemangle(s, NULL, NULL, NULL)) {
-    printf("%s", ms);
+    printf(format, ms, s);
     free(ms);
   } else {
     printf("%s", s);
@@ -61,10 +62,13 @@
 static char buf[8192];
 int main(int argc, char* argv[]) {
   enum { kPrintAll, kPrintMatching } print_mode = kPrintAll;
+  const char* print_format = "%s";
   while (argc > 1 && argv[1][0] == '-') {
     if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
       print_help(stdout);
       return 0;
+    } else if (strcmp(argv[1], "-b") == 0) {
+      print_format = "\"%s\" (%s)";
     } else if (strcmp(argv[1], "-m") == 0) {
       print_mode = kPrintMatching;
     } else if (strcmp(argv[1], "-u") == 0) {
@@ -85,7 +89,7 @@
     ++argv;
   }
   for (int i = 1; i < argc; ++i) {
-    print_demangled(argv[i]);
+    print_demangled(print_format, argv[i]);
     printf("\n");
   }
   if (argc == 1) {  // Read stdin instead.
@@ -125,7 +129,7 @@
 
         char tmp = cur[n_sym];
         cur[n_sym] = '\0';
-        print_demangled(cur);
+        print_demangled(print_format, cur);
         need_separator = true;
         cur[n_sym] = tmp;
 
diff --git a/demumble_test.py b/demumble_test.py
index e53d467..7df0ae9 100755
--- a/demumble_test.py
+++ b/demumble_test.py
@@ -23,11 +23,15 @@
      '.invocation function for block in blocksNRVO()\n'),
     ('demumble -m < .____Z10blocksNRVOv_block_invoke',
      'invocation function for block in blocksNRVO()\n'),
+    ('demumble -- -b', '-b\n'),
     ('demumble -- -m', '-m\n'),
     ('demumble -- -h', '-h\n'),
     ('demumble -h', re.compile('.*usage: demumble.*')),
     ('demumble --help', re.compile('.*usage: demumble.*')),
     ('demumble --version', re.compile('.*\..*')),
+    ('demumble -b hello', 'hello\n'),
+    ('demumble -b _Z1fv', '"f()" (_Z1fv)\n'),
+    ('demumble -b < _Z1fv', '"f()" (_Z1fv)\n'),
 ]
 
 status = 0
