diff --git a/cmdutils.c b/cmdutils.c
index 90ad48f620635868639477a3ababccc26d4ed35f..1fbd73cf84e4813450a7084662602b7924a712c5 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -1518,6 +1518,18 @@ int show_filters(void *optctx, const char *opt, const char *arg)
     return 0;
 }
 
+void show_colors(void *optctx, const char *opt, const char *arg)
+{
+    const char *name;
+    const uint8_t *rgb;
+    int i;
+
+    printf("%-32s #RRGGBB\n", "name");
+
+    for (i = 0; name = av_get_known_color_name(i, &rgb); i++)
+        printf("%-32s #%02x%02x%02x\n", name, rgb[0], rgb[1], rgb[2]);
+}
+
 int show_pix_fmts(void *optctx, const char *opt, const char *arg)
 {
     const AVPixFmtDescriptor *pix_desc = NULL;
diff --git a/cmdutils.h b/cmdutils.h
index 49bb7657248d5a8a4a01e0ecd8ec44390a9f22db..2538f05d980ee64a1b2ac0236f2c1007b7e64be9 100644
--- a/cmdutils.h
+++ b/cmdutils.h
@@ -488,6 +488,12 @@ int show_layouts(void *optctx, const char *opt, const char *arg);
  */
 int show_sample_fmts(void *optctx, const char *opt, const char *arg);
 
+/**
+ * Print a listing containing all the color names and values recognized
+ * by the program.
+ */
+void show_colors(void *optctx, const char *opt, const char *arg);
+
 /**
  * Return a positive value if a line read from standard input
  * starts with [yY], otherwise return 0.
diff --git a/cmdutils_common_opts.h b/cmdutils_common_opts.h
index 9c265fc5f7648cadbdcb03436c9a8f7f566e5fd5..69663039e0bc98ebf6bb2d5e9642b434a4bf9f6a 100644
--- a/cmdutils_common_opts.h
+++ b/cmdutils_common_opts.h
@@ -14,6 +14,7 @@
     { "pix_fmts"   , OPT_EXIT, {.func_arg = show_pix_fmts },    "show available pixel formats" },
     { "layouts"    , OPT_EXIT, {.func_arg = show_layouts  },    "show standard channel layouts" },
     { "sample_fmts", OPT_EXIT, {.func_arg = show_sample_fmts }, "show available audio sample formats" },
+    { "colors"     , OPT_EXIT, {.func_arg = show_colors },      "show available color names" },
     { "loglevel"   , HAS_ARG,  {.func_arg = opt_loglevel},      "set logging level", "loglevel" },
     { "v",           HAS_ARG,  {.func_arg = opt_loglevel},      "set logging level", "loglevel" },
     { "report"     , 0,        {(void*)opt_report}, "generate a report" },
diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi
index 6d453ed6939f5be04839968570b0c2fc93487612..617af2fa5eeb44f36d19e26a7a54a24299ccb489 100644
--- a/doc/fftools-common-opts.texi
+++ b/doc/fftools-common-opts.texi
@@ -128,6 +128,9 @@ Show available sample formats.
 @item -layouts
 Show channel names and standard channel layouts.
 
+@item -colors
+Show recognized color names.
+
 @item -loglevel [repeat+]@var{loglevel} | -v [repeat+]@var{loglevel}
 Set the logging level used by the library.
 Adding "repeat+" indicates that repeated log output should not be compressed