Generates richer WordPress comments from linkbacks such as Webmention or classic linkback protocols like Trackback or Pingback.

The limited display for trackbacks and linkbacks is replaced by a clean full sentence, such as “Bob mentioned this article on” If Bob’s site uses markup that the plugin can interpret, it may add his profile picture or other parts of his page to display as a full comment. It will optionally show collections of profile pictures, known as Facepiles, instead of the full setences.

Semantic Linkbacks uses Microformats 2 to get information about the linked post and it is highly extensible to also add support for other forms of markup.

Privacy and Data Collection

This plugin collects data from sites that send webmentions for the purpose of displaying richer comments on a site. This data is under the control of the site owner. It is the personal responsibility of that individual or individuals to remove any information at the request of the original content creator. Over time, we will add additional tools to assist in doing so.

Thanks to


  1. Upload the semantic-linkbacks-folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the Plugins menu in WordPress
  3. …and that’s it 🙂


Do I need to mark up my site?

Most modern WordPress themes support the older Microformats standard, which means the plugin should be able to get basic information from to enhance linkbacks. The plugin is most useful with the WordPress Webmention plugin and sites/themes that support Microformats 2.

Why Webmentions?

Webmention is a modern reimplementation of Pingback and is now a W3C Recommendation.

What about the semantic “comment” types?

The IndieWeb community defines several types of feedback:

How do I extend this plugin?

See Extensions

How do I add this into my plugin?

The plugin will automatically enhance webmentions, trackbacks, and pingbacks with an avatar and additional context. It will also automatically add a facepile instead of individual comments, but this feature can either be turned off by an aware theme or under Discussion in your Settings.

