diff --git a/app/controllers/admin/confirmations_controller.rb b/app/controllers/admin/confirmations_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..6c41999e0eda9a26140d06e51cb9651e7efbe601
--- /dev/null
+++ b/app/controllers/admin/confirmations_controller.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Admin
+  class ConfirmationsController < BaseController
+    before_action :set_account
+
+    def create
+      @account.user.confirm
+      redirect_to admin_accounts_path
+    end
+
+    private
+
+    def set_account
+      @account = Account.find(params[:account_id])
+    end
+  end
+end
diff --git a/app/models/user.rb b/app/models/user.rb
index cd1f816caf09d438f84f59a2b82c9321cd74f590..48e7b80887664ed426f8c8156ee4e52134164d4d 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -19,6 +19,10 @@ class User < ApplicationRecord
   scope :admins,    -> { where(admin: true) }
   scope :confirmed, -> { where.not(confirmed_at: nil) }
 
+  def confirmed?
+    confirmed_at.present?
+  end
+
   def send_devise_notification(notification, *args)
     devise_mailer.send(notification, self, *args).deliver_later
   end
diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml
index bd1eb7ecda4412d591a7c5a3bcba09769f71b84f..c52b3ff741fd1b02c0bb27c54f324caebfb66e9e 100644
--- a/app/views/admin/accounts/index.html.haml
+++ b/app/views/admin/accounts/index.html.haml
@@ -25,6 +25,7 @@
     %tr
       %th= t('admin.accounts.username')
       %th= t('admin.accounts.domain')
+      %th= t('admin.accounts.confirmed')
       %th= fa_icon 'paper-plane-o'
       %th
   %tbody
@@ -34,6 +35,12 @@
         %td
           - unless account.local?
             = link_to account.domain, admin_accounts_path(by_domain: account.domain)
+        %td
+          - if account.local?
+            - if account.user.present? && account.user.confirmed?
+              %i.fa.fa-check
+            - else 
+              %i.fa.fa-times
         %td
           - if account.local?
             = t('admin.accounts.location.local')
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index 75b69b337196264eab4ca03bb8a56e9dd0f040e2..5dc3067cd37dde22a26da291c066505033a9b704 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -77,6 +77,9 @@
   - else
     = link_to t('admin.accounts.silence'), admin_account_silence_path(@account.id), method: :post, class: 'button'
 
+  - unless @account.user.confirmed?
+    = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(@account.id), method: :post, class: 'button'
+
   - if @account.suspended?
     = link_to t('admin.accounts.undo_suspension'), admin_account_suspension_path(@account.id), method: :delete, class: 'button'
   - else
diff --git a/config/locales/en.yml b/config/locales/en.yml
index cf492e117ca131f309e8a13a34ae88b6adca83ac..b8463673e486a2e7af8e05a90619806c27ded2dd 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -43,6 +43,8 @@ en:
   admin:
     accounts:
       are_you_sure: Are you sure?
+      confirm: Confirm
+      confirmed: Confirmed
       display_name: Display name
       domain: Domain
       edit: Edit
diff --git a/config/routes.rb b/config/routes.rb
index abc77535ab39cdcc099f181afa7e26a999c9828e..2c8ac1cff42c8a722c8e60edea3c53b820d78358 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -86,6 +86,7 @@ Rails.application.routes.draw do
       resource :reset, only: [:create]
       resource :silence, only: [:create, :destroy]
       resource :suspension, only: [:create, :destroy]
+      resource :confirmation, only: [:create]
     end
   end
 
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 846a206ec190f4d8d29e05b27dde0e1811b04e19..3dd50a701483384efb025f929d5ef9af786f1c9e 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -98,6 +98,18 @@ RSpec.describe User, type: :model do
     end
   end
 
+  describe '#confirmed?' do
+    it 'returns true when a confirmed_at is set' do
+      user = Fabricate.build(:user, confirmed_at: Time.now.utc)
+      expect(user.confirmed?).to be true
+    end
+
+    it 'returns false if a confirmed_at is nil' do
+      user = Fabricate.build(:user, confirmed_at: nil)
+      expect(user.confirmed?).to be false
+    end
+  end
+
   describe 'whitelist' do
     around(:each) do |example|
       old_whitelist = Rails.configuration.x.email_whitelist