# Disabled Uncategorized shows in category dropdowns

**URL:** https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541
**Category:** Bug
**Created:** [June 17, 2025, 3:54pm UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541 "2025-06-17T15:54:06Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [June 17, 2025, 3:54pm UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/1 "2025-06-17T15:54:06Z")

</div>

Is this back in it’s latest form? It’s disabled and all:

 ![Screenshot From 2025-06-17 16-40-26](https://global.discourse-cdn.com/meta/original/4X/b/0/f/b0f99be9a230723dc6a475a2da38eea2f2075071.png)

But shows in various category dropdowns. Probably not such an issue on the backend, but it’s also suggested in search:

 ![Screenshot From 2025-06-17 16-40-57](https://global.discourse-cdn.com/meta/original/4X/a/c/9/ac9599a549b43088d9dd10782fb6a6da06f549c2.png)  
 ![Screenshot From 2025-06-17 16-40-39](https://global.discourse-cdn.com/meta/original/4X/d/b/1/db1dd11e02edba0686fa5e51fe45179781b2da15.png)  
 ![The image displays an interactive button interface for categorizing items into 'Assets,' 'Staff,' and 'Uncategorized' sections, with dropdown menus showing numbers and sorting arrows next to the labels. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/0/5/9/05915cd4cbd528bb889c81105350944992ec1886.png)

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [June 22, 2025, 9:35pm UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/2 "2025-06-22T21:35:03Z")

</div>

I have no repro of this on main.

---

<div class="post-metadata">

### Author: ![per1234](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/per1234/32/569645_2.png) [@per1234](https://meta.discourse.org/u/per1234)
#### Post date: [July 5, 2025, 10:33am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/3 "2025-07-05T10:33:42Z")

</div>

@j.jaffeux I am able to reproduce it on [try.discourse.org](http://try.discourse.org). I can tell that the “Allow uncategorized topics” setting is disabled on that forum because “Uncategorized” is not present in the “category…” menu of the topic composer.

## Advanced Search Menu

“Uncategorized” is present in the “Categorized” menu of the advanced search on the search page.

1. Click the following link to open the advanced search page of the Discourse Demo forum in your web browser:  
[https://try.discourse.org/search](https://try.discourse.org/search)
2. Click “ **Advanced filters** ”.  
The “ **Advanced filters** ” section of the page will expand.
3. Click on the “ **All categories** ” menu.  
The menu will open.

🐛 An “ **Uncategorized** ” item is present in the menu.

## Search Autocomplete

1. Click the following link to open the Discourse Demo forum in your web browser:  
[https://try.discourse.org/](https://try.discourse.org/)
2. Click the magnifying glass icon (“Search”) at the top right corner of the page.  
The search interface will open.
3. Type `#u` in the “Search” field.  
The category filter autocomplete menu will appear.

🐛 An “ **Uncategorized** ” item is present in the category filter autocomplete menu.

## Post Composer Autocomplete

1. If you don’t already have one, create an account on [try.discourse.org](http://try.discourse.org).
2. Log into your account on [try.discourse.org](http://try.discourse.org).
3. Click the following link to open the Discourse Demo forum in your web browser:  
[https://try.discourse.org/](https://try.discourse.org/)
4. Click the “ **New Topic** ” button at the top right corner of the page.  
The topic composer will open.
5. Click on the post body field in the topic composer.
6. Type `#u` in the “Search” field.  
The category filter autocomplete menu will appear.

🐛 An “ **uncategorized** ” item is present in the category filter autocomplete menu.

## Reorder Categories

I am also able to reproduce the presence of the “Uncategorized” category in the “ **Reorder Categories** ” dialog. I reproduce that on a forum in which I am an admin, and where the “Allow uncategorized topics” setting is disabled (obviously I can’t test it on [try.discourse.org](http://try.discourse.org)). That forum is using Discourse version `d8c855e55978d00fc63021b31ecd00a4bee9d922`.

1. Log into an admin account on a forum where the “Allow uncategorized topics” setting is disabled.
2. Open the “ **Categories** ” page (`/categories`).
3. Click the wrench icon (“Manage categories”) near the top right corner of the page.  
The “ **Reorder Categories** ” dialog will open.

🐛 An “ **Uncategorized** ” item is present in the dialog.

I agree with @manuel that the presence in this dialog is less serious than the presence in the user facing interfaces, but thought I should mention it as you are apparently not even able to reproduce that fault.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [July 7, 2025, 3:13am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/4 "2025-07-07T03:13:00Z")

</div>

@hugh I am not even sure we want to carry this “uncategorized” snake pit long term.

Over the years I tried hard to get rid of as much of it as I could, but new edge cases keep popping up.

Imo we should get rid of the settings and just allow people to pick a default category. A theme component can hide a particular category badge for the rare cases where we people don’t want to show it on “General” or similar.

---

<div class="post-metadata">

### Author: ![per1234](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/per1234/32/569645_2.png) [@per1234](https://meta.discourse.org/u/per1234)
#### Post date: [August 15, 2025, 12:49am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/5 "2025-08-15T00:49:02Z")

</div>

Were the maintainers able to reproduce the fault by following the procedures I described in [my previous reply](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/3)? I ask because I see that the topic still has the #needs-repro tag.

If you are able to reproduce the fault, please remove that tag from the topic so that it is clear that the report is now actionable in its current state.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [August 15, 2025, 2:56am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/6 "2025-08-15T02:56:03Z")

</div>

hold tight per, it dropped off our rader, prioritizing this for confirmation of repro and assigning to member xp

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [August 24, 2025, 11:25pm UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/10 "2025-08-24T23:25:50Z")

</div>

Per, I hate to answer this with “try something else”

But I wonder, what is holding you back just terminating usage “suppress uncategorized” on Arduino?

I find this whole feature a confusing curveball, in a parallel universe I would just delete the site setting, topics need a category so having this universe where topics have a category (but don’t really have a category) is confusing and really adds so little to end users given you can just chuck stuff in “general” if people can not categorize.

Would you like us to help with porting the “grab back of topics that are not categorized” into a “General” category?

---

<div class="post-metadata">

### Author: ![per1234](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/per1234/32/569645_2.png) [@per1234](https://meta.discourse.org/u/per1234)
#### Post date: [August 25, 2025, 12:51am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/12 "2025-08-25T00:51:29Z")

</div>

> [@sam](#):
>
> terminating usage “suppress uncategorized” on Arduino?

By this, do you mean unchecking the “ **Allow uncategorized topics** ” site setting?

If so, then that is how Arduino Forum is (and always has been) configured.

Please note that, with the exception of “Reorder Categories” (which we have already specified is not very important), I have verified that the fault can be reproduced by the instructions I provided on [try.discourse.org](http://try.discourse.org). So Arduino Forum is not directly relevant to this conversation. From what I can tell as a normal user, the “ **Allow uncategorized topics** ” site setting is disabled on [try.discourse.org](http://try.discourse.org).

The problem reported here is that the #Uncategorized category is exposed in the user interface on forums which have that category disabled via the “ **Allow uncategorized topics** ” site setting.

> [@sam](#):
>
> in a parallel universe I would just delete the site setting,

That is fine with me.

As someone who has struggled for years to get users to choose an appropriate category for their topics, I can understand why some forum operators would find it useful to have a feature that allows users the option of skipping picking a category. However, I don’t have any interest in using the “ **Allow uncategorized topics** ” feature on my forum so the removal of the feature would not affect me personally.

> [@sam](#):
>
> really adds so little to end users given you can just chuck stuff in “general” if people can not categorize.

Since I don’t have any experience using the “ **Allow uncategorized topics** ” feature, I can’t comment on the relative merits of the feature vs. just using a normal category as you propose.

I think it is a good idea to talk to someone who uses the feature to understand whether it is truly needed; I just don’t happen to be that person.

> [@sam](#):
>
> Would you like us to help with porting the “grab back of topics that are not categorized” into a “General” category?

I’m not sure I understand what you mean by this. I would like to understand though.

Are you offering some form of assistance with the categorization of Arduino Forum?

If you are looking at Arduino Forum, something that might cause confusion is that we do actually have a category named “Uncategorized”. However, this is a normal category that just happens to have that name, not the special category that is provided by the “ **Allow uncategorized topics** ” site setting. Our “Uncategorized” category actually has a completely opposite purpose from the “ **Allow uncategorized topics** ” feature. It isn’t in any way relevant to the subject of this bug report, but in case you are interested in why we did that, it is explained [**here**](https://forum.arduino.cc/t/proposal-add-dedicated-category-to-catch-topics-created-in-first-category-arbitrarily/1110132).

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [August 25, 2025, 2:12am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/13 "2025-08-25T02:12:32Z")

</div>

Oh I see, just did a bit of local debugging, I confirm this is 100% reproducible on default discourse installs.

Let me recap here:

There are 2 settings when it comes to uncategorized:

`allow_uncategorized_topics` default **off**  
`suppress_uncategorized_badge` default **on**

when allow `allow_uncategorized_topics` is disabled (default setup) we leak its presence into certain places.

 ![image](https://global.discourse-cdn.com/meta/original/4X/5/7/6/5760f27a94c3d02f4b7e97778839b84bb4c049c5.png)

If you try to work around by enabling uncategorized so you can delete it, you are presented with:

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/8/9/e898632cbb145dcba269b35f1699d3bdf4f7e795.png)

In Discourse this category is super weird in that:

1. It **must** be there
2. It **can not** be deleted
3. We inject it into **lots** of logic into lots of places:

> <https://github.com/discourse/discourse/blob/a8ed5b19f95107a0dafc463e4cbf99d84ea42311/lib/validators/default_composer_category_validator.rb#L8-L14>

> <https://github.com/discourse/discourse/blob/a8ed5b19f95107a0dafc463e4cbf99d84ea42311/lib/guardian/topic_guardian.rb#L100-L108>

> <https://github.com/discourse/discourse/blob/a8ed5b19f95107a0dafc463e4cbf99d84ea42311/app/assets/javascripts/discourse/app/models/site.js#L252-L268>

> <https://github.com/discourse/discourse/blob/a8ed5b19f95107a0dafc463e4cbf99d84ea42311/app/assets/javascripts/discourse/app/services/composer.js#L1721-L1729>

> <https://github.com/discourse/discourse/blob/a8ed5b19f95107a0dafc463e4cbf99d84ea42311/app/assets/javascripts/discourse/app/lib/sidebar/helpers.js#L3-L9>

> <https://github.com/discourse/discourse/blob/a8ed5b19f95107a0dafc463e4cbf99d84ea42311/app/assets/javascripts/select-kit/addon/components/category-drop.js#L54-L54>

We can fix the leakage by just adding more and more conditionals, we are probably up to at least 10 now both on client and server.

Or we can **fix this at the core** , just allow admins to **delete the category** , then it goes away and we never need to check for it anyway.

My recommendation here is

1. Delete both settings and delete the hidden setting `uncategorized_category_id`
2. Have a concept of default category (which we already do) - we already have `default_composer_category`
3. 'uncategorized` then is no longer a special concept, less stuff to reason about.
4. Have a theme component for people that must have a “category without a badge”

The current search bug can be fixed with something like

```diff
diff --git a/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js b/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js
index a678919d16..83a9ed27db 100644
--- a/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js
+++ b/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js
@@ -1,4 +1,5 @@
 import { classNames } from "@ember-decorators/component";
+import { setting } from "discourse/lib/computed";
 import CategoryChooserComponent from "select-kit/components/category-chooser";
 import {
   pluginApiIdentifiers,
@@ -7,11 +8,13 @@ import {
 
 @classNames("search-advanced-category-chooser")
 @selectKitOptions({
- allowUncategorized: true,
+ allowUncategorized: "allowUncategorized",
   clearable: true,
   none: "category.all",
   displayCategoryDescription: false,
   permissionType: null,
 })
 @pluginApiIdentifiers("search-advanced-category-chooser")
-export default class SearchAdvancedCategoryChooser extends CategoryChooserComponent {}
+export default class SearchAdvancedCategoryChooser extends CategoryChooserComponent {
+ @setting("allow_uncategorized_topics") allowUncategorized;
+}

```

```plaintext
import { render } from "@ember/test-helpers";
import { module, test } from "qunit";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import SearchAdvancedCategoryChooser from "select-kit/components/search-advanced-category-chooser";

module(
  "Integration | Component | select-kit/search-advanced-category-chooser",
  function (hooks) {
    setupRenderingTest(hooks);

    hooks.beforeEach(function () {
      this.set("subject", selectKit());
    });

    test("respects allow_uncategorized_topics setting when false", async function (assert) {
      this.siteSettings.allow_uncategorized_topics = false;

      await render(<template><SearchAdvancedCategoryChooser /></template>);

      await this.subject.expand();

      // Uncategorized category (ID 17 in test data) should not be present when setting is false
      assert.false(
        this.subject.rowByValue(17).exists(),
        "uncategorized category is not available when allow_uncategorized_topics is false"
      );
    });

    test("shows uncategorized category when allow_uncategorized_topics is true", async function (assert) {
      this.siteSettings.allow_uncategorized_topics = true;

      await render(<template><SearchAdvancedCategoryChooser /></template>);

      await this.subject.expand();

      // Uncategorized category (ID 17 in test data) should be present when setting is true
      assert.true(
        this.subject.rowByValue(17).exists(),
        "uncategorized category is available when allow_uncategorized_topics is true"
      );
    });

    test("has correct default options", async function (assert) {
      await render(<template><SearchAdvancedCategoryChooser /></template>);

      assert.strictEqual(
        this.subject.header().label(),
        "All categories",
        "has correct default none label"
      );
    });
  }
);

```

But that is just the advanced search bug, we are playing wack-a-mole here…

---

<div class="post-metadata">

### Author: ![per1234](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/per1234/32/569645_2.png) [@per1234](https://meta.discourse.org/u/per1234)
#### Post date: [July 10, 2026, 5:24am UTC](https://meta.discourse.org/t/disabled-uncategorized-shows-in-category-dropdowns/370541/19 "2026-07-10T05:24:21Z")

</div>

I verified that this is resolved by [DEV: remove and replace Uncategorized - Pull Request #41169 - discourse/discourse - GitHub](https://github.com/discourse/discourse/pull/41169) ([Removing Uncategorized and migrating to a standard category](https://meta.discourse.org/t/removing-uncategorized-and-migrating-to-a-standard-category/406373)).

Kudos to `@sam` for looking beyond the specific faults described here to see the bigger picture of the unnecessary complexity introduced by having a special type of category that could just as well be served by a standard category.

* * *

Something that might be confusing is that the removal is controlled by a feature flag, which is only accessible if you have the old special Uncategorized category enabled:

> [@Removing Uncategorized and migrating to a standard category](https://meta.discourse.org/t/removing-uncategorized-and-migrating-to-a-standard-category/406373/1):
>
> To turn this on early, head to the **[Upcoming changes](https://meta.discourse.org/t/introducing-upcoming-changes-a-system-to-manage-new-features-and-changes-to-existing-functionality-in-your-community/392894)** page in your admin area (`/admin/config/upcoming-changes`) and find the **Remove and replace Uncategorized category** item. Update the **Enabled for** … field to opt your site in:
> 
> ![upcoming-change-enabled](https://global.discourse-cdn.com/meta/original/4X/8/f/0/8f0452b7ca18c7d8834e85907582d736fcca3ef4.png)
> 
> > **Note:** This upcoming change will only be visible to sites that currently have `allow uncategorized topics` enabled.

So if you have the `allow uncategorized topics` setting disabled, your forum will currently still be subject to the bug reported here, even after it has been updated to the version of Discourse that contains the [DEV: remove and replace Uncategorized - Pull Request #41169 - discourse/discourse - GitHub](https://github.com/discourse/discourse/pull/41169) changeset.

I was able to resolve the bug reported here on my forum by the following procedure:

1. Enable the `allow uncategorized topics` setting in the site settings.
2. Enable **Remove and replace Uncategorized category** in “ **Upcoming changes** ”.
3. Delete the “Uncategorized” category that was created as a result of step 2.
