diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index 51a4ec537ea0c91606d7fde18084d4c295fb6515..f4ffc6cab96aac85badb9df5530f2aa736629bdd 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -698,6 +698,10 @@ is not specified, the value of the @var{DISPLAY} environment variable is used
 For DXVA2, this option should contain the number of the display adapter to use.
 If this option is not specified, the default adapter is used.
 @end table
+
+@item -hwaccels
+List all hardware acceleration methods supported in this build of ffmpeg.
+
 @end table
 
 @section Audio Options
diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
index 40a6e55512023f79a7bba5d3d7a8008a1925a720..c5e6624a16e3c7d000b1adfaae34b17ba09e74dd 100644
--- a/ffmpeg_opt.c
+++ b/ffmpeg_opt.c
@@ -166,6 +166,18 @@ static void init_options(OptionsContext *o)
     o->accurate_seek  = 1;
 }
 
+static int show_hwaccels(void *optctx, const char *opt, const char *arg)
+{
+    int i;
+
+    printf("Hardware acceleration methods:\n");
+    for (i = 0; i < FF_ARRAY_ELEMS(hwaccels) - 1; i++) {
+        printf("%s\n", hwaccels[i].name);
+    }
+    printf("\n");
+    return 0;
+}
+
 /* return a copy of the input with the stream specifiers removed from the keys */
 static AVDictionary *strip_specifiers(AVDictionary *dict)
 {
@@ -3241,6 +3253,8 @@ const OptionDef options[] = {
 #if CONFIG_VDA || CONFIG_VIDEOTOOLBOX
     { "videotoolbox_pixfmt", HAS_ARG | OPT_STRING | OPT_EXPERT, { &videotoolbox_pixfmt}, "" },
 #endif
+    { "hwaccels",         OPT_EXIT,                                              { .func_arg = show_hwaccels },
+        "show available HW acceleration methods" },
     { "autorotate",       HAS_ARG | OPT_BOOL | OPT_SPEC |
                           OPT_EXPERT | OPT_INPUT,                                { .off = OFFSET(autorotate) },
         "automatically insert correct rotate filters" },