diff --git a/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelUiPreferencesPanel.java b/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelUiPreferencesPanel.java
index 62de8e1..7685146 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelUiPreferencesPanel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/labelui/client/LabelUiPreferencesPanel.java
@@ -20,6 +20,7 @@
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.event.dom.client.ChangeEvent;
 import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
@@ -34,6 +35,9 @@
     }
   }
 
+  private Label savedLabel;
+  private Timer hideTimer;
+
   LabelUiPreferencesPanel() {
     new RestApi("accounts").id("self")
         .view(Plugin.get().getPluginName(), "preferences")
@@ -63,6 +67,11 @@
     label.getElement().getStyle().setMarginTop(2, Unit.PX);
     final ListBox ui = new ListBox();
     p.add(ui);
+    savedLabel = new Label("Saved");
+    savedLabel.getElement().getStyle().setMarginLeft(5, Unit.PX);
+    savedLabel.getElement().getStyle().setMarginTop(2, Unit.PX);
+    savedLabel.setVisible(false);
+    p.add(savedLabel);
 
     for (PreferencesInfo.LabelUi v : PreferencesInfo.LabelUi.values()) {
       ui.addItem(v.name(), v.name());
@@ -78,6 +87,7 @@
     ui.addChangeHandler(new ChangeHandler() {
       @Override
       public void onChange(ChangeEvent event) {
+        savedLabel.setVisible(false);
         PreferencesInfo info = PreferencesInfo.create();
         info.ui(ui.getSelectedValue());
         new RestApi("accounts").id("self")
@@ -85,6 +95,7 @@
             .put(info, new AsyncCallback<PreferencesInfo>() {
               @Override
               public void onSuccess(PreferencesInfo result) {
+                showSavedStatus();
               }
 
               @Override
@@ -95,4 +106,20 @@
       }
     });
   }
+
+  private void showSavedStatus() {
+    if (hideTimer != null) {
+      hideTimer.cancel();
+      hideTimer = null;
+    }
+    savedLabel.setVisible(true);
+    hideTimer = new Timer() {
+      @Override
+      public void run() {
+        savedLabel.setVisible(false);
+        hideTimer = null;
+      }
+    };
+    hideTimer.schedule(1000);
+  }
 }
