diff --git a/components/status/StatusContent.vue b/components/status/StatusContent.vue
index 1dbc5da3..7eb94c0f 100644
--- a/components/status/StatusContent.vue
+++ b/components/status/StatusContent.vue
@@ -21,7 +21,8 @@ const isFiltered = $computed(() => status.account.id !== currentUser.value?.acco
 
 // check spoiler text or media attachment
 // needed to handle accounts that mark all their posts as sensitive
-const hasSpoilerOrSensitiveMedia = $computed(() => !!status.spoilerText || (status.sensitive && !!status.mediaAttachments.length))
+const spoilerTextPresent = $computed(() => !!status.spoilerText && status.spoilerText.trim().length === 0)
+const hasSpoilerOrSensitiveMedia = $computed(() => spoilerTextPresent || (status.sensitive && !!status.mediaAttachments.length))
 const isSensitiveNonSpoiler = computed(() => status.sensitive && !status.spoilerText && !!status.mediaAttachments.length)
 const hideAllMedia = computed(
   () => {
@@ -40,7 +41,7 @@ const hideAllMedia = computed(
   >
     <StatusBody v-if="(!isFiltered && isSensitiveNonSpoiler) || hideAllMedia" :status="status" :newer="newer" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" />
     <StatusSpoiler :enabled="hasSpoilerOrSensitiveMedia || isFiltered" :filter="isFiltered" :sensitive-non-spoiler="isSensitiveNonSpoiler || hideAllMedia" :is-d-m="isDM">
-      <template v-if="status.spoilerText" #spoiler>
+      <template v-if="spoilerTextPresent" #spoiler>
         <p>{{ status.spoilerText }}</p>
       </template>
       <template v-else-if="filterPhrase" #spoiler>