diff --git a/R/group_rows.R b/R/group_rows.R
index c266908..2684782 100644
--- a/R/group_rows.R
+++ b/R/group_rows.R
@@ -19,6 +19,10 @@
 #' documents.
 #' @param escape A T/F value showing whether special characters should be
 #' escaped.
+#' @param align Adjust justification of group_label in latex only. Value should be "c" for
+#' centered on row, "r" for right justification, or "l" for left justification. Default
+#' Value is "l"  If using html, the alignment can be set by using the label_row_css
+#' parameter.
 #' @param colnum A numeric that determines how many columns the text should span.
 #' The default setting will have the text span the entire length.
 #'
@@ -32,7 +36,7 @@
                        index = NULL,
                        label_row_css = "border-bottom: 1px solid;",
                        latex_gap_space = "0.3em",
-                       escape = TRUE, colnum = NULL) {
+                       escape = TRUE, align = "l", colnum = NULL) {
 
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
@@ -43,18 +47,22 @@
   }
   if (is.null(index)) {
     if (kable_format == "html") {
+      if(!missing(align)) warning("Align parameter is not used in HTML Mode,
+                                    use label_row_css instead.")
       return(group_rows_html(kable_input, group_label, start_row, end_row,
                              label_row_css, escape, colnum))
     }
     if (kable_format == "latex") {
       return(group_rows_latex(kable_input, group_label, start_row, end_row,
-                              latex_gap_space, escape, colnum))
+                              latex_gap_space, escape, align, colnum))
     }
   } else {
     index <- group_row_index_translator(index)
     out <- kable_input
     if (kable_format == "html") {
       for (i in 1:nrow(index)) {
+        if(!missing(align)) warning("Align parameter is not used in HTML Mode,
+                                    use label_row_css instead.")
         out <- group_rows_html(out, index$header[i],
                                index$start[i], index$end[i],
                                label_row_css, escape, colnum)
@@ -64,7 +72,7 @@
       for (i in 1:nrow(index)) {
         out <- group_rows_latex(out, index$header[i],
                                index$start[i], index$end[i],
-                               latex_gap_space, escape, colnum)
+                               latex_gap_space, escape, align, colnum)
       }
     }
     return(out)
@@ -119,7 +127,7 @@
 }
 
 group_rows_latex <- function(kable_input, group_label, start_row, end_row,
-                             gap_space, escape, colnum) {
+                             gap_space, escape, align, colnum) {
   table_info <- magic_mirror(kable_input)
   out <- enc2utf8(as.character(kable_input))
 
@@ -142,14 +150,14 @@
       "\\\\multicolumn{", ifelse(is.null(colnum),
                                  table_info$ncol,
                                  colnum),
-      "}{l}{\\\\textbf{", group_label,
+      "}{", align, "}{\\\\textbf{", group_label,
       "}}\\\\\\\\\n",
       rowtext
     )
   } else {
     rowtext <- paste0("\\\\hline\n", rowtext)
     new_rowtext <- paste0(
-      "\\\\hline\n\\\\multicolumn{", table_info$ncol, "}{l}{\\\\textbf{",
+      "\\\\hline\n\\\\multicolumn{", table_info$ncol, "}{", align,"}{\\\\textbf{",
       group_label, "}}\\\\\\\\\n", rowtext
     )
   }
diff --git a/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd b/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd
index 06439c8..7c9f809 100644
--- a/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd
+++ b/tests/visual_tests/add_indent_and_group_rows_pdf.Rmd
@@ -30,7 +30,7 @@
   dplyr::mutate(wt = paste0("%", mpg)) %>%
 kable(format = "latex", booktabs = T) %>%
   kable_styling() %>%
-  group_rows("Group 1", 4, 7) %>%
+  group_rows("Group 1", 4, 7, align='r',colnum=3) %>%
   group_rows("Group 2", 8, 10)
 ```
 
@@ -39,7 +39,7 @@
 kable(format = "latex", booktabs = T) %>%
   kable_styling() %>%
   group_rows("Group 1", 4, 7) %>%
-  group_rows("Group 2", 8, 10) %>%
+  group_rows("Group 2", 8, 10, align='c') %>%
   group_rows("Group 2", 20, 22)
 
 aa <- mtcars