Why do some [emoji reactions]( not show up?

Some emoji characters in webmentions you might receive, e.g. Facebook reactions from Bridgy, take more than two bytes to encode. (In technical terms, these Unicode characters are above the Basic Multilingual Plane.) To handle them, you need MySQL 5.5.3 or higher, and your database and tables need to use the utf8mb4 charset. Usually WordPress does this automatically, but not always.

First, follow these instructions to switch your MySQL database to utf8mb4. Then, make sure DB_CHARSET and DB_COLLATE in your wp-config.php are either unset, set to the blank string, or set to these values:

define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', 'utf8mb4_general_ci');

Who made the logos?

The Webmention and Pingback logos are made by Aaron Parecki and the Microformats logo is made by Dan Cederholm.

Why are you providing avatars?

The plugin attempts to store the URL to an actual profile image on the source site. The default avatar set by WordPress is only used if there is no such image found.

Even the WordPress default avatars are served by querying which serves the file. Gravatar works by you providing an email address which it uses to match the image.
The majority of linkbacks enhanced by this plugin do not have email addresses therefore we know that gravatar will not have anything on file.

If there is no email address it will serve the local avatar. If there is an email, it will go out to and see if they
have a gravatar on file. If there is it will store the gravatar URL, otherwise it will store the URL for the local avatar if set.

The plugin uses a locally cached version of the mystery icon normally provided by WordPress and Gravatar.


July 9, 2020
Adds much needed support for WebMentions (along with the webmentions plugin) inline with your comments area. Probably the easiest part of IndieWeb to implement. Works fine out of the box, but has nice customization features to tailor it to your taste.
Read all 2 reviews

Contributors & Developers

“Semantic-Linkbacks” is open source software. The following people have contributed to this plugin.


“Semantic-Linkbacks” has been translated into 4 locales. Thank you to the translators for their contributions.

Translate “Semantic-Linkbacks” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


Project actively developed on Github at pfefferle/wordpress-semantic-linkbacks. Please file support issues there.


  • Deactivate itself if Webmention Version is 5.0.0 or above


  • Fix HTML issue



  • Whitelist vendor folder


  • Remove jQuery dependency. Props to Florian Brinkmann.
  • Fix Facepile errors. Props to Terence Eden.
  • Remove refbacks as a default. Add a filter to decide on what comment types would be used.
  • Use comment as default comment-type:


  • Fix default value of semantic_linkbacks_facepiles (props @prtksxna)


  • Fix load issues with Webmention vs Semantic Linkbacks


  • Use Webmentions avatar-handler if available


  • Fixes


  • Only load MF2 parser inside parsing function to ensure bundled version is loaded
  • Update development dependencies


  • Quick fix facepile problem id comments are closed


  • Support rel-alternate (mf2-json)
  • New php-mf2 version


  • Add follow post as type
  • Add warning to settings page if php-mbstring not installed
  • Return false in Emoji function if php-mbstring not installed
  • Add approve link to emails sent


  • Add locally hosted copy of the mystery man icon and serve it if there is no gravatar
  • Redo settings and settings page
  • Settings page to merge with Webmentions page if webmentions loaded


  • Add read type
  • Capture read-status if available
  • Change string as previous tense was off


  • Update Parser to version 0.4.3
  • Introduce watch and listen properties


  • fixed Reacji UI ((#154)[])


  • Replace rsvp-invite property which is not in use with invite property and add unit tests
  • Enhance post type returns to include post, page, and sitename
  • Add basic person tagging support


  • Replace tracking with interested property as noted on
  • Remove h-as properties
  • Remove hard-coded microformats2 properties from facepile and move them to being generated from comment_class
  • Remove unused properties
  • Introduce type argument in list_linkbacks to generate unique ideas for each list of linkbacks without having to specify them using style and li-class
  • Whitelist property swarm-coins, used by OwnYourSwarm and display it if using built-in comment handler.


  • Bugfix: “Normal comments” hidden in comment-section (


  • Fixed reacjis and facepiles


  • Add settings to enable each type independently in the Facepile
  • Optionally render mentions as normal comments again
  • Support Reacji…aka single-emoji reactions
  • Bump minimum PHP to 5.4 due emoji detector library dependency issues
  • Overlay emoji on individual avatars in reactions facepile
  • Offer mf2 compatible template for comments
  • Fix semantic_linkbacks_cite filter as was previously filtering the entire comment text
  • Switch semantic_links_cite filter to filtering the format for the citation instead of the prepared citation
  • Count correct text length for unicode characters
  • Facepile Template improvements
  • Allow new comment template to be overridden by filter or theme declaring microformats2 support
  • Code standards compliance changes
  • Improved testing for PHP versions 5.4 and up to ensure compatibility
  • Remove direct calls to comment meta in favor of helper functions to ensure future proofing


  • Only show the first 8 avatars in a facepile by default. If there are more, include a clickable ellipsis to show the rest. Customizable via the FACEPILE_FOLD_LIMIT constant.
  • Link facepile avatars to user profile/home page, not response post
  • Always show avatar images with correct aspect ratio


  • Bugfix release


  • Add Facepile code
  • Add setting to disable automatic facepile include
  • Add filter to allow themes to disable the setting and the feature if they facepile themselves
  • Add PHP requirement to readme file


  • Abstract out linkback retrieval functions to allow for easier changes in future
  • Fix retrieval issue
  • Remove merge and compatibility function creating double slashing due update in 4.7.1
  • Replace blacklist for properties with whitelist for select properties
  • Update avatar function to not override if user_id is set on assumption local overrides remote


  • Fix Tests and Error in Authorship
  • Update Parser
  • Switch to looser restrictions if WP_DEBUG is enabled and stricter ones otherwise
  • Enhance Author Properties to allow for retrieving remote h-card
  • Store mf2 properties
  • Store location in WordPress Geodata
  • Use rel-syndication if not u-syndication
  • Support new webmention source meta key


  • fixed


  • Due to changes in WordPress 4.4 through 4.7 and version 3.0.0 of the Webmentions plugin this plugin can act on the retrieved remote source
    rather than rerequesting this information.
  • Major enhancement work is done in preprocessing now rather than post-processing
  • Refactoring
  • Render full mention content if short enough. Introduce MAX_INLINE_MENTION_LENGTH which defaults to 300 characters to implement same.
  • Fix text domain


  • updated hooks/filters


  • changed hook from <linkback>_post to comment_post (thanks to @dshanske)
  • used the WordPress Coding Standard
  • small code improvements


  • I18n support
  • German translation
  • some small changes and bugfixes


  • quick fix to prevent crash if Mf2 lib is used by a second plugin


  • added counter functions for comments by type (props to David Shanske)
  • some bugfixes


  • some small tweaks
  • added custom comment classes based on the linkback-type (props to David Shanske for the idea)


  • added support for threaded comments


  • fixed bug in comments section


  • nicer integration with trackbacks, linkbacks and webmentions
  • cleanup


  • “via” links for indieweb “reply”s (thanks to @snarfed for the idea)
  • simplified output for all other indieweb “comment” types
  • better parser (thanks to voxpelly for his test-pinger)
  • now ready to use in a bundle


  • initial release