diff --git a/R/posterdown_html.R b/R/posterdown_html.R
index a321229..87a6e05 100644
--- a/R/posterdown_html.R
+++ b/R/posterdown_html.R
@@ -23,19 +23,39 @@
 }
 
 
+#' @param url Target URL for the QR code
+#' @param logo Optional path to a logo image to place in the center of the QR code
+#' @param text Optional text/caption to display below the QR code (alias: \code{caption})
+#' @param caption Alias for \code{text}
 #' @description Print html code for a linked qr code to the given url
 #' @importFrom qrcode add_logo qr_code generate_svg
 #' @export
-qrlink <- function(url, logo = NULL) {
+qrlink <- function(url, logo = NULL, text = NULL, caption = text) {
   tmp <- tempfile(fileext = ".svg")
   qrcode <- qrcode::qr_code(url, ecl =  if(is.null(logo)) "L" else "H")
   if(!is.null(logo)) {
     qrcode <- qrcode::add_logo(qrcode, logo, ecl = "L")
   }
   qrcode::generate_svg(qrcode, tmp,  show = FALSE)
-  return(paste0( sprintf('<a class="qrcode" href="%s"><img class="qrcode">', url),
-                 gsub("\r?\n|\r", "", readChar(tmp, 1e7)),
-                 '</img></a>'
-         ))
+
+  cap_html <- if (!is.null(caption) && nchar(trimws(caption)) > 0) {
+    sprintf('<span class="qrcode-caption">%s</span>', caption)
+  } else {
+    ""
+  }
+
+  if (nchar(cap_html) > 0) {
+    return(paste0( '<div class="qrcode-container"><a class="qrcode" href="', url, '"><img class="qrcode">',
+                   gsub("\r?\n|\r", "", readChar(tmp, 1e7)),
+                   '</img></a>',
+                   cap_html,
+                   '</div>'
+           ))
+  } else {
+    return(paste0( sprintf('<a class="qrcode" href="%s"><img class="qrcode">', url),
+                   gsub("\r?\n|\r", "", readChar(tmp, 1e7)),
+                   '</img></a>'
+           ))
+  }
 }
 
