Topics vs Posts vs Replies

I have read a ton of threads regarding this but am still confused

Maybe a comparison with Facebook might help?

Correct me if I am wrong:
A post on Facebook = a post on discourse
A comment on Fb = a reply on discourse
AND both post+reply=topic

Am i correct here?

1 Like

Hello, welcome to Meta! :wave:

I don’t know much about Facebook. Let’s see:

  • Topic: This is the subject of a discussion thread. It contains posts.
  • Post: A post is any contribution made to a discussion. It can be the initial message.
  • Reply: A post directly addresses an earlier post within the topic or to continue the discussion.

A post, comment, and reply are essentially the same: messages that contribute to the discussion.

The term comment is not often used here. However, it’s used in the Discourse Post Voting plugin, which represents the tiny replies under the vote. (Thanks to Jammy for letting me know about it)

Does that clarify?


So the initial point, in this case what I wrote, would be the topic?
And then anything that comes after that would be a reply?

And both the topic and reply could be called a post?

This whole chain of posts is a topic. Every each message is a post. I surely make a reply, that is a post, to you, but if I would use reply button it would be connect as an answer to one of posts.

Same thing in Facebook where everything under original post are a topic. When someone is posting direcrtly under original one, like staying at root-level, it is just another post. If one answer to someone and create new thread (what Discourse doesn’t have because thread is basically only a filter showing just part of a topic) that is an answer, and a post too.

So a post is a reply, technically, if someone uses reply-button. This, and if I would mention you, is of course semantically answers, but not technically :smirk:

Sure. Coders and devs want everything beeing in logical order and behind exact definition. But at same time they have horrible and and even weak imaginary — or as a code wizard I know is formulating same: they are slaves of end users and incompetens bosses :stuck_out_tongue_winking_eye:

There’s a glossary in this topic which may help?



Thanks a ton for your help. I did understand what you were saying to some extent. But just to confirm, do we not have any name for the original post like the one I did at the top?

Every post and reply here is called a “post”, right?


Yes, every post is a post. A topic is a collection of posts. Informally, the first post in a topic could be called the OP (original post). In the database it’s just post_number: 1.

I agree the terms are a bit confusing. I think that’s because this forum (Meta) is a mixture of developers and non-developers. Developers might be using terms that only make sense if you’re familiar with the Discourse code.

For some context, if you have a JSON formatting extension installed on your browser (for example you can easily see the data that Discourse uses to generate the topic’s UI. This topic’s JSON can be seen at It shows that the topic has:

id: 304117,
title: "Topics vs Posts vs Replies",
fancy_title: "Topics vs Posts vs Replies",
posts_count: 6,
created_at: "2024-04-16T15:35:47.828Z",
views: 141,
reply_count: 2,
like_count: 12,

You can view the JSON without a browser extension. It’s just harder to read.

1 Like

@DevTantia – I think of the first post as “Original Post” (“OP”) or “Topic Starter”. There is only one of this type of post per Topic, and it always stays at the top of the Topic page. Only this special “OP” post contains the extra fields in the Composer (as you can see just below) like the Title, the Category, and the Tags - none of the other posts within (below) the OP provide these extra fields.

The OP is also the only post to display the Topic Map (always at the bottom of the OP) which shows helpful statistics regarding the community members’ actions and engagements with that particular Topic, like so…

I think of the rest of the posts as “Reply Posts” or “Topic Replies”. (As you can see below here this Reply Post Composer is without the extra fields.)

1 Like