diff --git a/R/ggplotly.R b/R/ggplotly.R
index 1c2073f9b6..a311761289 100644
--- a/R/ggplotly.R
+++ b/R/ggplotly.R
@@ -922,6 +922,7 @@ gg2list <- function(p, width = NULL, height = NULL,
           lay[names(plot$facet$params[[col_vars]])]
         ), collapse = br()
       )
+      if (length(names(plot$facet$params[[col_vars]])) == 0) col_txt <- ""
       if (is_blank(theme[["strip.text.x"]])) col_txt <- ""
       if (inherits(plot$facet, "FacetGrid") && lay$ROW != 1) col_txt <- ""
       if (robust_nchar(col_txt) > 0) {
@@ -934,22 +935,27 @@ gg2list <- function(p, width = NULL, height = NULL,
         strip <- make_strip_rect(xdom, ydom, theme, "top")
         gglayout$shapes <- c(gglayout$shapes, strip)
       }
-      row_txt <- paste(
-        plot$facet$params$labeller(
-          lay[names(plot$facet$params$rows)]
-        ), collapse = br()
-      )
-      if (is_blank(theme[["strip.text.y"]])) row_txt <- ""
-      if (inherits(plot$facet, "FacetGrid") && lay$COL != nCols) row_txt <- ""
-      if (robust_nchar(row_txt) > 0) {
-        row_lab <- make_label(
-          row_txt, x = max(xdom), y = mean(ydom),
-          el = theme[["strip.text.y"]] %||% theme[["strip.text"]],
-          xanchor = "left", yanchor = "middle"
+      # Only FacetGrid has no cols
+      if (inherits(plot$facet, "FacetGrid")) {
+        row_txt <- paste(
+          plot$facet$params$labeller(
+            lay[names(plot$facet$params$rows)]
+          ),
+          collapse = br()
         )
-        gglayout$annotations <- c(gglayout$annotations, row_lab)
-        strip <- make_strip_rect(xdom, ydom, theme, "right")
-        gglayout$shapes <- c(gglayout$shapes, strip)
+        if (length(names(plot$facet$params$rows)) == 0) row_txt <- ""
+        if (is_blank(theme[["strip.text.y"]])) row_txt <- ""
+        if (lay$COL != nCols) row_txt <- ""
+        if (robust_nchar(row_txt) > 0) {
+          row_lab <- make_label(
+            row_txt, x = max(xdom), y = mean(ydom),
+            el = theme[["strip.text.y"]] %||% theme[["strip.text"]],
+            xanchor = "left", yanchor = "middle"
+          )
+          gglayout$annotations <- c(gglayout$annotations, row_lab)
+          strip <- make_strip_rect(xdom, ydom, theme, "right")
+          gglayout$shapes <- c(gglayout$shapes, strip)
+        }  
       }
     }
   } # end of panel loop
diff --git a/tests/testthat/test-ggplot-facets.R b/tests/testthat/test-ggplot-facets.R
index d8fd07c627..36d7a35af8 100644
--- a/tests/testthat/test-ggplot-facets.R
+++ b/tests/testthat/test-ggplot-facets.R
@@ -131,6 +131,47 @@ test_that("facet_grid translates simple labeller function", {
   )
 })
 
+g <- ggplot(mtcars, aes(mpg, wt)) + 
+  geom_point() +
+  facet_wrap( ~ vs + am, labeller = function(x) label_both(x, multi_line = FALSE))
+
+test_that("facet_wrap accounts for multi_line=FALSE", {
+  info <- expect_doppelganger_built(g, "facet_wrap-labeller-no-multi-line")
+  txt <- sapply(info$layout$annotations, "[[", "text")
+  expect_true(all(!grepl("expression(list())", txt, fixed = TRUE)))
+  expect_true(
+    all(c("vs, am: 0, 0", "vs, am: 0, 1", "vs, am: 1, 0", "vs, am: 1, 1") %in% txt)
+  )
+  expect_identical(length(txt), 6L)
+})
+
+g <- ggplot(mtcars, aes(mpg, wt)) + 
+  geom_point()
+
+g_no_col <- g +
+  facet_grid(vs + am ~ ., labeller = function(x) label_both(x, multi_line = FALSE))
+
+g_no_row <- g +
+  facet_grid(. ~ vs + am, labeller = function(x) label_both(x, multi_line = FALSE))
+
+test_that("facet_grid accounts for multi_line=FALSE", {
+  info <- expect_doppelganger_built(g_no_col, "facet_grid-labeller-no-col")
+  txt <- sapply(info$layout$annotations, "[[", "text")
+  expect_true(all(!grepl("expression(list())", txt, fixed = TRUE)))
+  expect_true(
+    all(c("vs, am: 0, 0", "vs, am: 0, 1", "vs, am: 1, 0", "vs, am: 1, 1") %in% txt)
+  )
+  expect_identical(length(txt), 6L)
+  
+  info <- expect_doppelganger_built(g_no_row, "facet_grid-labeller-no-col")
+  txt <- sapply(info$layout$annotations, "[[", "text")
+  expect_true(all(!grepl("expression(list())", txt, fixed = TRUE)))
+  expect_true(
+    all(c("vs, am: 0, 0", "vs, am: 0, 1", "vs, am: 1, 0", "vs, am: 1, 1") %in% txt)
+  )
+  expect_identical(length(txt), 6L)
+})
+
 p <- economics %>% tidyr::gather(variable, value, -date) %>% 
   qplot(data = ., date, value) + 
   facet_wrap(~variable, scale = "free_y", ncol = 2)