From IndieWeb
(Redirected from sticky)

pin or pinning is a feature that allows the author to choose a post to put at the top of their profile (or homepage) which is then called a pinned or sticky post.


Sometimes you want to bring attention to a post that's more currently relevant than just the most recent post in your stream, e.g.

  • before an imminent event (human) or site shutdown
  • a currently active event
  • fundraising campaign

By "pinning" such a post to the top of your stream, you make sure any new readers (or returning readers) who visit your homepage or profile see that post first, and consider it as recently (or still) relevant even if it is not the most recent thing you have posted.

IndieWeb Examples

Aaron Parecki

Aaron Parecki supports pinned posts in tag pages since 2016-12-28, e.g.:


capjamesg can pin posts on his homepage. The pinned post at the top of the homepage appears with a green border and a label indicating the post is pinned.

Here is an example:

... add yourself!


Software Support


WordPress has supported pinned posts as "sticky posts" since 2.7

In addition, the WordPress ActivityPub plugin supports showing WordPress sticky posts as pinned posts when a WordPress site with ActivityPub support is viewed on Mastodon profile page.


Mastodon has pinned posts on user profiles that they support communicating and displaying across instances by extending the ActivityPub "actor" object with a "featured" property that has a URL to a collection of posts which have been pinned by that actor (author) to their profile.



Discourse feature request (no support yet AFAIK) for pinning post(s) on tag pages:

Silo Support


Facebook has supported pinned posts on events, pages, and groups for quite some time (the admin/creators of such posts/pages has the ability to (un)pin posts).

  • Noticeably absent: Facebook DOES NOT have the ability for a user to pin a post on their own profile/timeline.

Facebook pinned posts appear with a separate header from "recent activity" and look visually distinct from the chronological list of posts.



Twitter's mid-2014 UI update added support for a pinned post on a user profile.

Twitter pinned tweets are marked with "pinned tweet", but otherwise are integrated into the primary list of tweets. supports adding pinned obsessions to the top of one's user profile. These are automatically set to expire after one week.

Example of UI to set a pinned post (aka obsession): notice red button

Example of UI for pinned post (aka obsession)


More thinking on pinned / sticky posts. Various thoughts:

first or just near top

  • You may not want it to be the first post in your profile - because that may give the illusion that there's nothing newer.
  • Possibly 1-2 normal in-stream posts display, then followed by the pinned post, almost like it is a promoted post for itself.
  • Tantek Çelik: I'm pretty sure I want my pinned post to presentationally be the first post-like thing on my profile, in the stream of posts etc.

special presentation

Any special presentational considerations for pinned posts? Besides being shown "first" (see above)?

  • Tantek Çelik - the pinned post should have some indication that it is pinned and not just the latest post.
    • minimum: text (and/or icon) above the post (content) like Twitter's "Pinned Tweet" or Facebook's "Pinned Post", or Aaron Parecki's little "pin" icon on a green triangle in the top right of a post block.
    • maybe a separate border around the post? especially if there is a header like "Recent Activity" after the pinned post but before the normal ordered stream of posts (FB does this)
      • new template slot? a specific spot in a home page template for a pinned post may help move some presentational distinctions to just HTML+CSS, and leave the "engine" to just find and put a pinned post in the right spot in the template. The more presentation that can be done in HTML+CSS rather than procedural coding, the better. Since this may be engine specific, I’ll add more in: Falcon#pinned_posts

markup details

  • Tantek Çelik Just an h-entry. Should a pinned post have any different markup than a regular post? Only if there is a specific use-case need, otherwise, it's just a post.
  • Tantek Çelik Still part of explicit (or implicit) h-feed on the page. Since a pinned post should only be shown once in a stream (instead of twice, at the top and in the stream in sort order), the pinned post h-entry should be either explicitly in the same h-feed, or at least at the same level (from a microformats2 parser perspective) as the other h-entrys on the page, so that h-feed consuming code will just include it in the overall stream it presents to readers etc.
  • Kevin Marks mastodon's api has a 'pinned' boolean but that doesn't show up in the h-feed except as:
<div class="status__prepend">
<div class="status__prepend-icon-wrapper">
<i class="status__prepend-icon fa fa-fw fa-thumb-tack"></i>
Pinned toot

The Atom feed doesn't have the pinned statuses in.

Aaron's pinned posts likewise have

<div class="ui green right corner label"><i class="ui pin icon"></i></div>

tag or category specific

pinning and feed files

  • I don't want a reader to treat a pinned post as always the most recent in a feed. Do readers sort things themselves by published date, or display things in the order they pull them from a feed? - Amy Guy
  • Tantek Çelik I would not do anything with pinning in feed files. Readers are likely to just display in dt-published order most recent first anyway.


Tantek Çelik I am considering implementing pinned posts, but having them auto-unpin (or expire) after some period of time like ~60 days. This will both make them easier to implement, and also provide an automatic way to not have to worry about unpinning something eventually. I like systems that by default clean-up after themselves.


Sessions about pinning:

See Also