diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb
index e9a512e70cf10c8ddf8ca5a88b085b267d1c54cb..7428c3f229684c50e7b4192cf64212106f768307 100644
--- a/app/controllers/admin/accounts_controller.rb
+++ b/app/controllers/admin/accounts_controller.rb
@@ -89,7 +89,8 @@ module Admin
         :username,
         :display_name,
         :email,
-        :ip
+        :ip,
+        :staff
       )
     end
   end
diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb
index 9443934b304b0636d5a2c2620bda60675793f467..7fe3def987faf9bf4b87f669f9e2a305ff7defbd 100644
--- a/app/helpers/admin/filter_helper.rb
+++ b/app/helpers/admin/filter_helper.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 module Admin::FilterHelper
-  ACCOUNT_FILTERS = %i(local remote by_domain silenced suspended recent username display_name email ip).freeze
+  ACCOUNT_FILTERS = %i(local remote by_domain silenced suspended recent username display_name email ip staff).freeze
   REPORT_FILTERS = %i(resolved account_id target_account_id).freeze
   INVITE_FILTER = %i(available expired).freeze
 
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index 18987236820b2dfb8ed6166e6af763a964f9b98d..dc7a03039fe4f6ddc8de9ecea64328f4aee95382 100644
--- a/app/models/account_filter.rb
+++ b/app/models/account_filter.rb
@@ -45,6 +45,8 @@ class AccountFilter
       else
         Account.default_scoped
       end
+    when 'staff'
+      accounts_with_users.merge User.staff
     else
       raise "Unknown filter: #{key}"
     end
diff --git a/app/views/admin/accounts/_account.html.haml b/app/views/admin/accounts/_account.html.haml
index 5265d77f66c7ade73b795344e0efdf7ac59acaab..598f6cddd0b4510e7b785adc853143ca1a7e90cc 100644
--- a/app/views/admin/accounts/_account.html.haml
+++ b/app/views/admin/accounts/_account.html.haml
@@ -4,22 +4,11 @@
   %td.domain
     - unless account.local?
       = link_to account.domain, admin_accounts_path(by_domain: account.domain)
-  %td.protocol
-    - unless account.local?
-      = account.protocol.humanize
-  %td.confirmed
-    - if account.local?
-      - if account.user_confirmed?
-        %i.fa.fa-check
-      - else
-        %i.fa.fa-times
-  %td.subscribed
+  %td
     - if account.local?
-      = t('admin.accounts.location.local')
-    - elsif account.subscribed?
-      %i.fa.fa-check
+      = t("admin.accounts.roles.#{account.user&.role}")
     - else
-      %i.fa.fa-times
+      = account.protocol.humanize
   %td
     = table_link_to 'circle', t('admin.accounts.web'), web_path("accounts/#{account.id}")
     = table_link_to 'globe', t('admin.accounts.public'), TagManager.instance.url_for(account)
diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml
index 27a0682d8bf50c91bdd3055e55978413d10e7e82..6aa39a80a0d92967f21440a45c6cdac8c369d655 100644
--- a/app/views/admin/accounts/index.html.haml
+++ b/app/views/admin/accounts/index.html.haml
@@ -30,6 +30,11 @@
           = filter_link_to t('admin.accounts.moderation.suspended'), {suspended: nil}, {suspended: '1'}
         - else
           = filter_link_to t('admin.accounts.moderation.suspended'), suspended: '1'
+  .filter-subset
+    %strong= t('admin.accounts.role')
+    %ul
+      %li= filter_link_to t('admin.accounts.moderation.all'), staff: nil
+      %li= filter_link_to t('admin.accounts.roles.staff'), staff: '1'
   .filter-subset
     %strong= t('admin.accounts.order.title')
     %ul
@@ -56,9 +61,7 @@
       %tr
         %th= t('admin.accounts.username')
         %th= t('admin.accounts.domain')
-        %th= t('admin.accounts.protocol')
-        %th= t('admin.accounts.confirmed')
-        %th= fa_icon 'paper-plane-o'
+        %th
         %th
     %tbody
       = render @accounts
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index ddb1cf15d91bd74be2c2af97c1ffcb22cf44cb53..5f5d0995cde8dd7c5a1fb2fbc08b7700fd06d8d5 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -104,7 +104,7 @@
     - else
       = link_to t('admin.accounts.perform_full_suspension'), admin_account_suspension_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:suspend, @account)
 
-- unless @account.local?
+- if !@account.local? && @account.hub_url.present?
   %hr
   %h3 OStatus
 
@@ -132,6 +132,7 @@
       - if @account.subscribed?
         = link_to t('admin.accounts.unsubscribe'), unsubscribe_admin_account_path(@account.id), method: :post, class: 'button negative' if can?(:unsubscribe, @account)
 
+- if !@account.local? && @account.inbox_url.present?
   %hr
   %h3 ActivityPub
 
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 44c021bd5ac5a3f3304aa4774e639d0b642e9df4..cc22d02ac94a85ef2b067c909a147c875bd0a290 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -116,6 +116,7 @@ en:
       roles:
         admin: Administrator
         moderator: Moderator
+        staff: Staff
         user: User
       salmon_url: Salmon URL
       search: Search