diff --git a/Gemfile b/Gemfile
index 65bfc6fc308e7e919bd8e88b639f883c4bb837ee..7b994f569dd4462310a6030f97af496951d4ecef 100644
--- a/Gemfile
+++ b/Gemfile
@@ -89,7 +89,7 @@ gem 'omniauth-wordpress','0.2.1'
 
 # Tags
 
-gem 'acts-as-taggable-on', '2.4.1'
+gem 'acts-as-taggable-on', '3.2.6'
 
 # URIs and HTTP
 
diff --git a/Gemfile.lock b/Gemfile.lock
index c88ddbab973d7c8ea22fbf1da64ccf84890be1ee..e5c0991a917c12356d3a3f9917a02baa428e2253 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -30,8 +30,8 @@ GEM
     activesupport (3.2.18)
       i18n (~> 0.6, >= 0.6.4)
       multi_json (~> 1.0)
-    acts-as-taggable-on (2.4.1)
-      rails (>= 3, < 5)
+    acts-as-taggable-on (3.2.6)
+      activerecord (>= 3, < 5)
     acts_as_api (0.4.2)
       activemodel (>= 3.0.0)
       activesupport (>= 3.0.0)
@@ -470,7 +470,7 @@ PLATFORMS
 
 DEPENDENCIES
   activerecord-import (= 0.3.1)
-  acts-as-taggable-on (= 2.4.1)
+  acts-as-taggable-on (= 3.2.6)
   acts_as_api (= 0.4.2)
   addressable (= 2.3.6)
   asset_sync (= 1.0.0)
diff --git a/app/models/acts_as_taggable_on-tag.rb b/app/models/acts_as_taggable_on-tag.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a19dc3636964f5f17471928e23037c8f0cb3bd52
--- /dev/null
+++ b/app/models/acts_as_taggable_on-tag.rb
@@ -0,0 +1,23 @@
+module ActsAsTaggableOn
+  class Tag
+
+    self.include_root_in_json = false
+
+    def self.tag_text_regexp
+      @@tag_text_regexp ||= "[[:alnum:]]_-"
+    end
+
+    def self.autocomplete(name)
+      where("name LIKE ?", "#{name.downcase}%")
+    end
+
+    def self.normalize(name)
+      if name =~ /^#?<3/
+        # Special case for love, because the world needs more love.
+        '<3'
+      elsif name
+        name.gsub(/[^#{self.tag_text_regexp}]/, '').downcase
+      end
+    end
+  end
+end
diff --git a/app/models/acts_as_taggable_on/tag.rb b/app/models/acts_as_taggable_on/tag.rb
deleted file mode 100644
index 052fca4b4e058b588e0e677a654f03bf6841a169..0000000000000000000000000000000000000000
--- a/app/models/acts_as_taggable_on/tag.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-class ActsAsTaggableOn::Tag
-
-  self.include_root_in_json = false
-
-  def self.tag_text_regexp
-    @@tag_text_regexp ||= "[[:alnum:]]_-"
-  end
-
-  def self.autocomplete(name)
-    where("name LIKE ?", "#{name.downcase}%")
-  end
-
-  def self.normalize(name)
-    if name =~ /^#?<3/
-      # Special case for love, because the world needs more love.
-      '<3'
-    elsif name
-      name.gsub(/[^#{self.tag_text_regexp}]/, '').downcase
-    end
-  end
-end
diff --git a/config/initializers/acts_as_taggable_on.rb b/config/initializers/acts_as_taggable_on.rb
index bfc309bf2df5bccae68798fff98b1f5aa94ec0ca..5248c33ef875eff1c77dcd5f6e82e0a786b71383 100644
--- a/config/initializers/acts_as_taggable_on.rb
+++ b/config/initializers/acts_as_taggable_on.rb
@@ -1,2 +1,2 @@
-require 'models/acts_as_taggable_on/tag'
+require 'models/acts_as_taggable_on-tag'
 ActsAsTaggableOn.force_lowercase = true
diff --git a/db/migrate/20140601102543_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb b/db/migrate/20140601102543_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8edb508078131059ac506257527d5dc02bad67be
--- /dev/null
+++ b/db/migrate/20140601102543_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb
@@ -0,0 +1,15 @@
+# This migration comes from acts_as_taggable_on_engine (originally 3)
+class AddTaggingsCounterCacheToTags < ActiveRecord::Migration
+  def self.up
+    add_column :tags, :taggings_count, :integer, default: 0
+
+    ActsAsTaggableOn::Tag.reset_column_information
+    ActsAsTaggableOn::Tag.find_each do |tag|
+      ActsAsTaggableOn::Tag.reset_counters(tag.id, :taggings)
+    end
+  end
+
+  def self.down
+    remove_column :tags, :taggings_count
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 8ae07e086ec40b8fb8c84f3e78d2ce9dc17bfee8..e835151fb2e0878ed2104ea337742cb751e1b6d3 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20140422134627) do
+ActiveRecord::Schema.define(:version => 20140601102543) do
 
   create_table "account_deletions", :force => true do |t|
     t.string  "diaspora_handle"
@@ -482,7 +482,8 @@ ActiveRecord::Schema.define(:version => 20140422134627) do
   add_index "taggings", ["taggable_id", "taggable_type", "tag_id"], :name => "index_taggings_uniquely", :unique => true
 
   create_table "tags", :force => true do |t|
-    t.string "name"
+    t.string  "name"
+    t.integer "taggings_count", :default => 0
   end
 
   add_index "tags", ["name"], :name => "index_tags_on_name", :unique => true