diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb
index e89cc0812..f8cdbac39 100644
--- a/app/controllers/topics_controller.rb
+++ b/app/controllers/topics_controller.rb
@@ -129,6 +129,7 @@ class TopicsController < ApplicationController
     Topic.transaction do
       success = topic.save
       success &= topic.change_category_to_id(params[:category_id].to_i) unless topic.private_message?
+      EditRateLimiter.new(current_user).performed!
     end
 
     # this is used to return the title to the client as it may have been changed by "TextCleaner"
diff --git a/spec/controllers/topics_controller_spec.rb b/spec/controllers/topics_controller_spec.rb
index 477192c3b..116814b51 100644
--- a/spec/controllers/topics_controller_spec.rb
+++ b/spec/controllers/topics_controller_spec.rb
@@ -770,6 +770,12 @@ describe TopicsController do
           expect(response).not_to be_success
         end
 
+        it "returns errors when the rate limit is exceeded" do
+          EditRateLimiter.any_instance.expects(:performed!).raises(RateLimiter::LimitExceeded.new(60))
+          xhr :put, :update, topic_id: @topic.id, slug: @topic.title, title: 'This is a new title for the topic'
+          response.should_not be_success
+        end
+
         it "returns errors with invalid categories" do
           Topic.any_instance.expects(:change_category_to_id).returns(false)
           xhr :put, :update, topic_id: @topic.id, slug: @topic.title