diff --git a/app/assets/javascripts/discourse/templates/components/tag-list.hbs b/app/assets/javascripts/discourse/templates/components/tag-list.hbs
index ff34843a815..a3e912d26ca 100644
--- a/app/assets/javascripts/discourse/templates/components/tag-list.hbs
+++ b/app/assets/javascripts/discourse/templates/components/tag-list.hbs
@@ -6,7 +6,11 @@
{{/if}}
{{#each sortedTags as |tag|}}
- {{discourse-tag tag.id}} x {{tag.count}}
+ {{#if tag.count}}
+ {{discourse-tag tag.id}} x {{tag.count}}
+ {{else}}
+ {{discourse-tag tag.id}}
+ {{/if}}
{{/each}}
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index e114dde1610..cb79ad13a3c 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -15,7 +15,11 @@ class TagsController < ::ApplicationController
categories = Category.where("id in (select category_id from category_tags)")
.where("id in (?)", guardian.allowed_category_ids)
.preload(:tags)
- category_tag_counts = categories.map { |c| {id: c.id, tags: self.class.tag_counts_json(Tag.category_tags_by_count_query(c, limit: 300).count)} }
+ category_tag_counts = categories.map do |c|
+ h = Tag.category_tags_by_count_query(c, limit: 300).count
+ h.merge!(c.tags.where.not(name: h.keys).inject({}) { |sum,t| sum[t.name] = 0; sum }) # unused tags
+ {id: c.id, tags: self.class.tag_counts_json(h)}
+ end
tag_counts = self.class.tags_by_count(guardian, limit: 300).count
@tags = self.class.tag_counts_json(tag_counts)