diff --git a/R/add_header_above.R b/R/add_header_above.R
index b561189..70e0783 100644
--- a/R/add_header_above.R
+++ b/R/add_header_above.R
@@ -39,6 +39,8 @@
 #' separated by space. Default is 3.
 #' @param extra_css An HTML only option. CSS defined here will be send to the
 #' td cell.
+#' @param include_empty Whether empty cells in HTML should also be styled.
+#' Default is FALSE.
 #'
 #' @examples x <- knitr::kable(head(mtcars), "html")
 #' # Add a row of header with 3 columns on the top of the table. The column
@@ -52,7 +54,7 @@
                              align = "c", color = NULL, background = NULL,
                              font_size = NULL, angle = NULL,
                              escape = TRUE, line = TRUE, line_sep = 3,
-                             extra_css = NULL) {
+                             extra_css = NULL, include_empty = FALSE) {
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
     warning("Please specify format in kable. kableExtra can customize either ",
@@ -61,16 +63,16 @@
     return(kable_input)
   }
   if (kable_format == "html") {
-    return(htmlTable_add_header_above(kable_input, header, bold, italic,
-                                      monospace, underline, strikeout,
-                                      align, color, background, font_size,
-                                      angle, escape, line, line_sep, extra_css))
+    return(htmlTable_add_header_above(
+      kable_input, header, bold, italic, monospace, underline, strikeout,
+      align, color, background, font_size, angle, escape, line, line_sep,
+      extra_css, include_empty
+    ))
   }
   if (kable_format == "latex") {
-    return(pdfTable_add_header_above(kable_input, header, bold, italic,
-                                     monospace, underline, strikeout,
-                                     align, color, background,
-                                     font_size, angle, escape, line, line_sep))
+    return(pdfTable_add_header_above(
+      kable_input, header, bold, italic, monospace, underline, strikeout,
+      align, color, background, font_size, angle, escape, line, line_sep))
   }
 }
 
@@ -79,7 +81,7 @@
                                        monospace, underline, strikeout,
                                        align, color, background, font_size,
                                        angle, escape, line, line_sep,
-                                       extra_css) {
+                                       extra_css, include_empty) {
   if (is.null(header)) return(kable_input)
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_kable_as_xml(kable_input)
@@ -101,7 +103,7 @@
 
   new_header_row <- htmlTable_new_header_generator(
     header, bold, italic, monospace, underline, strikeout, align,
-    color, background, font_size, angle, line, line_sep, extra_css
+    color, background, font_size, angle, line, line_sep, extra_css, include_empty
   )
   xml_add_child(kable_xml_thead, new_header_row, .where = 0)
   out <- as_kable_xml(kable_xml)
@@ -133,7 +135,8 @@
 htmlTable_new_header_generator <- function(header_df, bold, italic, monospace,
                                            underline, strikeout, align,
                                            color, background, font_size,
-                                           angle, line, line_sep, extra_css) {
+                                           angle, line, line_sep, extra_css,
+                                           include_empty) {
   if (align %in% c("l", "c", "r")) {
     align <- switch(align, r = "right", c = "center", l = "left")
   }
@@ -170,11 +173,16 @@
                     "deg); -o-transform: rotate(", angle,
                     "deg); transform: rotate(", angle,
                     "deg); display: inline-block; ")
-    header_df$header <- ifelse(
-      trimws(header_df$header) == "",
-      header_df$header,
-      paste0('<span style="', angle, '">', header_df$header, '</span>')
-    )
+    if (include_empty) {
+      header_df$header <- paste0('<span style="', angle, '">',
+                                 header_df$header, '</span>')
+    } else {
+      header_df$header <- ifelse(
+        trimws(header_df$header) == "",
+        header_df$header,
+        paste0('<span style="', angle, '">', header_df$header, '</span>')
+      )
+    }
   }
 
   line <- ifelse(ez_rep(line, nrow(header_df)),
diff --git a/man/add_header_above.Rd b/man/add_header_above.Rd
index 28ef579..ee4ad8c 100644
--- a/man/add_header_above.Rd
+++ b/man/add_header_above.Rd
@@ -8,7 +8,7 @@
   italic = FALSE, monospace = FALSE, underline = FALSE,
   strikeout = FALSE, align = "c", color = NULL, background = NULL,
   font_size = NULL, angle = NULL, escape = TRUE, line = TRUE,
-  line_sep = 3, extra_css = NULL)
+  line_sep = 3, extra_css = NULL, include_empty = FALSE)
 }
 \arguments{
 \item{kable_input}{Output of \code{knitr::kable()} with \code{format} specified}
@@ -61,6 +61,9 @@
 
 \item{extra_css}{An HTML only option. CSS defined here will be send to the
 td cell.}
+
+\item{include_empty}{Whether empty cells in HTML should also be styled.
+Default is FALSE.}
 }
 \description{
 Tables with multiple rows of header rows are extremely useful
