diff --git a/src/Plugin/search_api/processor/RenderedItem.php b/src/Plugin/search_api/processor/RenderedItem.php
index 10eaa15..f4b14f8 100644
--- a/src/Plugin/search_api/processor/RenderedItem.php
+++ b/src/Plugin/search_api/processor/RenderedItem.php
@@ -211,7 +211,10 @@ class RenderedItem extends ProcessorPluginBase {
         continue;
       }
       $build = $item->getDatasource()->viewItem($item->getOriginalObject(), $this->configuration['view_mode'][$item->getDatasourceId()]);
-      $field->addValue($this->getRenderer()->renderPlain($build));
+      $value = (string) $this->getRenderer()->renderPlain($build);
+      if ($value) {
+        $field->addValue($value);
+      }
     }
 
     // Restore the original user.
diff --git a/src/Tests/Processor/RenderedItemTest.php b/src/Tests/Processor/RenderedItemTest.php
index d0abe02..a6d7987 100644
--- a/src/Tests/Processor/RenderedItemTest.php
+++ b/src/Tests/Processor/RenderedItemTest.php
@@ -139,6 +139,9 @@ class RenderedItemTest extends ProcessorTestBase {
       $field = $item->getField('rendered_item');
       $this->assertEqual($field->getType(), 'string', 'Node item ' . $nid . ' rendered value is identified as a string.');
       $values = $field->getValues();
+      // Test that the value is a string (not, e.g., a SafeString object).
+      $this->assertTrue(is_string($values[0]), 'Node item ' . $nid . ' rendered value is a string.');
+      $this->assertEqual(1, count($values), 'Node item ' . $nid . ' rendered value is a single value.');
       // These tests rely on the template not changing. However, if we'd only
       // check whether the field values themselves are included, there could
       // easier be false positives. For example the title text was present even
