diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index adf9583..f4bf73d 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -49,7 +49,8 @@
 
   public static final String USAGE_MESSAGE =
       StringUtils.lines(
-          "Usage: retrace <proguard-map> [stack-trace-file] [--regex <regexp>, --verbose, --info]",
+          "Usage: retrace <proguard-map> [stack-trace-file] "
+              + "[--regex <regexp>, --verbose, --info, --quiet]",
           "  where <proguard-map> is an r8 generated mapping file.");
 
   private static Builder parseArguments(String[] args, DiagnosticsHandler diagnosticsHandler) {
@@ -58,6 +59,7 @@
     boolean hasSetProguardMap = false;
     boolean hasSetStackTrace = false;
     boolean hasSetRegularExpression = false;
+    boolean hasSetQuiet = false;
     while (context.head() != null) {
       Boolean help = OptionsParsing.tryParseBoolean(context, "--help");
       if (help != null) {
@@ -77,6 +79,11 @@
         builder.setVerbose(true);
         continue;
       }
+      Boolean quiet = OptionsParsing.tryParseBoolean(context, "--quiet");
+      if (quiet != null) {
+        hasSetQuiet = true;
+        continue;
+      }
       String regex = OptionsParsing.tryParseSingle(context, "--regex", "r");
       if (regex != null && !regex.isEmpty()) {
         builder.setRegularExpression(regex);
@@ -104,7 +111,7 @@
       throw new RetraceAbortException();
     }
     if (!hasSetStackTrace) {
-      builder.setStackTrace(getStackTraceFromStandardInput());
+      builder.setStackTrace(getStackTraceFromStandardInput(hasSetQuiet));
     }
     if (!hasSetRegularExpression) {
       builder.setRegularExpression(DEFAULT_REGULAR_EXPRESSION);
@@ -238,8 +245,10 @@
     withMainProgramHandler(() -> run(args));
   }
 
-  private static List<String> getStackTraceFromStandardInput() {
-    System.out.println("Waiting for stack-trace input...");
+  private static List<String> getStackTraceFromStandardInput(boolean printWaitingMessage) {
+    if (!printWaitingMessage) {
+      System.out.println("Waiting for stack-trace input...");
+    }
     Scanner sc = new Scanner(new InputStreamReader(System.in, Charsets.UTF_8));
     List<String> readLines = new ArrayList<>();
     while (sc.hasNext()) {
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
index 85e6cbc..2074afa 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceCommandLineTests.java
@@ -7,6 +7,7 @@
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.StringContains.containsString;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.ToolHelper;
@@ -176,6 +177,12 @@
     assertTrue(processResult.stdout.startsWith(WAITING_MESSAGE));
   }
 
+  @Test
+  public void testHelpMessageWithQuiet() throws IOException {
+    ProcessResult processResult = runRetrace("", "", true, "--quiet");
+    assertFalse(processResult.stdout.startsWith(WAITING_MESSAGE));
+  }
+
   private final String nonMappableStackTrace =
       StringUtils.lines(
           "com.android.r8.R8Exception: Problem when compiling program",
