diff --git a/CHANGELOG b/CHANGELOG
index 08a36e308bb8070c9a050bbf309355ca06197b66..884bb2532847d4c97734111790fc2755e76e2dc1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,7 @@ v 6.4.0
   - Minimal password length increased to 8 symbols
   - Side-by-side diff view (Steven Thonus)
   - Internal projects (Jason Hollingsworth)
+  - Allow removal of avatar (Drew Blessing)
 
 v 6.3.0
   - API for adding gitlab-ci service
diff --git a/app/assets/stylesheets/sections/profile.scss b/app/assets/stylesheets/sections/profile.scss
index 21f4ed0577dbfab42e5be5b90f5ffc7af5280821..068e8994cb142d99bfc146346241a7e7099eb351 100644
--- a/app/assets/stylesheets/sections/profile.scss
+++ b/app/assets/stylesheets/sections/profile.scss
@@ -42,3 +42,7 @@
   margin-right: 12px;
 }
 
+.remove_avatar {
+  margin-top: 10px;
+}
+
diff --git a/app/controllers/profiles/avatars_controller.rb b/app/controllers/profiles/avatars_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e90eaafd4404f4e9fb2189bf73a4cdaa3111d811
--- /dev/null
+++ b/app/controllers/profiles/avatars_controller.rb
@@ -0,0 +1,11 @@
+class Profiles::AvatarsController < ApplicationController
+  layout "profile"
+
+  def destroy
+    @user = current_user
+    @user.remove_avatar!
+
+    @user.save
+    redirect_to profile_path
+  end
+end
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index c22e00d3d77b42abf1910aeaad2f58a8260680b4..69fc7b62c5d304c8a5bb6092cc9646f97beb07d7 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -59,9 +59,14 @@
         .clearfix
           .profile-avatar-form-option
             %p.light
-              You can upload an avatar here
-              %br
-              or change it at #{link_to "gravatar.com", "http://gravatar.com"}
+              - if @user.avatar?
+                You can change your avatar here
+                %br
+                or remove the current avatar to revert to #{link_to "gravatar.com", "http://gravatar.com"}
+              - else
+                You can upload an avatar here
+                %br
+                or change it at #{link_to "gravatar.com", "http://gravatar.com"}
             %hr
             %a.choose-btn.btn.btn-small.js-choose-user-avatar-button
               %i.icon-paper-clip
@@ -70,6 +75,8 @@
             %span.file_name.js-avatar-filename File name...
             = f.file_field :avatar, class: "js-user-avatar-input hide"
           %span.help-block The maximum file size allowed is 100KB.
+          - if @user.avatar?
+            = link_to 'Remove avatar', profile_avatar_path, confirm: "Avatar will be removed. Are you sure?", method: :delete, class: "btn btn-remove remove_avatar"
 
   .form-actions
-    = f.submit 'Save changes', class: "btn btn-save"
+    = f.submit 'Save changes', class: "btn btn-save"
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index d89fc20c6c9c36f6c0fb40e5ef02bd1e5051ccd1..35143a4268cb54f27d7113e3ca597c48216782f0 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -127,6 +127,7 @@ Gitlab::Application.routes.draw do
           delete :leave
         end
       end
+      resource :avatar, only: [:destroy]
     end
   end
 
diff --git a/features/profile/profile.feature b/features/profile/profile.feature
index 6198fd2b306d635af0afc2363cfb55b6d08756a5..6b0421a20b354675da5c047aa5dd71a7aacf397d 100644
--- a/features/profile/profile.feature
+++ b/features/profile/profile.feature
@@ -26,6 +26,14 @@ Feature: Profile
     Given I visit profile page
     Then I change my avatar
     And I should see new avatar
+    And I should see the "Remove avatar" button
+
+  Scenario: I remove my avatar
+    Given I visit profile page
+    And I have an avatar
+    When I remove my avatar
+    Then I should see my gravatar
+    And I should not see the "Remove avatar" button
 
   Scenario: My password is expired
     Given my password is expired
diff --git a/features/steps/profile/profile.rb b/features/steps/profile/profile.rb
index 9d091e93aa2c6f71e7ea2f231eade3d5b5e62891..3e4a105ec5571a7c28e7d659d08e2caa6eac618a 100644
--- a/features/steps/profile/profile.rb
+++ b/features/steps/profile/profile.rb
@@ -31,6 +31,29 @@ class Profile < Spinach::FeatureSteps
     @user.avatar.url.should == "/uploads/user/avatar/#{ @user.id }/gitlab_logo.png"
   end
 
+  step 'I should see the "Remove avatar" button' do
+    page.should have_link("Remove avatar")
+  end
+
+  step 'I have an avatar' do
+    attach_file(:user_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
+    click_button "Save changes"
+    @user.reload
+  end
+
+  step 'I remove my avatar' do
+    click_link "Remove avatar"
+    @user.reload
+  end
+
+  step 'I should see my gravatar' do
+    @user.avatar?.should be_false
+  end
+
+  step 'I should not see the "Remove avatar" button' do
+    page.should_not have_link("Remove avatar")
+  end
+
   step 'I try change my password w/o old one' do
     within '.update-password' do
       fill_in "user_password", with: "22233344"
diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb
index 1b1d19d26b1945185aba125909470a2f0e32abf8..1af052d873912e1920deddabcadfb8d37d637e14 100644
--- a/spec/routing/routing_spec.rb
+++ b/spec/routing/routing_spec.rb
@@ -185,6 +185,13 @@ describe Profiles::KeysController, "routing" do
   end
 end
 
+# profile_avatar DELETE /profile/avatar(.:format) profiles/avatars#destroy
+describe Profiles::AvatarsController, "routing" do
+  it "to #destroy" do
+    delete("/profile/avatar").should route_to('profiles/avatars#destroy')
+  end
+end
+
 #                dashboard GET    /dashboard(.:format)                dashboard#show
 #         dashboard_issues GET    /dashboard/issues(.:format)         dashboard#issues
 # dashboard_merge_requests GET    /dashboard/merge_requests(.:format) dashboard#merge_requests