Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 4424af7fc82df76bcf2fcaf1e1f373a4eb94a526)
+++ src/routes/posts.js	(revision 88788148df903019ffbc5b7d8b3dca7d1d759712)
@@ -811,4 +811,26 @@
     success: req.query.success || null, error: req.query.error || null,
   });
+});
+
+// Followers (remote AP actors following us) + per-account delivery health, so dead
+// accounts (never/last-delivered long ago) can be pruned after a manual check.
+router.get('/followers', requireSiteManager, (req, res) => {
+  const site = res.locals.site;
+  const followers = site ? ActivityPubService.listFollowers(site.slug) : [];
+  renderPage(req, res, 'pages/followers', {
+    pageTitle: 'Volgers', bodyClass: 'on-special',
+    followers,
+    success: req.query.success || null, error: req.query.error || null,
+  });
+});
+
+router.post('/followers/:id/remove', requireSiteManager, (req, res) => {
+  const site = res.locals.site;
+  const base = res.locals.siteUrlBase || '';
+  if (!site) return res.redirect(`${base}/followers`);
+  const ok = ActivityPubService.removeFollower(site.slug, parseInt(req.params.id, 10) || 0);
+  return res.redirect(`${base}/followers?` + (ok
+    ? 'success=' + encodeURIComponent('Volger verwijderd')
+    : 'error=' + encodeURIComponent('Volger niet gevonden')));
 });
 
