# Discourse Post Voting

**URL:** https://meta.discourse.org/t/discourse-post-voting/227808
**Category:** Plugin
**Tags:** official, post-voting, included-in-core
**Created:** [May 23, 2022, 7:55am UTC](https://meta.discourse.org/t/discourse-post-voting/227808 "2022-05-23T07:55:00Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Discourse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discourse/32/148734_2.png) [@Discourse](https://meta.discourse.org/u/Discourse)
#### Post date: [May 23, 2022, 7:55am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/1 "2022-05-23T07:55:00Z")

</div>

| | | |
| --- | --- | --- |
| :discourse2: | **Summary** | **Discourse Post Voting** allows the creation of topics with votable posts. |
| 📖 | **Install Guide** | **This plugin is bundled with Discourse core**. There is no need to install the plugin separately. |

> [@](#):
>
> :discourse2: As this is an #official plugin maintained by the Discourse team, #Support, #Contribute > Bug, #Contribute > UX, and #Contribute > Feature requests can be made in the respective categories here on Meta, and tagged with the appropriate plugin tag. Click on a link below to get one started. 👍
> 
> [❓&nbsp; **Support**](https://meta.discourse.org/new-topic?category_id=6&body=%3E%20Before%20asking,%20did%20you%20search%20first%3F%20Press%20%F0%9F%94%8D%20at%20the%20upper%20right%20to%20search.&tags=post-voting "Ask for support on configuring and using Discourse Post Voting") [🐛&nbsp; **Bug**](https://meta.discourse.org/new-topic?category_id=1&tags=post-voting "A bug report means something is broken, preventing normal/typical use of the plugin") [👀&nbsp; **UX**](https://meta.discourse.org/new-topic?category_id=9&tags=post-voting "Discussion about the user interface of Discourse Post Voting, and how features are presented (including language and UI elements)") [💡&nbsp; **Feature**](https://meta.discourse.org/new-topic?category_id=2&tags=post-voting "Discussion about how existing Discourse Post Voting features can be improved or enhanced, and how proposed new features could work")

## Features

To create a new topic with votable posts open the menu in the top left of the composer and select ‘Toggle Post Voting’:

 ![post voting toggle](https://global.discourse-cdn.com/meta/original/4X/0/9/e/09e135776bf47f4652e9527acf03e116d8eaf876.png)

With the topic in Post Voting mode, there’s a filter to sort answers by votes or by activity. Here’s an example of one in action:

 ![post voting filter](https://global.discourse-cdn.com/meta/original/4X/0/5/b/05bed4dad1ee26256938857ac9748c9a8be7d2d1.png)

## Configuration

### Site Settings

Once installed, the plugin is enabled by default and the available admin settings are:

| Setting | Site Description |
| --- | --- |
| post voting enabled | Enable Post Voting Plugin |
| post voting undo vote action window | Number of minutes users are allowed to undo votes in Post Voting topics (enter 0 for no limit) |
| post voting comment limit per post | Number of comments allowed on each post |
| post voting enable likes on answers | Enable like button on replies on Post Voting topics |
| min trust to flag posts voting comments | Minimum trust level to flag a post voting comment |

### Category-specific Settings

There are two category settings available. Use the wrench on the category page and access settings to see these:

 ![category settings](https://global.discourse-cdn.com/meta/original/4X/1/f/5/1f5ab847da0e176793251d162ad8e5f5bf2bafd8.png)

> :discourse2: **Hosted by us?** This plugin is available on our Business and Enterprise plans [Post Voting | Discourse - Civilized Discussion](https://www.discourse.org/plugins/post-voting.html)

* * *

> ### Credits
> 
> This plugin is inspired by Pavilion’s fantastic work on the [Question Answer Plugin](https://github.com/paviliondev/discourse-question-answer). As always, thank you for your continued contributions to the Discourse project. 🏅 🙂

> Last edited by @southpaw 2025-07-25T21:03:02Z
> 
> > **Check document**
> >
> > Perform check on document:

---

<div class="post-metadata">

### Author: ![Catija](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/catija/32/171046_2.png) [@Catija](https://meta.discourse.org/u/Catija)
#### Post date: [January 23, 2024, 9:13pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/130 "2024-01-23T21:13:18Z")

</div>

I am a bit of a Q&A fanatic, so I’m excited to see this new post format available in Discourse and tickled by how… familiar… it seems! I have some questions about the functionality and how customizable it is. Much of this may be answered in the plugin package but I figure it might be helpful to have here, too…

1. Is there education built in for the plugin that teaches users about the feature, how/when to use it, etc? I love @discobot - maybe there’s a tutorial/onboarding module for Q&A?
2. You say admins can set the default within a category to Q&A - if they do, are topics _required_ to be Q&A or do they just default to it?
  - If it’s a default, is there an option to require it? Can Q&A be disabled by category, too?

3. If a category is set to default to Q&A, is this something that’s apparent to users? I see that the post creation button will say it’s a Q&A but I can imagine a seasoned user’s first interaction with the newly-added feature might lead them to overlook the text without something drawing attention to the post type before it’s submitted.

Thanks for making this cool feature official!

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [February 20, 2024, 10:35am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/134 "2024-02-20T10:35:34Z")

</div>

> [@Catija](#):
>
> You say admins can set the default within a category to Q&A - if they do, are topics _required_ to be Q&A or do they just default to it?
> 
> - If it’s a default, is there an option to require it? Can Q&A be disabled by category, too?

Yes, OP needs an update, these are the current options in category settings

 ![post voting category options](https://global.discourse-cdn.com/meta/original/4X/6/c/e/6ceacf61e8a8392ca83386e7d74378317747131e.png)

> [@Catija](#):
>
> - If a category is set to default to Q&A, is this something that’s apparent to users?

The user will see a different button in the composer. You can change the button text via [text customization](https://meta.discourse.org/t/customize-any-text-in-discourse/36092).

 ![create button](https://global.discourse-cdn.com/meta/original/4X/0/f/a/0fab813c7c4948789030377d28d2c5c615c5f428.png)

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [February 25, 2024, 6:29am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/135 "2024-02-25T06:29:18Z")

</div>

A post was split to a new topic: [Are Post Voting votes/replies accessible via API?](https://meta.discourse.org/t/are-post-voting-votes-replies-accessible-via-api/296640)

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [May 4, 2024, 12:13pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/137 "2024-05-04T12:13:57Z")

</div>

Has anyone been able to limit the amount of votes per user per topic? In our case, we are running photocontests, and we would like to limit each user to 5 votes max per topic.

---

<div class="post-metadata">

### Author: ![dreieck](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dreieck/32/384333_2.png) [@dreieck](https://meta.discourse.org/u/dreieck)
#### Post date: [May 7, 2024, 5:08pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/138 "2024-05-07T17:08:13Z")

</div>

Ahoj,

_in [↗ this post](https://community.openstreetmap.org/t/103260/28) I was directed to post the issue here to give the feedback._

* * *

In the thread linked above in the OpenStreetMap forum, where this plugin is used in some categories, user interface shortcomings with this plugin are discussed.

In short there are:

This plugin forbids to post a reply to a reply. It is debateable if this should be enforced or to be configurable on a per-instance basis, but it it is enabled, the following occurs:

- The user can select some text and quote. The user can enter a reply. Only at the very end, when the reply is to be sent, it is aborted with an error message

- When a reply is sent via email, the email just vanishes without the sender beeing informed. There should be a bounce with an explanatory message saying what is wrong.

- Only comments are allowed. But they swallow some formatting (e.g. quotes, see the comment on [↗ this post](https://community.openstreetmap.org/t/112835/6)), and also they are limited in numbers of characters, prohibiting more complex thoughts.

Regards!

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [June 1, 2024, 5:33pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/139 "2024-06-01T17:33:57Z")

</div>

A post was split to a new topic: [How to hide the ‘add a comment’ option](https://meta.discourse.org/t/how-to-hide-the-add-a-comment-option/310206)

---

<div class="post-metadata">

### Author: ![Ahmed26](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ahmed26/32/347069_2.png) [@Ahmed26](https://meta.discourse.org/u/Ahmed26)
#### Post date: [June 14, 2024, 7:31am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/140 "2024-06-14T07:31:22Z")

</div>

@Discourse

comments on replies are hidden after 5 comments

How can I remove the 5 comment limit and make it appear only with the option to show comments?

 ![The image appears to be a chat or messaging interface displaying multiple test messages or chat logs, with some sections redacted or obfuscated, likely for privacy or security reasons. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/b/6/9/b695b16e3f4de502f5200a313dfea652e906960d.png)

---

<div class="post-metadata">

### Author: ![Gotchur](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gotchur/32/424926_2.png) [@Gotchur](https://meta.discourse.org/u/Gotchur)
#### Post date: [July 12, 2024, 4:25pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/141 "2024-07-12T16:25:42Z")

</div>

> [@dreieck](#):
>
> Ahoj,
> 
> _in [↗ this post](https://community.openstreetmap.org/t/103260/28) I was directed to post the issue here to give the feedback._
> 
> * * *
> 
> In the thread linked above in the OpenStreetMap forum, where this plugin is used in some categories, user interface shortcomings with this plugin are discussed.
> 
> In short there are:
> 
> This plugin forbids to post a reply to a reply. It is debateable if this should be enforced or to be configurable on a per-instance basis, but it it is enabled, the following occurs:
> 
> - The user can select some text and quote. The user can enter a reply. Only at the very end, when the reply is to be sent, it is aborted with an error message
> 
> - When a reply is sent via email, the email just vanishes without the sender beeing informed. There should be a bounce with an explanatory message saying what is wrong.
> 
> - Only comments are allowed. But they swallow some formatting (e.g. quotes, see the comment on [↗ this post](https://community.openstreetmap.org/t/112835/6)), and also they are limited in numbers of characters, prohibiting more complex thoughts.
> 
> Regards!

Went searching for this same thing and was surprised it hadn’t been brought up before. Allowing the user to always end up in an error state with quotes and no option for markup in comments offers a very disjointed experience. Additionally, the error messaging is unclear for users when trying to directly reply to a post.

Definitely hoping to see an improvement to help polish this UX.

---

<div class="post-metadata">

### Author: ![Ahmed26](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ahmed26/32/347069_2.png) [@Ahmed26](https://meta.discourse.org/u/Ahmed26)
#### Post date: [August 15, 2024, 2:30pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/142 "2024-08-15T14:30:10Z")

</div>

After 5 comments, other comments are hidden  
how do I make it so that after 1 or 2 comments other comments are hidden

---

<div class="post-metadata">

### Author: ![Shauny](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shauny/32/362012_2.png) [@Shauny](https://meta.discourse.org/u/Shauny)
#### Post date: [October 12, 2024, 6:10pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/143 "2024-10-12T18:10:35Z")

</div>

A couple of questions about this great plugin:

1. Why does the first post (the OP) get voting options? Surely that’s the question, so should not be voted on like it’s an answer?
2. Any hints on some Badge SQL I can use to make badges out of these? Get 10 votes in a vote post topic, etc…?

---

<div class="post-metadata">

### Author: ![Heliosurge](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/heliosurge/32/571810_2.png) [@Heliosurge](https://meta.discourse.org/u/Heliosurge)
#### Post date: [October 13, 2024, 9:44am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/144 "2024-10-13T09:44:36Z")

</div>

I found one for topic voting that can maybe be modified for post voting?

> [@Badge ideas for Topic Voting](https://meta.discourse.org/t/badge-ideas-for-topic-voting/58483):
>
> Great plugin. Because everyone loves badges, I’ve put together some basic queries for badges based on voting. (As I’m still finding my way around the DB and the way badges work in Discourse, there may be issues with these queries – but I think they’re right!) Suggester: Granted to users who have made a suggestion (fa-lightbulb-o) Trigger when a user creates a post select users.id user\_id, p.created\_at granted\_at from users join badge\_posts p on users.id = p.user\_id join topics t on…

---

<div class="post-metadata">

### Author: ![traceymoko](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/traceymoko/32/483235_2.png) [@traceymoko](https://meta.discourse.org/u/traceymoko)
#### Post date: [November 15, 2024, 11:41am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/145 "2024-11-15T11:41:48Z")

</div>

Is it possible to limit the number of downvotes that users can cast globally across all topics within a day, with this plugin?

---

<div class="post-metadata">

### Author: ![king\_laurel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/king_laurel/32/461779_2.png) [@king\_laurel](https://meta.discourse.org/u/king_laurel)
#### Post date: [November 20, 2024, 11:51pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/146 "2024-11-20T23:51:07Z")

</div>

Is it possible to move the location of this feature? Ideally we’d like to have it where the current double button like button is.

---

<div class="post-metadata">

### Author: ![SoteFun](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sotefun/32/470278_2.png) [@SoteFun](https://meta.discourse.org/u/SoteFun)
#### Post date: [May 9, 2025, 11:17am UTC](https://meta.discourse.org/t/discourse-post-voting/227808/147 "2025-05-09T11:17:54Z")

</div>

I can’t @ a user when replying to a post in a voting post. Is this intentional or a bug?

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [May 10, 2025, 12:01pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/148 "2025-05-10T12:01:58Z")

</div>

Within the comment rather than in a ‘proper’ reply? If so, I think that is intentional to keep the comments more lightweight than a full composer experience. This has been asked before ([How to mention in Discourse comments, or disable commenting?](https://meta.discourse.org/t/how-to-mention-in-discourse-comments-or-disable-commenting/314645)), but I don’t think a #Contribute > Feature request was submitted in the end.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [May 10, 2025, 1:29pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/149 "2025-05-10T13:29:32Z")

</div>

> [@Shauny](#):
>
> Why does the first post (the OP) get voting options? Surely that’s the question, so should not be voted on like it’s an answer?

I think this also. 🙂 But Sam is adamant that it is a thing:

> [@Voting button appears on opening post](https://meta.discourse.org/t/voting-button-appears-on-opening-post/244144/6):
>
> This is very much a site pref. Voting on quality of questions is something pretty established on Stack Overflow like sites.
> 
> We kept the voting control deliberately, removing it via CSS is fine though, open to maybe adding a site setting for it as well.

> [@Shauny](#):
>
> Any hints on some Badge SQL I can use to make badges out of these? Get 10 votes in a vote post topic, etc…?

It doesn’t look like there are any badges knocking around for this yet.

If you have specific badge criteria for any you’d like to create you should fire up a #data-reporting topic for each one. 👍

I think a couple of examples could be along the lines of:

**get 10 votes on a post voting reply**

```sql
SELECT p.user_id, p.created_at AS granted_at, p.id AS post_id
FROM post_voting_votes pvv
  JOIN posts p ON p.id = pvv.votable_id
WHERE pvv.direction = 'up'
  AND p.post_number <> 1
  AND (:backfill OR p.id IN (:post_ids))
GROUP BY p.user_id, p.id
HAVING COUNT(*) >=10

```

Or a slightly more nuanced one where you accounted for ‘up - down’ votes:

```sql
WITH vote_totals AS (

SELECT 
    p.user_id,
    p.id AS post_id,
    p.created_at AS granted_at,
    (COUNT(*) FILTER (WHERE pvv.direction = 'up') - COUNT(*) FILTER (WHERE pvv.direction = 'down')) AS total
FROM post_voting_votes pvv
  JOIN posts p ON p.id = pvv.votable_id
WHERE p.post_number <> 1
GROUP BY 1, 2

)

SELECT *
FROM vote_totals 
WHERE total >= 10
  AND (:backfill OR post_id IN (:post_ids))

```

❗ These will need some further testing to make sure they’re working as intended. 🙂

Though one thing to consider is that the total is dynamic so a ‘10’ today could turn into a ‘5’ tomorrow if more downvotes are added (for the second example). And if the badge is just based on upvotes like the first example then you may have got 10, but the UI only shows 5 when the downvotes are totalled in.

---

<div class="post-metadata">

### Author: ![patrickemin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/patrickemin/32/520162_2.png) [@patrickemin](https://meta.discourse.org/u/patrickemin)
#### Post date: [July 15, 2025, 10:36pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/150 "2025-07-15T22:36:17Z")

</div>

Hi, just activated that plugin on a French site and noticed the **wrong French translation for the second option in the category settings** :

~~Les nouveaux sujets ne peuvent être que des sujets postérieurs au vote dans cette catégorie.~~

_It should be:_

**Les nouveaux sujets ne peuvent être que des sujets de vote de message dans cette catégorie.**

explanation: confusion between “post” as a message that can be a post and post as “posterior”, meaning after.

---

<div class="post-metadata">

### Author: ![patrickemin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/patrickemin/32/520162_2.png) [@patrickemin](https://meta.discourse.org/u/patrickemin)
#### Post date: [July 15, 2025, 11:36pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/151 "2025-07-15T23:36:15Z")

</div>

Hi, also is it possible to activate posts voting for topics that have **already** been published ? Thanks

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [July 16, 2025, 9:44pm UTC](https://meta.discourse.org/t/discourse-post-voting/227808/152 "2025-07-16T21:44:41Z")

</div>

🥳 This plugin is now bundled with Discourse core as part of [Bundling more popular plugins with Discourse core](https://meta.discourse.org/t/bundling-more-popular-plugins-with-discourse-core/373574). If you are self-hosting and use the plugin, you need to remove it from your `app.yml` before your next upgrade.

[Next page](https://meta.discourse.org/t/discourse-post-voting/227808.md?page=2)
