diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index c24c43901..098759a61 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -642,7 +642,7 @@ bodyPartToBlocks (ListItem pPr _ _ _ parparts) =
     bodyPartToBlocks $ Paragraph pPr' parparts
 bodyPartToBlocks (Tbl _ _ _ []) =
   return $ para mempty
-bodyPartToBlocks (Tbl cap _ look (r:rs)) = do
+bodyPartToBlocks (Tbl cap _ look parts@(r:rs)) = do
   let caption = text cap
       (hdr, rows) = case firstRowFormatting look of
         True | null rs -> (Nothing, [r])
@@ -651,10 +651,14 @@ bodyPartToBlocks (Tbl cap _ look (r:rs)) = do
 
   cells <- mapM rowToBlocksList rows
 
-  let width = case cells of
-        r':_ -> length r'
-        -- shouldn't happen
-        []   -> 0
+  let width = maybe 0 maximum $ nonEmpty $ map rowLength parts
+      -- Data.List.NonEmpty is not available with ghc 7.10 so we roll out
+      -- our own, see
+      -- https://github.com/jgm/pandoc/pull/4361#issuecomment-365416155
+      nonEmpty [] = Nothing
+      nonEmpty l  = Just l
+      rowLength :: Row -> Int
+      rowLength (Row c) = length c
 
   hdrCells <- case hdr of
     Just r' -> rowToBlocksList r'
diff --git a/test/Tests/Readers/Docx.hs b/test/Tests/Readers/Docx.hs
index 89a605bf7..9c9a8179b 100644
--- a/test/Tests/Readers/Docx.hs
+++ b/test/Tests/Readers/Docx.hs
@@ -272,6 +272,10 @@ tests = [ testGroup "inlines"
             "tables with one row"
             "docx/table_one_row.docx"
             "docx/table_one_row.native"
+          , testCompare
+            "tables with variable width"
+            "docx/table_variable_width.docx"
+            "docx/table_variable_width.native"
           , testCompare
             "code block"
             "docx/codeblock.docx"
diff --git a/test/docx/table_variable_width.docx b/test/docx/table_variable_width.docx
new file mode 100644
index 000000000..899357968
Binary files /dev/null and b/test/docx/table_variable_width.docx differ
diff --git a/test/docx/table_variable_width.native b/test/docx/table_variable_width.native
new file mode 100644
index 000000000..9d3b961df
--- /dev/null
+++ b/test/docx/table_variable_width.native
@@ -0,0 +1,13 @@
+[Table [] [AlignDefault,AlignDefault,AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0,0.0,0.0]
+ [[]
+ ,[]
+ ,[Plain [Str "h3"]]
+ ,[Plain [Str "h4"]]
+ ,[Plain [Str "h5"]]]
+ [[[Plain [Str "c11"]]
+  ,[]
+  ,[]]
+ ,[[]
+  ,[Plain [Str "c22"]]
+  ,[Plain [Str "c23"]]
+  ,[]]]]