<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Blog entries tagged microformats :: mwop.net</title>
  <updated>2026-09-18T11:30:10-05:00</updated>
  <generator uri="https://getlaminas.org" version="2">Laminas_Feed_Writer</generator>
  <link rel="alternate" type="text/html" href="https://mwop.net/blog/tag/microformats"/>
  <link rel="self" type="application/atom+xml" href="https://mwop.net/blog/tag/microformats/atom.xml"/>
  <id>https://mwop.net/blog/tag/microformats</id>
  <entry xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <title type="html"><![CDATA[Webmention support]]></title>
    <published>2026-09-18T10:12:40-05:00</published>
    <updated>2026-09-18T11:30:10-05:00</updated>
    <link rel="alternate" type="text/html" href="https://mwop.net/blog/2026-09-18-webmentions.html"/>
    <id>https://mwop.net/blog/2026-09-18-webmentions.html</id>
    <author>
      <name>Matthew Weier O'Phinney</name>
      <email>contact@mwop.net</email>
      <uri>https://mwop.net</uri>
    </author>
    <content xmlns:xhtml="http://www.w3.org/1999/xhtml" type="xhtml">
      <xhtml:div xmlns:xhtml="http://www.w3.org/1999/xhtml"><xhtml:p>I've known about <xhtml:a href="https://indieweb.org/Webmention">webmentions</xhtml:a> for years, as
well as <xhtml:a href="https://microformats.org">microformats</xhtml:a>; I've
even included microformats in my markup for probably close to a
decade at this point. But accepting and sending webmentions, while
it seemed like a great idea, just never really made it to my
priority list.</xhtml:p>
<xhtml:p>Until it did.</xhtml:p>
<xhtml:p>Inspired by <xhtml:a href="https://www.jamestitcumb.com/posts/webmentions" class="u-in-reply-to">James Titcumb</xhtml:a> and <xhtml:a href="https://godless-internets.org/2026/08/27/critique-of-microformats2" class="in-reply-to">Owls</xhtml:a>, I started investigating how to
implement webmentions, and ended up going down the rabbit hole
myself.</xhtml:p>
<xhtml:p>There has long been a <xhtml:a href="https://packagist.org/packages/mf2/mf2">PHP API for Microformats
(php-mf2)</xhtml:a>. It's not been updated in 4 years — largely because
it's complete — and uses PCRE for finding microformats and
validating URIs. Here's the thing: the last two releases of PHP
(8.4 and 8.5 at the time I write this) have included some amazing
features that make things like this both far simpler and more
accurate. These include the new HTML5 parser included in PHP 8.4 —
which even provides <xhtml:code>querySelector()</xhtml:code> and
<xhtml:code>querySelectorAll()</xhtml:code> implementations — and the <xhtml:a href="https://www.php.net/manual/en/book.uri.php">Uri extension</xhtml:a>
included in PHP 8.5, which provides robust, standards-based URL
parsing and validation.</xhtml:p>
<xhtml:p>Add in things like <xhtml:a href="https://www.php-fig.org/psr/psr-18/">PSR-18's HTTP Client</xhtml:a>, and
it seemed possible to create a pretty minimal library that gives
full-featured support for both microformats and webmentions.</xhtml:p>
<xhtml:p>So, I decided to try my hand at it.</xhtml:p>
<xhtml:p>I'll likely open source the libraries I created (one for parsing
microformats, another for sending and receiving webmentions), but I
want to wait until I've ironed out any edge cases. While I've
tested against the various resources that <xhtml:a href="https://webmention.rocks">webmention.rocks</xhtml:a> provides, as well
as the <xhtml:a href="https://microformats.org">microformats website</xhtml:a>,
I'm sure that I'll be observing some oddities in the wild. But I
have webmention receiving in place, with microformats discovery for
identifying the type of webmention sent to my site. I have also
setup a post-publication process for parsing my own content for
links, and performing webmention discovery and sending. I want
these all to run for a while to find what is working and what isn't
in the real world.</xhtml:p>
<xhtml:p>In the meantime, feel free to send webmentions to my <xhtml:a href="/blog">blog posts</xhtml:a>, <xhtml:a href="/art">art gallery images</xhtml:a>, or
<xhtml:a href="/now">Now pages</xhtml:a>. Just like my comments, I moderate all
webmentions before publishing them (someday I'll blog about how I
accomplished that as well).</xhtml:p>
<xhtml:h4>Update</xhtml:h4>
<xhtml:p>I immediately discovered an error in how I was combing <xhtml:em>my
own content</xhtml:em> for potential links to which to send webmentions
when I first published this! Hopefully I have that corrected now,
and folks will get some mentions from this post!</xhtml:p>
<xhtml:div class="h-entry"><xhtml:img class="u-photo photo" width="50" src="https://avatars0.githubusercontent.com/u/25943?v=3&amp;u=79dd2ea1d4d8855944715d09ee4c86215027fa80&amp;s=140" alt="matthew"/> <xhtml:a class="u-url u-uid p-name" href="https://mwop.net/blog/2026-09-18-webmentions.html">Webmention
support</xhtml:a> was originally published <xhtml:time class="dt-published" datetime="2026-09-18T10:12:40-05:00">18 September 2026</xhtml:time> on
<xhtml:a href="https://mwop.net">https://mwop.net</xhtml:a> by <xhtml:a rel="author" class="p-author" href="https://mwop.net">Matthew Weier
O'Phinney</xhtml:a>.</xhtml:div>
</xhtml:div>
    </content>
  </entry>
</feed>
