Index: src/views/pages/post-edit.ejs
===================================================================
--- src/views/pages/post-edit.ejs	(revision 92f6976f791f1d27ee577caf5bd62c219b25420b)
+++ src/views/pages/post-edit.ejs	(revision b7d4458e21f8eef0c969874d5d571662936d8702)
@@ -242,4 +242,7 @@
           <span>🔞 <%= t('pedit.nsfw_label') %></span>
         </label>
+        <input type="text" name="content_warning" value="<%= post.content_warning || '' %>" maxlength="200"
+               placeholder="<%= t('pedit.nsfw_cw_ph') %>"
+               style="width:100%;box-sizing:border-box;margin:6px 0 2px;font-size:13px;padding:7px 9px">
         <% if (typeof premiumUnlocked === 'undefined' || premiumUnlocked) { %>
           <label class="pe-checkbox">
Index: src/views/pages/post.ejs
===================================================================
--- src/views/pages/post.ejs	(revision 92f6976f791f1d27ee577caf5bd62c219b25420b)
+++ src/views/pages/post.ejs	(revision b7d4458e21f8eef0c969874d5d571662936d8702)
@@ -13,5 +13,5 @@
     <div class="nsfw-banner">
       <span class="nsfw-banner-icon">🔞</span>
-      <span class="nsfw-banner-text"><%= t('post.nsfw_warning') %></span>
+      <span class="nsfw-banner-text"><%= post.content_warning || t('post.nsfw_warning') %></span>
       <button type="button" class="nsfw-banner-btn nsfw-reveal"><%= t('post.nsfw_show') %></button>
     </div>
Index: src/views/partials/post-card.ejs
===================================================================
--- src/views/partials/post-card.ejs	(revision 92f6976f791f1d27ee577caf5bd62c219b25420b)
+++ src/views/partials/post-card.ejs	(revision b7d4458e21f8eef0c969874d5d571662936d8702)
@@ -50,5 +50,5 @@
        aria-label="<%= post.title || '(zonder titel)' %>" tabindex="-1">
       <img src="<%= post.cover_image_url %>" alt="" loading="lazy" decoding="async">
-      <% if (post.nsfw) { %><span class="nsfw-veil"><span class="nsfw-veil-label">🔞 <%= t('post.nsfw_warning') %></span><span class="nsfw-veil-btn"><%= t('post.nsfw_show') %></span></span><% } %>
+      <% if (post.nsfw) { %><span class="nsfw-veil"><span class="nsfw-veil-label">🔞 <%= post.content_warning || t('post.nsfw_warning') %></span><span class="nsfw-veil-btn"><%= t('post.nsfw_show') %></span></span><% } %>
     </a>
   <% } %>
Index: src/views/partials/post-tile.ejs
===================================================================
--- src/views/partials/post-tile.ejs	(revision 92f6976f791f1d27ee577caf5bd62c219b25420b)
+++ src/views/partials/post-tile.ejs	(revision b7d4458e21f8eef0c969874d5d571662936d8702)
@@ -37,4 +37,4 @@
     <% if (_src) { %><span class="grid-tile-gradient-src">van <%= _src %></span><% } %>
   <% } %>
-  <% if (post.nsfw) { %><div class="nsfw-veil"><span class="nsfw-veil-label">🔞 <%= t('post.nsfw_warning') %></span><span class="nsfw-veil-btn"><%= t('post.nsfw_show') %></span></div><% } %>
+  <% if (post.nsfw) { %><div class="nsfw-veil"><span class="nsfw-veil-label">🔞 <%= post.content_warning || t('post.nsfw_warning') %></span><span class="nsfw-veil-btn"><%= t('post.nsfw_show') %></span></div><% } %>
 </a>
