diff --git a/docs/tint/origin-trial-changes.md b/docs/tint/origin-trial-changes.md
index ff3c4f6..fb48d13 100644
--- a/docs/tint/origin-trial-changes.md
+++ b/docs/tint/origin-trial-changes.md
@@ -7,6 +7,7 @@
 * The `@block` attribute has been removed. [tint:1324](crbug.com/tint/1324)
 * The `@stride` attribute has been removed. [tint:1381](crbug.com/tint/1381)
 * Attributes using `[[attribute]]` syntax are no longer supported. [tint:1382](crbug.com/tint/1382)
+* The `elseif` keyword is no longer supported. [tint:1289](crbug.com/tint/1289)
 
 ## Changes for M101
 
diff --git a/src/tint/reader/wgsl/lexer.cc b/src/tint/reader/wgsl/lexer.cc
index 1d01375..e6a01da 100644
--- a/src/tint/reader/wgsl/lexer.cc
+++ b/src/tint/reader/wgsl/lexer.cc
@@ -971,8 +971,6 @@
     return {Token::Type::kDefault, source, "default"};
   if (str == "else")
     return {Token::Type::kElse, source, "else"};
-  if (str == "elseif")
-    return {Token::Type::kElseIf, source, "elseif"};
   if (str == "f32")
     return {Token::Type::kF32, source, "f32"};
   if (str == "fallthrough")
diff --git a/src/tint/reader/wgsl/lexer_test.cc b/src/tint/reader/wgsl/lexer_test.cc
index f9354e4..0833691 100644
--- a/src/tint/reader/wgsl/lexer_test.cc
+++ b/src/tint/reader/wgsl/lexer_test.cc
@@ -865,7 +865,6 @@
         TokenData{"default", Token::Type::kDefault},
         TokenData{"discard", Token::Type::kDiscard},
         TokenData{"else", Token::Type::kElse},
-        TokenData{"elseif", Token::Type::kElseIf},
         TokenData{"f32", Token::Type::kF32},
         TokenData{"fallthrough", Token::Type::kFallthrough},
         TokenData{"false", Token::Type::kFalse},
diff --git a/src/tint/reader/wgsl/parser_impl.cc b/src/tint/reader/wgsl/parser_impl.cc
index 0f62a2f..20e8d38 100644
--- a/src/tint/reader/wgsl/parser_impl.cc
+++ b/src/tint/reader/wgsl/parser_impl.cc
@@ -1684,9 +1684,6 @@
     bool else_if = false;
     if (match(Token::Type::kElse, &start)) {
       else_if = match(Token::Type::kIf);
-    } else if (match(Token::Type::kElseIf, &start)) {
-      deprecated(start, "'elseif' is now 'else if'");
-      else_if = true;
     } else {
       break;
     }
diff --git a/src/tint/reader/wgsl/parser_impl_elseif_stmt_test.cc b/src/tint/reader/wgsl/parser_impl_elseif_stmt_test.cc
index 8608771..56d978f 100644
--- a/src/tint/reader/wgsl/parser_impl_elseif_stmt_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_elseif_stmt_test.cc
@@ -64,68 +64,6 @@
   EXPECT_EQ(p->error(), "1:15: expected '{'");
 }
 
-////////////////////////////////////////////////////////////////////////////////
-// The tests below use the deprecated 'elseif' syntax
-////////////////////////////////////////////////////////////////////////////////
-
-TEST_F(ParserImplTest, DEPRECATED_ElseStmts) {
-  auto p = parser("elseif (a == 4) { a = b; c = d; }");
-  auto e = p->else_stmts();
-  EXPECT_FALSE(p->has_error()) << p->error();
-  EXPECT_EQ(
-      p->error(),
-      R"(1:1: use of deprecated language feature: 'elseif' is now 'else if')");
-  ASSERT_EQ(e.value.size(), 1u);
-
-  ASSERT_TRUE(e.value[0]->Is<ast::ElseStatement>());
-  ASSERT_NE(e.value[0]->condition, nullptr);
-  ASSERT_TRUE(e.value[0]->condition->Is<ast::BinaryExpression>());
-  EXPECT_EQ(e.value[0]->body->statements.size(), 2u);
-}
-
-TEST_F(ParserImplTest, DEPRECATED_ElseStmts_Multiple) {
-  auto p = parser("elseif (a == 4) { a = b; c = d; } elseif(c) { d = 2; }");
-  auto e = p->else_stmts();
-  EXPECT_FALSE(p->has_error()) << p->error();
-  EXPECT_EQ(
-      p->error(),
-      R"(1:1: use of deprecated language feature: 'elseif' is now 'else if'
-1:35: use of deprecated language feature: 'elseif' is now 'else if')");
-  ASSERT_EQ(e.value.size(), 2u);
-
-  ASSERT_TRUE(e.value[0]->Is<ast::ElseStatement>());
-  ASSERT_NE(e.value[0]->condition, nullptr);
-  ASSERT_TRUE(e.value[0]->condition->Is<ast::BinaryExpression>());
-  EXPECT_EQ(e.value[0]->body->statements.size(), 2u);
-
-  ASSERT_TRUE(e.value[1]->Is<ast::ElseStatement>());
-  ASSERT_NE(e.value[1]->condition, nullptr);
-  ASSERT_TRUE(e.value[1]->condition->Is<ast::IdentifierExpression>());
-  EXPECT_EQ(e.value[1]->body->statements.size(), 1u);
-}
-
-TEST_F(ParserImplTest, DEPRECATED_ElseStmts_InvalidBody) {
-  auto p = parser("elseif (true) { fn main() {}}");
-  auto e = p->else_stmts();
-  EXPECT_TRUE(e.errored);
-  EXPECT_TRUE(p->has_error());
-  EXPECT_EQ(
-      p->error(),
-      R"(1:1: use of deprecated language feature: 'elseif' is now 'else if'
-1:17: expected '}')");
-}
-
-TEST_F(ParserImplTest, DEPRECATED_ElseStmts_MissingBody) {
-  auto p = parser("elseif (true)");
-  auto e = p->else_stmts();
-  EXPECT_TRUE(e.errored);
-  EXPECT_TRUE(p->has_error());
-  EXPECT_EQ(
-      p->error(),
-      R"(1:1: use of deprecated language feature: 'elseif' is now 'else if'
-1:14: expected '{')");
-}
-
 }  // namespace
 }  // namespace wgsl
 }  // namespace reader
diff --git a/src/tint/reader/wgsl/token.cc b/src/tint/reader/wgsl/token.cc
index 266907e..c873e17 100644
--- a/src/tint/reader/wgsl/token.cc
+++ b/src/tint/reader/wgsl/token.cc
@@ -131,8 +131,6 @@
       return "default";
     case Token::Type::kElse:
       return "else";
-    case Token::Type::kElseIf:
-      return "elseif";
     case Token::Type::kF32:
       return "f32";
     case Token::Type::kFallthrough:
diff --git a/src/tint/reader/wgsl/token.h b/src/tint/reader/wgsl/token.h
index dcc0167..b25fb60 100644
--- a/src/tint/reader/wgsl/token.h
+++ b/src/tint/reader/wgsl/token.h
@@ -141,8 +141,6 @@
     kDefault,
     /// A 'else'
     kElse,
-    /// A 'elseif'
-    kElseIf,
     /// A 'f32'
     kF32,
     /// A 'fallthrough'
