diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module
index cad200c..55e86ca 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -10,6 +10,7 @@
 use Drupal\Component\Utility\String;
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Cache\Cache;
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Render\Element;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Session\AccountInterface;
@@ -104,7 +105,6 @@ function filter_element_info() {
   );
   $type['processed_text'] = array(
     '#text' => '',
-    '#format' => NULL,
     '#filter_types_to_skip' => array(),
     '#langcode' => '',
     '#pre_render' => array(
@@ -306,13 +306,13 @@ function filter_fallback_format() {
  *
  * @param string $text
  *   The text to be filtered.
- * @param string|null $format_id
- *   (optional) The machine name of the filter format to be used to filter the
- *   text. Defaults to the fallback format. See filter_fallback_format().
+ * @param string $format_id
+ *   The machine name of the filter format to be used to filter the text.
  * @param string $langcode
  *   (optional) The language code of the text to be filtered, e.g. 'en' for
- *   English. This allows filters to be language-aware so language-specific
- *   text replacement can be implemented. Defaults to an empty string.
+ *   English. This allows filters to be language-aware so language-specific text
+ *   replacement can be implemented. Defaults to
+ *   Drupal\Core\Language\LanguageInterface::LANGCODE_NOT_SPECIFIED.
  * @param array $filter_types_to_skip
  *   (optional) An array of filter types to skip, or an empty array (default)
  *   to skip no filter types. All of the format's filters will be applied,
@@ -327,7 +327,7 @@ function filter_fallback_format() {
  *
  * @ingroup sanitization
  */
-function check_markup($text, $format_id = NULL, $langcode = '', $filter_types_to_skip = array()) {
+function check_markup($text, $format_id, $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED, $filter_types_to_skip = array()) {
   $build = array(
     '#type' => 'processed_text',
     '#text' => $text,
diff --git a/core/modules/filter/src/Element/ProcessedText.php b/core/modules/filter/src/Element/ProcessedText.php
index 9ddbc55..33b6935 100644
--- a/core/modules/filter/src/Element/ProcessedText.php
+++ b/core/modules/filter/src/Element/ProcessedText.php
@@ -65,6 +65,9 @@ public function getInfo() {
    * @return array
    *   The passed-in element with the filtered text in '#markup'.
    *
+   * @throws |InvalidArgumentException
+   *   When no $format_id is specified.
+   *
    * @ingroup sanitization
    */
   public static function preRenderText($element) {
@@ -74,7 +77,7 @@ public static function preRenderText($element) {
     $langcode = $element['#langcode'];
 
     if (!isset($format_id)) {
-      $format_id = static::configFactory()->get('filter.settings')->get('fallback_format');
+      throw new \InvalidArgumentException('Format ID is not set');
     }
     // If the requested text format does not exist, the text cannot be filtered.
     /** @var \Drupal\filter\Entity\FilterFormat $format **/
diff --git a/core/modules/filter/src/Tests/FilterAPITest.php b/core/modules/filter/src/Tests/FilterAPITest.php
index 955ee87..f9206e6 100644
--- a/core/modules/filter/src/Tests/FilterAPITest.php
+++ b/core/modules/filter/src/Tests/FilterAPITest.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\filter\Tests;
 
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Session\AnonymousUserSession;
 use Drupal\Core\TypedData\OptionsProviderInterface;
 use Drupal\Core\TypedData\DataDefinition;
@@ -69,14 +70,14 @@ function testCheckMarkupFilterSubset() {
     $expected_filtered_text = "Text with evil content and a URL: <a href=\"http://drupal.org\">http://drupal.org</a>!";
     $expected_filter_text_without_html_generators = "Text with evil content and a URL: http://drupal.org!";
 
-    $actual_filtered_text = check_markup($text, 'filtered_html', '', array());
+    $actual_filtered_text = check_markup($text, 'filtered_html', LanguageInterface::LANGCODE_NOT_SPECIFIED, array());
     $this->verbose("Actual:<pre>$actual_filtered_text</pre>Expected:<pre>$expected_filtered_text</pre>");
     $this->assertIdentical(
       $actual_filtered_text,
       $expected_filtered_text,
       'Expected filter result.'
     );
-    $actual_filtered_text_without_html_generators = check_markup($text, 'filtered_html', '', array(FilterInterface::TYPE_MARKUP_LANGUAGE));
+    $actual_filtered_text_without_html_generators = check_markup($text, 'filtered_html', LanguageInterface::LANGCODE_NOT_SPECIFIED, array(FilterInterface::TYPE_MARKUP_LANGUAGE));
     $this->verbose("Actual:<pre>$actual_filtered_text_without_html_generators</pre>Expected:<pre>$expected_filter_text_without_html_generators</pre>");
     $this->assertIdentical(
       $actual_filtered_text_without_html_generators,
@@ -87,7 +88,7 @@ function testCheckMarkupFilterSubset() {
     // this check focuses on the ability to filter multiple filter types at once.
     // Drupal core only ships with these two types of filters, so this is the
     // most extensive test possible.
-    $actual_filtered_text_without_html_generators = check_markup($text, 'filtered_html', '', array(FilterInterface::TYPE_HTML_RESTRICTOR, FilterInterface::TYPE_MARKUP_LANGUAGE));
+    $actual_filtered_text_without_html_generators = check_markup($text, 'filtered_html', LanguageInterface::LANGCODE_NOT_SPECIFIED, array(FilterInterface::TYPE_HTML_RESTRICTOR, FilterInterface::TYPE_MARKUP_LANGUAGE));
     $this->verbose("Actual:<pre>$actual_filtered_text_without_html_generators</pre>Expected:<pre>$expected_filter_text_without_html_generators</pre>");
     $this->assertIdentical(
       $actual_filtered_text_without_html_generators,
diff --git a/core/modules/filter/src/Tests/FilterNoFormatTest.php b/core/modules/filter/src/Tests/FilterNoFormatTest.php
index b173eb1..2ce5648 100644
--- a/core/modules/filter/src/Tests/FilterNoFormatTest.php
+++ b/core/modules/filter/src/Tests/FilterNoFormatTest.php
@@ -26,8 +26,7 @@ class FilterNoFormatTest extends WebTestBase {
   /**
    * Tests text without format.
    *
-   * Tests if text with no format is filtered the same way as text in the
-   * fallback format.
+   * Tests if text with no format is throwing an appropriate exception.
    */
   function testCheckMarkupNoFormat() {
     // Create some text. Include some HTML and line breaks, so we get a good
@@ -35,7 +34,17 @@ function testCheckMarkupNoFormat() {
     $text = "<strong>" . $this->randomMachineName(32) . "</strong>\n\n<div>" . $this->randomMachineName(32) . "</div>";
 
     // Make sure that when this text is run through check_markup() with no text
-    // format, it is filtered as though it is in the fallback format.
-    $this->assertEqual(check_markup($text), check_markup($text, filter_fallback_format()), 'Text with no format is filtered the same as text in the fallback format.');
+    // format, it throws an appropriate exception.
+    try {
+      check_markup($text, NULL);
+      $this->fail('\InvalidArgumentException expected');
+    }
+    catch (\InvalidArgumentException $e) {
+      $this->pass('\InvalidArgumentException expected and caught.');
+    }
+    catch (Exceptio $e) {
+      $this->fail('\InvalidArgumentException expected, but ' . get_class($e) . ' was thrown.');
+    }
+
   }
 }
diff --git a/core/modules/filter/src/Tests/FilterSecurityTest.php b/core/modules/filter/src/Tests/FilterSecurityTest.php
index 5a992ec..d8b7c7f 100644
--- a/core/modules/filter/src/Tests/FilterSecurityTest.php
+++ b/core/modules/filter/src/Tests/FilterSecurityTest.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\filter\Tests;
 
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\simpletest\WebTestBase;
 use Drupal\filter\Plugin\FilterInterface;
 
@@ -87,7 +88,7 @@ function testDisableFilterModule() {
   function testSkipSecurityFilters() {
     $text = "Text with some disallowed tags: <script />, <p><object>unicorn</object></p>, <i><table></i>.";
     $expected_filtered_text = "Text with some disallowed tags: , <p>unicorn</p>, .";
-    $this->assertEqual(check_markup($text, 'filtered_html', '', array()), $expected_filtered_text, 'Expected filter result.');
-    $this->assertEqual(check_markup($text, 'filtered_html', '', array(FilterInterface::TYPE_HTML_RESTRICTOR)), $expected_filtered_text, 'Expected filter result, even when trying to disable filters of the FilterInterface::TYPE_HTML_RESTRICTOR type.');
+    $this->assertEqual(check_markup($text, 'filtered_html', LanguageInterface::LANGCODE_NOT_SPECIFIED, array()), $expected_filtered_text, 'Expected filter result.');
+    $this->assertEqual(check_markup($text, 'filtered_html', LanguageInterface::LANGCODE_NOT_SPECIFIED, array(FilterInterface::TYPE_HTML_RESTRICTOR)), $expected_filtered_text, 'Expected filter result, even when trying to disable filters of the FilterInterface::TYPE_HTML_RESTRICTOR type.');
   }
 }
diff --git a/core/modules/views/src/Tests/Handler/AreaTextTest.php b/core/modules/views/src/Tests/Handler/AreaTextTest.php
index d0eaf14..93bf4e1 100644
--- a/core/modules/views/src/Tests/Handler/AreaTextTest.php
+++ b/core/modules/views/src/Tests/Handler/AreaTextTest.php
@@ -58,14 +58,14 @@ public function testAreaText() {
 
     $view->display_handler->handlers['header']['area']->options['format'] = filter_default_format();
     $build = $view->display_handler->handlers['header']['area']->render();
-    $this->assertEqual(check_markup($string), drupal_render($build), 'Existent format should return something');
+    $this->assertEqual(check_markup($string, filter_fallback_format()), drupal_render($build), 'Existent format should return something');
 
     // Empty results, and it shouldn't be displayed .
     $this->assertEqual(array(), $view->display_handler->handlers['header']['area']->render(TRUE), 'No result should lead to no header');
     // Empty results, and it should be displayed.
     $view->display_handler->handlers['header']['area']->options['empty'] = TRUE;
     $build = $view->display_handler->handlers['header']['area']->render(TRUE);
-    $this->assertEqual(check_markup($string), drupal_render($build), 'No result, but empty enabled lead to a full header');
+    $this->assertEqual(check_markup($string, filter_fallback_format()), drupal_render($build), 'No result, but empty enabled lead to a full header');
   }
 
 }
