diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml
index 2a9b4694e7b10554069f68713bd95f4a79ad7689..bdc5bdabb21175023becdc6675e4165cae4609f4 100644
--- a/app/views/admin/users/show.html.haml
+++ b/app/views/admin/users/show.html.haml
@@ -35,7 +35,7 @@
           %span.light= _('Email:')
           %strong
             = render partial: 'shared/email_with_badge', locals: { email: mail_to(@user.email), verified: @user.confirmed? }
-        - @user.emails.each do |email|
+        - @user.emails.reject(&:user_primary_email?).each do |email|
           %li
             %span.light= _('Secondary email:')
             %strong
diff --git a/ee/spec/views/admin/users/show.html.haml_spec.rb b/ee/spec/views/admin/users/show.html.haml_spec.rb
index 9850f187e4425aec870e25faea9ec812ec83b55b..bbc7444c9d0a691dbb114979bc1f9d58560b110b 100644
--- a/ee/spec/views/admin/users/show.html.haml_spec.rb
+++ b/ee/spec/views/admin/users/show.html.haml_spec.rb
@@ -3,7 +3,7 @@
 require 'spec_helper'
 
 RSpec.describe 'admin/users/show.html.haml' do
-  let_it_be(:user) { create(:user) }
+  let_it_be(:user) { create(:user, email: 'user@example.com') }
 
   let(:page) { Nokogiri::HTML.parse(rendered) }
   let(:status) { page.at('#credit-card-status')&.text }
@@ -19,6 +19,12 @@ RSpec.describe 'admin/users/show.html.haml' do
     expect(status).to be_nil
   end
 
+  it 'does not show primary email as secondary email - lists primary email only once' do
+    render
+
+    expect(rendered).to have_text('user@example.com', count: 1)
+  end
+
   context 'Gitlab.com' do
     before do
       allow(::Gitlab).to receive(:com?).and_return(true)