Index: src/routes/artists.js
===================================================================
--- src/routes/artists.js	(revision 8afbdd6572a947bce4726d5aa0d0aa0d6c7e5067)
+++ src/routes/artists.js	(revision ce8c8c298d5ac9eae09ab3f1c522a1710ba832f8)
@@ -26,12 +26,17 @@
   if (!Number.isFinite(page) || page < 1) page = 1;
 
+  // De hoofd-/labelsite (oudste) is geen artiest -> uit de directory weren,
+  // consistent met de hub-home die 'm apart toont.
+  const mainRow = db.prepare('SELECT id FROM sites ORDER BY created_at ASC LIMIT 1').get();
+  const mainId = mainRow ? mainRow.id : '';
+
   // Zoekterm tegen titel/slug/tagline (case-insensitive via LIKE; SQLite LIKE is
   // standaard ongevoelig voor ASCII-hoofdletters). De ESCAPE '\' maakt %, _ en \
   // in de zoekterm letterlijk (anders zouden ze als wildcards werken).
-  const where = q
-    ? "WHERE (s.title LIKE @like ESCAPE '\\' OR s.slug LIKE @like ESCAPE '\\' OR s.tagline LIKE @like ESCAPE '\\')"
-    : '';
   const like = '%' + q.replace(/[\\%_]/g, (m) => '\\' + m) + '%';
-  const params = q ? { like } : {};
+  const conds = ['s.id != @mainId'];
+  if (q) conds.push("(s.title LIKE @like ESCAPE '\\' OR s.slug LIKE @like ESCAPE '\\' OR s.tagline LIKE @like ESCAPE '\\')");
+  const where = 'WHERE ' + conds.join(' AND ');
+  const params = q ? { mainId, like } : { mainId };
 
   const total = db.prepare(`SELECT COUNT(*) AS c FROM sites s ${where}`)
