Index: src/services/AudioEmbedService.js
===================================================================
--- src/services/AudioEmbedService.js	(revision 48481cd4312d157017474ea7e2b0d723b63ac73c)
+++ src/services/AudioEmbedService.js	(revision 8e1af9c0d284f99d5dbe69c16f2f5242239f9e4e)
@@ -10,4 +10,8 @@
  * </figure>
  */
+
+// Dezelfde lijst soorten als de server en de editor gebruiken. Zie
+// assets/js/shared/post-music-type.js: die module is puur, dus hij mag hier.
+import { SOORTEN } from '../assets/js/shared/post-music-type.js';
 
 // "Open in" icons (brand-colored via CSS .pat-link--).
@@ -538,6 +542,12 @@
 
       const albumDomId = 'album-' + id;
-      const kind = (pl.kind === 'playlist') ? 'playlist' : 'album';
-      const kindLabel = kind === 'playlist' ? '📃 Playlist' : '💿 Album';
+      // De soort zoals hij is opgeslagen. Stond hier als ternair met twee
+      // uitkomsten, en dan draagt een mixtape het jasje en het woord van een
+      // album -- dezelfde vorm die op vier andere plekken al misging.
+      // DE SPELER IS ER NOG NIET. Een mixtape rendert voorlopig als de gewone
+      // lijst; wat hier af is, is dat hij zichzelf goed noemt.
+      const kind = SOORTEN.includes(pl.kind) ? pl.kind : 'album';
+      const KIND_LABEL = { album: '💿 Album', playlist: '📃 Playlist', mixtape: '📼 Mixtape' };
+      const kindLabel = KIND_LABEL[kind] || KIND_LABEL.album;
       const titleH  = this.escape(pl.title || 'Naamloos');
       const artistH = this.escape(pl.artist || '');
@@ -638,5 +648,5 @@
             data-pcms-track-url="${firstUrl}"
             data-pcms-album-id="${albumDomId}"
-            aria-label="Speel ${kind === 'playlist' ? 'playlist' : 'album'}">
+            aria-label="Speel ${kind}">
       ${coverH
         ? `<span class="post-album-cover" style="background-image:url('${coverH}')"></span>`
