diff --git a/less/labels.less b/less/labels.less
index 3d863f7dfc67e44851efcd7c821e6d74a6ed5a6b..d7852d107757f9c0520365df38455c00a0b228f3 100644
--- a/less/labels.less
+++ b/less/labels.less
@@ -30,41 +30,17 @@
 // Colors
 // Contextual variations (linked labels get darker on :hover)
 .label-danger {
-  background-color: @label-danger-bg;
-  &[href] {
-    &:hover,
-    &:focus {
-      background-color: darken(@label-danger-bg, 10%);
-    }
-  }
+  .label-variant(@label-danger-bg);
 }
 
 .label-success {
-  background-color: @label-success-bg;
-  &[href] {
-    &:hover,
-    &:focus {
-      background-color: darken(@label-success-bg, 10%);
-    }
-  }
+  .label-variant(@label-success-bg);
 }
 
 .label-warning {
-  background-color: @label-warning-bg;
-  &[href] {
-    &:hover,
-    &:focus {
-      background-color: darken(@label-warning-bg, 10%);
-    }
-  }
+  .label-variant(@label-warning-bg);
 }
 
 .label-info {
-  background-color: @label-info-bg;
-  &[href] {
-    &:hover,
-    &:focus {
-      background-color: darken(@label-info-bg, 10%);
-    }
-  }
+  .label-variant(@label-info-bg);
 }
diff --git a/less/mixins.less b/less/mixins.less
index eb05623ac93bfb16220ab989aed92c9757344f20..c4e99f2e2693cc4e611c27f4ce56df9087293a4e 100644
--- a/less/mixins.less
+++ b/less/mixins.less
@@ -392,6 +392,18 @@
   }
 }
 
+// Labels
+// -------------------------
+.label-variant(@color) {
+  background-color: @color;
+  &[href] {
+    &:hover,
+    &:focus {
+      background-color: darken(@color, 10%);
+    }
+  }
+}
+
 // Navbar vertical align
 // -------------------------
 // Vertically center elements in the navbar.