diff --git a/gr-serviceuser/gr-serviceuser-create_html.js b/gr-serviceuser/gr-serviceuser-create_html.js
index 338ae7e..2a9823b 100644
--- a/gr-serviceuser/gr-serviceuser-create_html.js
+++ b/gr-serviceuser/gr-serviceuser-create_html.js
@@ -25,10 +25,15 @@
         margin: 2em auto;
         max-width: 50em;
       }
+
+      .heading {
+        font-size: x-large;
+        font-weight: 500;
+      }
     </style>
     <main class="gr-form-styles read-only">
       <div class="topHeader">
-        <h1 class="heading-1">Create Service User</h1>
+        <h1 class="heading">Create Service User</h1>
       </div>
       <fieldset id="infoMessage"
            hidden$="[[!_infoMessageEnabled]]">
diff --git a/gr-serviceuser/gr-serviceuser-detail_html.js b/gr-serviceuser/gr-serviceuser-detail_html.js
index ecd2505..e69cf9b 100644
--- a/gr-serviceuser/gr-serviceuser-detail_html.js
+++ b/gr-serviceuser/gr-serviceuser-detail_html.js
@@ -21,6 +21,11 @@
     <style include="gr-font-styles"></style>
     <style include="gr-form-styles"></style>
     <style>
+      .heading {
+        font-size: x-large;
+        font-weight: 500;
+      }
+
       div.serviceuser-detail {
         margin: 2em auto;
         max-width: 50em;
@@ -67,7 +72,7 @@
         </div>
         <div id="loadedContent"
              class$="[[_computeLoadingClass(_loading)]]">
-          <h1 id="Title" class="heading-1">Service User "[[_serviceUser.name]]"</h1>
+          <h1 id="Title" class="heading">Service User "[[_serviceUser.name]]"</h1>
           <div id="form">
             <fieldset>
               <fieldset>
diff --git a/gr-serviceuser/gr-serviceuser-list_html.js b/gr-serviceuser/gr-serviceuser-list_html.js
index b0a04aa..c69b4ff 100644
--- a/gr-serviceuser/gr-serviceuser-list_html.js
+++ b/gr-serviceuser/gr-serviceuser-list_html.js
@@ -24,6 +24,11 @@
         padding: 8px;
       }
 
+      .heading {
+        font-size: x-large;
+        font-weight: 500;
+      }
+
       #topContainer {
         align-items: center;
         display: flex;
@@ -32,11 +37,10 @@
         margin: 0 1em;
       }
     </style>
-    <div class="topHeader">
-      <h1 class="heading-1">Service Users</h1>
-    </div>
     <div id="topContainer">
-      <div></div>
+      <div>
+        <h1 class="heading">Service Users</h1>
+      </div>
       <div id="createNewContainer"
            class$="[[_computeCreateClass(createNew)]]"
            hidden$="[[!_canCreate]]">
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java
index 89510bb..5b5df2f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/Module.java
@@ -25,6 +25,7 @@
 import com.google.gerrit.extensions.registration.DynamicMap;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.RestApiModule;
+import com.google.gerrit.extensions.webui.TopMenu;
 import com.google.gerrit.server.git.validators.CommitValidationListener;
 import com.google.gerrit.server.project.ProjectLevelConfig;
 import com.google.inject.AbstractModule;
@@ -38,6 +39,7 @@
     bind(CapabilityDefinition.class)
         .annotatedWith(Exports.named(CreateServiceUserCapability.ID))
         .to(CreateServiceUserCapability.class);
+    DynamicSet.bind(binder(), TopMenu.class).to(ServiceUserTopMenu.class);
     DynamicSet.bind(binder(), GitReferenceUpdatedListener.class).to(RefUpdateListener.class);
     DynamicSet.bind(binder(), CommitValidationListener.class).to(ValidateServiceUserCommits.class);
     install(new FactoryModuleBuilder().build(CreateServiceUserNotes.Factory.class));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserTopMenu.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserTopMenu.java
new file mode 100644
index 0000000..eb2606d
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserTopMenu.java
@@ -0,0 +1,75 @@
+// Copyright (C) 2022 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.serviceuser;
+
+import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.annotations.RequiresCapability;
+import com.google.gerrit.extensions.api.access.PluginPermission;
+import com.google.gerrit.extensions.client.MenuItem;
+import com.google.gerrit.extensions.webui.TopMenu;
+import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.permissions.PermissionBackend;
+import com.google.gerrit.server.permissions.PermissionBackendException;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import java.util.ArrayList;
+import java.util.List;
+
+@RequiresCapability("printHello")
+public class ServiceUserTopMenu implements TopMenu {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+  private final String pluginName;
+  private final Provider<CurrentUser> userProvider;
+  private final List<MenuEntry> menuEntries;
+  private final PermissionBackend permissionBackend;
+
+  @Inject
+  public ServiceUserTopMenu(
+      @PluginName String pluginName,
+      Provider<CurrentUser> userProvider,
+      PermissionBackend permissionBackend) {
+    this.pluginName = pluginName;
+    this.userProvider = userProvider;
+    this.permissionBackend = permissionBackend;
+    menuEntries = new ArrayList<>();
+
+    try {
+      if (canSeeMenuEntry()) {
+        menuEntries.add(
+            new MenuEntry(
+                "Browse",
+                Lists.newArrayList(new MenuItem("Service Users", "/x/serviceuser/list"))));
+      }
+    } catch (PermissionBackendException e) {
+      logger.atSevere().withCause(e).log("Unable to compute permissions.");
+    }
+  }
+
+  private boolean canSeeMenuEntry() throws PermissionBackendException {
+    if (userProvider.get().isIdentifiedUser()) {
+      return permissionBackend
+          .currentUser()
+          .test(new PluginPermission(pluginName, CreateServiceUserCapability.ID));
+    }
+    return false;
+  }
+
+  @Override
+  public List<MenuEntry> getEntries() {
+    return menuEntries;
+  }
+}
