From IndieWeb

A reply (or comment) is a kind of post that is a text (typically, though photos are possible too) response to some other post, that makes little or no sense without reading or at least knowing the context of the source post.

Replies rarely have names/titles, though they sometimes have other structure like multiple paragraphs, or blockquotes from the source that are being specifically responded too.

For details on displaying replies/comments on websites, please see:

Main article: comments


Why reply on your own site

You should post replies on your own site so you can own your replies, regardless of what happens to the page or site you were commenting about.

Why send webmentions for replies

You should automatically send webmentions to links you're replying to, to participate in federated indieweb commenting on others' sites! (this is a big milestone for any indieweb implementation)


  • To demo real-time comments showing up, e.g. on

Why fallback to pingback

If the thing you're replying to lacks a webmention endpoint, you should automatically look for a pingback endpoint and send that instead (e.g. in HEAD/GET results), to support posting comments on indieweb community member's sites that receive pingbacks but not webmentions,

How To

Post a reply

How to publish an indieweb reply in response to an original post:

1. Write a post (e.g. note) on your own site

2. Link to the original

  • If you are using the h-entry microformat to mark up your reply (as you should), add class="u-in-reply-to" to that link as well, e.g. a simple how to markup code snippet:
<div class="h-entry">
 <a href="" class="u-in-reply-to">Some note with a point</a>
 <div class="p-name p-content">Good point! Now what is the next thing we should do?</div>

3. Send a webmention from your server to the original's server (as detailed below). Ideally your server/software should automatically do the (3) webmention for all links in your post.

4. Include author information in your reply post so the original knows who is replying (and then send another Webmention so the original page gets the update).

Here's another example with explicit author name and icon, in case your site or blog does not already provide that on the page.

<div class="h-entry">
 <a class="p-author h-card" href="">
   <img alt="" src=""/>
   Supercool Indiewebauthor</a>: 
 in reply to:
 <a href="" class="u-in-reply-to">Some note with a point</a>
 <div class="p-name p-content">Good point! Now what is the next thing we should do?</div>

For those with less experience with code, Aaron Parecki has written Sending your First Webmention from Scratch which includes a lot of additional details for sending replies.

Send Webmentions From Reply

Do proper webmention discovery:

  • in particular do a HEAD request first, then GET if no endpoints found and type is text/html or application/xhtml+xml.
    • Why?
      • simplest way to both minimize bytes requested by my server and avoid GETting non-HTML links (which I do link to plenty often in my posts)
  • if no webmention endpoints found, do fallback discovery for pingback inside same HEAD/GET results and send pingback, using an approach like

POSSE a reply

To POSSE replies:

  1. Set silo-specific reply-to on POSSE copies. E.g. when POSSEing notes to Twitter that are themselves @-replies (or you can find a POSSE'd copy on Twitter of the post that you're commenting on), set the in_reply_to_status_id to the id of tweet the @-reply is a response to. This too should be automatically handled by your server/software. For details see:
  2. Add u-syndication link from original reply to POSSE copy
  3. Send a webmention from original reply to the post it is in reply to. If you already sent a webmention before adding the u-syndication link, send another webmention so the target has a better chance of deduplicating with any POSSE replies they've received, and preferring your original reply post.

Setting the silo-specific reply-to on POSSE copies helps silo readers better understand/follow what you're replying to When B posts a reply to A's post and sends a webmention, and both A and B POSSE their posts, wherever they happen to both POSSE to (e.g. on Twitter), their POSSE'd copies link-up there as well. That way those on the silo (e.g. Twitter), will be able to follow the conversation, even when A and B are replying/linking directly peer-to-peer between their indieweb posts.

Indieweb examples of a reply post that was automatically POSSE'd to Twitter with the in-reply-to-status-id set to the POSSE Twitter copy of the original post being replied to.

