diff --git a/src/main/java/com/googlesource/gerrit/plugins/labelui/LabelUi.java b/src/main/java/com/googlesource/gerrit/plugins/labelui/LabelUi.java
index 32ff7fa..918f96c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/labelui/LabelUi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/labelui/LabelUi.java
@@ -15,5 +15,5 @@
 package com.googlesource.gerrit.plugins.labelui;
 
 public enum LabelUi {
-  DEFAULT, USER_LABEL_TABLE
+  DEFAULT, LABEL_USER_TABLE, USER_LABEL_TABLE
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelPanel.java b/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelPanel.java
index 76fc72c..3890648 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelPanel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelPanel.java
@@ -67,6 +67,9 @@
             ChangeInfo change =
                 panel.getObject(GerritUiExtensionPoint.Key.CHANGE_INFO).cast();
             switch (result.ui()) {
+              case LABEL_USER_TABLE:
+                displayLabelUserTable(change);
+                break;
               case USER_LABEL_TABLE:
                 displayUserLabelTable(change);
                 break;
@@ -83,6 +86,39 @@
         });
   }
 
+  private void displayLabelUserTable(ChangeInfo change) {
+    Set<String> labelNames = getLabelNames(change);
+    Map<String, AccountInfo> users = getUserMap(labelNames, change);
+    Map<Integer, VotableInfo> votable = votable(change);
+    Grid g = createGrid(labelNames.size() + 1, users.size() + 1);
+
+    int i = 1;
+    for (AccountInfo account : users.values()) {
+      g.setWidget(0, i, createUserWidget(account));
+      i++;
+    }
+
+    i = 1;
+    for (String labelName : labelNames) {
+      g.setWidget(i, 0, createLabelLabel(change.label(labelName)));
+
+      int j = 1;
+      for (AccountInfo account : users.values()) {
+        LabelInfo label = change.label(labelName);
+        ApprovalInfo ai = label.forUser(account._accountId());
+        g.setWidget(i, j, createLabelValueWidget(label, ai));
+
+        if (!votable.get(account._accountId()).isVotable(labelName)) {
+          formatNonVotable(g, i, j);
+        }
+        j++;
+      }
+      i++;
+    }
+
+    add(g);
+  }
+
   private void displayUserLabelTable(ChangeInfo change) {
     Set<String> labelNames = getLabelNames(change);
     Map<String, AccountInfo> users = getUserMap(labelNames, change);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/labelui/client/PreferencesInfo.java b/src/main/java/com/googlesource/gerrit/plugins/labelui/client/PreferencesInfo.java
index d764ef2..76ab746 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/labelui/client/PreferencesInfo.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/labelui/client/PreferencesInfo.java
@@ -18,7 +18,7 @@
 
 public class PreferencesInfo extends JavaScriptObject {
   public static enum LabelUi {
-    DEFAULT, USER_LABEL_TABLE
+    DEFAULT, LABEL_USER_TABLE, USER_LABEL_TABLE
   }
 
   public static PreferencesInfo create() {
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
index 511b6d6..117ae7d 100644
--- a/src/main/resources/Documentation/about.md
+++ b/src/main/resources/Documentation/about.md
@@ -12,6 +12,13 @@
 
 ![DefaultApprovalsScreenshot](images/default-approvals.png)
 
+### `LABEL_USER_TABLE`
+
+Renders the labels/approvals as a table with one row per label and
+users as columns:
+
+![ApprovalTableScreenshot](images/label-user-table.png)
+
 ### `USER_LABEL_TABLE`
 
 Renders the labels/approvals as a table with one row per user and
diff --git a/src/main/resources/Documentation/images/label-user-table.png b/src/main/resources/Documentation/images/label-user-table.png
new file mode 100644
index 0000000..c313fec
--- /dev/null
+++ b/src/main/resources/Documentation/images/label-user-table.png
Binary files differ
diff --git a/src/main/resources/Documentation/images/preferences.png b/src/main/resources/Documentation/images/preferences.png
index 3ab252e..d804f7a 100644
--- a/src/main/resources/Documentation/images/preferences.png
+++ b/src/main/resources/Documentation/images/preferences.png
Binary files differ
diff --git a/src/main/resources/Documentation/rest-api-accounts.md b/src/main/resources/Documentation/rest-api-accounts.md
index bc69c71..3265b13 100644
--- a/src/main/resources/Documentation/rest-api-accounts.md
+++ b/src/main/resources/Documentation/rest-api-accounts.md
@@ -68,7 +68,7 @@
 
 * _ui_: The control that should be displayed on the change screen to
   render the labels/approvals. Possible values are `DEFAULT` and
-  `USER_LABEL_TABLE`.
+  `LABEL_USER_TABLE`, `USER_LABEL_TABLE`.
 
 SEE ALSO
 --------
