diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 45295898f3..d5ef41b19d 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -19,6 +19,9 @@ class RemoveStatusService < BaseService
     @account  = status.account
     @options  = options
 
+    @visibility = @status.visibility&.to_sym || :public
+    @searchability = @status.searchability&.to_sym || @status.compute_searchability&.to_sym || :public
+
     with_redis_lock("distribute:#{@status.id}") do
       @status.discard_with_reblogs
 
@@ -146,7 +149,7 @@ class RemoveStatusService < BaseService
       featured_tag.decrement(@status.id)
     end
 
-    return unless %i(public public_unlisted login).include?(@status.visibility.to_sym) || (@status.unlisted_visibility? && %i(public public_unlisted).include?(@status.searchability.to_sym))
+    return unless %i(public public_unlisted login).include?(@visibility) || (@status.unlisted_visibility? && %i(public public_unlisted).include?(@searchability))
 
     return if skip_streaming?
 
@@ -157,7 +160,7 @@ class RemoveStatusService < BaseService
   end
 
   def remove_from_public
-    return unless %i(public public_unlisted login).include?(@status.visibility.to_sym)
+    return unless %i(public public_unlisted login).include?(@visibility)
 
     return if skip_streaming?
 
@@ -166,7 +169,7 @@ class RemoveStatusService < BaseService
   end
 
   def remove_from_media
-    return unless %i(public public_unlisted login).include?(@status.visibility.to_sym)
+    return unless %i(public public_unlisted login).include?(@visibility)
 
     return if skip_streaming?
 
diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb
index dd88f047a1..65ac785c04 100644
--- a/spec/services/remove_status_service_spec.rb
+++ b/spec/services/remove_status_service_spec.rb
@@ -83,6 +83,18 @@ RSpec.describe RemoveStatusService, :sidekiq_inline, type: :service do
     end
   end
 
+  context 'when removed status is null-searchability' do
+    let(:status) { PostStatusService.new.call(alice, visibility: 'unlisted', text: 'Public post') }
+
+    before do
+      status.update!(searchability: nil)
+    end
+
+    it 'does not throw error' do
+      expect { subject.call(status) }.to_not raise_error
+    end
+  end
+
   context 'when removed status is limited' do
     let(:status) { PostStatusService.new.call(alice, visibility: 'mutual', text: 'limited post') }