As an implementer, consider this in question form:

  • When you post a reply regarding an indieweb post, do you also when POSSEing your reply to Twitter give it the in_reply_to_status_id of the Twitter copy of the original indieweb post (that you're commenting on)?

Auto-discovery of the POSSE'd copy on Twitter of the post that you're commenting on:

  • How do I find POSSE'd copies of the post that I'm replying to? (e.g. in "To POSSE replies" above, to be able to "find a POSSE'd copy on Twitter of the post that you're replying to")
    • Proposed answer: at the permalink of the original post that you're replying to, look for rel~=syndication links, or if not found, then look for class~=u-syndication links inside the h-entry. See posts-elsewhere which describes how links to syndicated copies of posts are published today and suggests markup for doing so.
    • If no rel-syndication or u-syndication links are found (thus not finding a POSSE'd copy to Twitter of the post that you're commenting), consider providing a UI (e.g. an input field) for the author of the reply to manually enter in the URL of the POSSE'd copy on Twitter of the post that they're commenting on.
    • See: posse-post-discovery for an algorithm and more details.

Auto-discovery of an original post from its POSSE'd copy that you're replying to:

  • How do I find an original post of a POSSE'd copy that I'm replying to?
    • e.g. in "Link to the original" in the "Make a comment" section above, it would be better if your implementation automatically detected when you're trying to reply to a POSSE'd copy (e.g. a tweet), auto-discovered the original, and linked to the original post instead (much more indieweb-friendly).
    • in short:
      • look for a rel=canonical link in the POSSE'd copy that links back to an original - use that
      • otherwise if a parenthetical permashortlink is the last thing in the POSSE'd copy, convert that to a URL, and do the next step that URL as the last thing
      • otherwise if a URL is the last thing in the POSSE'd copy, go retrieve that URL and see if it links back to the POSSE'd copy with rel=syndication then use that URL
    • See: original-post-discovery for more details.

Display a reply post

How to display your own replies / comment posts on your own site.

(This section could use expansion, details)

  • First, show the context of what you're replying to, whether you're replying to single original post, or posting a multiple-reply
    • Consider unwrapping shortened URLs in that context, e.g. URLs of shortener domains,,, etc. both in display and in href.
  • The rest of your presentation should be consistent with whatever kind of reply you've posted, e.g. a note or an article

Update a reply

When you update a reply post on your site:

  • explicitly note the datetime updated with a dt-updated property in the h-entry of the reply
    • "Updated: <time class="dt-updated">YYYY-MM-DD HH:MM:SS</time>" presentation up to you
  • send another webmention to the original post with your updated reply's permalink.

If a server receives a webmention for an existing comment, the server should:

  • re-request the reply permalink that it was sent
  • if it returns a 410 GONE, the server should deleted it. See handling deleted posts.
  • otherwise re-retrieve the reply h-entry and
    • make sure it's still in-reply-to the original (if not, but still links back, downgrade it to a mention. if neither, then treat it as deleted and remove/tombstone accordingly per handling deleted posts).
    • update the content of the comment on your site
    • perhaps note the dt-updated for display purposes


  • Apart from the content, converspace has also been updating h-card info (author name, url, photo) and reply type (mention, reply, like, repost) which has been useful when the source URL does not have proper markup when making the initial webmention and then fixes it for subsequent webmentions — 03:43, 26 June 2013 (PDT)
  • The time-period to update a comment should be limited (f.e. 5 min) so that none could destroy the context of a result discussion, by editing the whole comment. --Matthias Pfefferle
    • This should be dependent on the target. Targets could employ different strategies like storing versions of comments (like Facebook does) or just mark a comments as being edited with a list of edit timestamps. — 04:03, 26 June 2013 (PDT)
  • If you are moderating new comments, don't forget to also moderate updates. 20:22, 7 July 2013 (PDT)

Delete a reply

Main article: deleted#Handling

When you delete a reply post on your site, you server should send webmentions to all the links you mentioned in your post.

When your server gets a request for the permalink of the reply that was deleted, it should return the 410 GONE HTTP status code.

For more details see: handling deleted posts.

Accept a comment

How to receive an indieweb comment replying to an original post

  1. Listen for webmention on your server (have your server software support)
  2. Link to it if it refers to a permalink on your site, and display it (or a summary) under your original post at that permalink.

Additional support:

  • let any comments pop up automatically at some URL, e.g./mentions
  • only show comments under posts with authors that pass an intelligent whitelist/manual approval
    • commenter is mentioned in the note they're replying to
    • commenter is in your contacts list
    • commenter is 1, 2, etc degrees of separation from you

Even better would be if original post(s) had a "Reply" webaction button which upon clicking, took the reader/commenter to their own blog's posting interface, with a (2) Link to the original (to make a comment) already pre-filled-in to which the commenter could simply add text commentary and then post.

Display received comments

So you've implemented accepting webmentions, now how do you display them on your site?

Main article: comments-presentation


  1. Parse the source of the webmention for (the first) h-entry.
  2. If the hyperlink in the h-entry to the webmention target has in-reply-to markup, display the h-entry (summary/content abbreviated as necessary) in a "Comments" section, perhaps in the post footer. See comments-presentation for details.
  3. Otherwise if the hyperlink to the original post lacks in-reply-to markup, then add it to a "Related Articles" or "Mentions" section, again in the post footer.


Main article: spam

Beware if you receive and display comments, apparently spammers are now attacking indieweb-like blogging solutions:


Reply distinction

tl;dr: reply is the post type, a comment is a reply syndicated into the context of the original.

Is a "reply" (or are replies) just a special case of a comment?

Replies on Twitter typically start with a name reference (@-name, indieweb URL).

Whereas comments only sometimes start with an explicit name reference.

Another distinction (perhaps useful for indieweb discussions) is context:

  • A reply is the permalink to a reply post - (part) of the post that is being replied to might be displayed (typically abbreviated, simplified, or de-styled) in a reply-context
  • A comment is the syndicated copy of a reply shown below (or otherwise adjacent to) the original post (that the reply is in-reply-to), likely copied there via a webmention notification and parsing microformats2 h-entry markup at the reply permalink.

More evidence/distinctions/use-cases welcome.

Examples of Replies

IndieWeb community members's replies (comments) on their own site in reference to a post on some other site:

Best practice - threaded POSSEd tweets - replies posted on the indieweb site and POSSE'd to Twitter such that the syndicated tweet links back to tweet that is being replied to - thus threading the tweets together on Twitter and providing a good experience there.

Adhoc / prose replies - prose and inline links being used to indicate what's being replied to:


Whilst most commenting implementations allow comments on the post level, an increasing number of silos are allowing granular comments on, for example, words, sentences or paragraphs:

  • Medium allows per paragraph comments, using Twitter as commenter sign-in/identifier. Select text in a paragraph also brings up a plus (+) and a tweet button. The (+) button simply enables/adds to the comments for the paragraphs, whereas the tweet button quotes the selected text in a Twitter-specific Tweet web action that pops up a window to complete the action on Twitter. Very similar interaction as the select-to-quote webaction with post verb in the web action toolbelt.
  • Branch discussions can be forked on sentence level
  • The “Real World Haskell” online book has per-paragraph comments (example)
  • TheyWorkForYou have annotations for each statement in Hansard (the official record of what is said in the British Parliament). These are shown inline. Examples: 1, 2
  • SoundCloud accepts comments in specific moments (seconds? microseconds?) of any published song or audio.

IndieWeb Examples

IndieWeb examples of displaying a reply post to a single original post (that original itself shown (partially) as context on the reply permalink) :

Aaron Parecki

Aaron Parecki has been using p3k to post replies to since 2012-08-20. E.g.

Kimberly Hirsh

When Kimberly Hirsh hosted her site on WordPress, she posted threaded replies to from the comments of, using a link to the original reply with the u-in-reply-to microformat as described in Chris Aldrich's post, "Threaded Replies and Comments with Webmentions in WordPress."

  • e.g. on

More Examples

See also:

Supporting Software

Content hosting / blogging software:


  • There are open source libraries for pingback and webmention that you can use to add this functionality to your own blogging software.
  • ...

Silo Examples


Silo Examples of comment UIs/UX on posts.


Replies on Twitter have their own post permalink, like any other post, and either @-mention who they are replying to explicitly in the content (typically at the start of the content), or explicitly as part of the reply-context above the reply content.

(screenshot needed)


Tumblr replies must all be posted by the person replying to their own Tumblr, and have the form of "reblogged this and said ...".

(screenshot needed)


Comments Embeds



Some people have criticized the idea that comments should be written in a space the author owns rather than written on the thing being commented. There are pros and cons of each method.

each comment treated as a blog post

  • "Writing comments to Medium posts feels awkward because each comment is treated as a blog post." [1]
  • "Trying to follow a comment chain on medium is frustrating as it only shows the first level, diving in switches pages, and often, a need to press a second "load all comments" button. Then the back button to wind your way back up." [2]

replies showing up on your main website

Many people (who? citation(s) needed) don't want their replies/comments to show up in the list of their normal posts.

Contrary prior art: The following systems/services established a UI (and culture of) requiring that reply posts be "in your own space/profile".

Solution: Don't include your comments on your home page feed

  • Aaron Parecki does this, all replies are on a secondary page
  • Twitter does this by default on profiles, you have to explicitly choose the "with replies" tab to see them

Solution: Use a separate folder or subdomain for comments


Twitter @-replies versus quote tweets

A summary of IRC Chat on 2017-04-11 regarding how to emulate Twitter @replies versus quote tweets and how those might be syndicated to Twitter.

There seems to be 3 different elements of a tweet that are distinguished by an @-reply versus a quote tweet.

  • Audience: An @-reply shows up in a Twitter User's Profile Page (firehose) and in the response section of the original tweet. A quote tweet shows up in the user's public tweet streams (showing up for users that follow that user).
    • For the IndieWeb this means making a post that doesn't show up in streams (except maybe a firehose) and including a u-reply-to with the link of the post being replied to.
  • Notification: An @-reply shows up as a specific reply post, where a quote tweet is more of a mention.
    • For the IndieWeb this could mean sending a reply webmention versus a person-tag.
  • Context: An @-reply expects the reader to understand the context of the reply already, where as a quote tweet is embedding and showing the context of the previous tweet to bring other people into the conversation as well.


What is the difference between rel=in-reply-to and class=u-in-reply-to? [3]

tl;dr: use u-in-reply-to in your reply h-entry, and avoid using rel=in-reply-to as it’s been abandoned.

microformats u-* classnames are scoped to the closest ancestor with class=h-*. Therefore on a page listing replies it would make little sense to have rel=in-reply-to links for all the replies on the page as they’d all be scoped to the list page, whereas it’d be completely appropriate to have u-in-reply-to properties on each h-entry, and on individual post permalink pages with only one h-entry. rel attributes are scoped to the entire page, so rel=in-reply-to was both less useful and required extra care to use properly, thus made sense to avoid entirely and was abandoned.


See Also