diff --git a/docs/Status/Cxx2bPapers.csv b/docs/Status/Cxx2bPapers.csv
index a6bc898..5ebaa89 100644
--- a/docs/Status/Cxx2bPapers.csv
+++ b/docs/Status/Cxx2bPapers.csv
@@ -36,5 +36,5 @@
 "`P2321 <https://wg21.link/P2321>`__","LWG","``zip``","October 2021","",""
 "`P2340 <https://wg21.link/P2340>`__","LWG","Clarifying the status of the 'C headers'","October 2021","",""
 "`P2393 <https://wg21.link/P2393>`__","LWG","Cleaning up ``integer``-class types","October 2021","",""
-"`P2401 <https://wg21.link/P2401>`__","LWG","Add a conditional ``noexcept`` specification to ``std::exchange``","October 2021","",""
+"`P2401 <https://wg21.link/P2401>`__","LWG","Add a conditional ``noexcept`` specification to ``std::exchange``","October 2021","|Complete|","14.0"
 "","","","","",""
diff --git a/include/__utility/exchange.h b/include/__utility/exchange.h
index 9e20219..f9c92c6 100644
--- a/include/__utility/exchange.h
+++ b/include/__utility/exchange.h
@@ -12,6 +12,7 @@
 #include <__config>
 #include <__utility/forward.h>
 #include <__utility/move.h>
+#include <type_traits>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
@@ -22,7 +23,8 @@
 #if _LIBCPP_STD_VER > 11
 template<class _T1, class _T2 = _T1>
 inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
-_T1 exchange(_T1& __obj, _T2 && __new_value)
+_T1 exchange(_T1& __obj, _T2&& __new_value)
+    noexcept(is_nothrow_move_constructible<_T1>::value && is_nothrow_assignable<_T1&, _T2>::value)
 {
     _T1 __old_value = _VSTD::move(__obj);
     __obj = _VSTD::forward<_T2>(__new_value);
diff --git a/include/utility b/include/utility
index 6c9da84..7d021d9 100644
--- a/include/utility
+++ b/include/utility
@@ -183,7 +183,8 @@
   using index_sequence_for = make_index_sequence<sizeof...(T)>;
 
 template<class T, class U=T>
-    T exchange(T& obj, U&& new_value);
+    constexpr T exchange(T& obj, U&& new_value)
+      noexcept(is_nothrow_move_constructible<T>::value && is_nothrow_assignable<T&, U>::value); // constexpr in C++17, noexcept in C++23
 
 // 20.2.7, in-place construction // C++17
 struct in_place_t {
diff --git a/test/std/utilities/utility/exchange/exchange.pass.cpp b/test/std/utilities/utility/exchange/exchange.pass.cpp
index c38dd06..da5bf34 100644
--- a/test/std/utilities/utility/exchange/exchange.pass.cpp
+++ b/test/std/utilities/utility/exchange/exchange.pass.cpp
@@ -13,7 +13,8 @@
 
 // template<class T, class U=T>
 //    constexpr T            // constexpr after C++17
-//    exchange(T& obj, U&& new_value);
+//    exchange(T& obj, U&& new_value)
+//      noexcept(is_nothrow_move_constructible<T>::value && is_nothrow_assignable<T&, U>::value);
 
 #include <utility>
 #include <cassert>
@@ -37,7 +38,36 @@
     }
 #endif
 
+template<bool Move, bool Assign>
+struct TestNoexcept {
+    TestNoexcept() = default;
+    TestNoexcept(const TestNoexcept&);
+    TestNoexcept(TestNoexcept&&) noexcept(Move);
+    TestNoexcept& operator=(const TestNoexcept&);
+    TestNoexcept& operator=(TestNoexcept&&) noexcept(Assign);
+};
 
+constexpr bool test_noexcept() {
+  {
+    int x = 42;
+    ASSERT_NOEXCEPT(std::exchange(x, 42));
+  }
+  {
+    TestNoexcept<true, true> x;
+    ASSERT_NOEXCEPT(std::exchange(x, std::move(x)));
+    ASSERT_NOT_NOEXCEPT(std::exchange(x, x)); // copy-assignment is not noexcept
+  }
+  {
+    TestNoexcept<true, false> x;
+    ASSERT_NOT_NOEXCEPT(std::exchange(x, std::move(x)));
+  }
+  {
+    TestNoexcept<false, true> x;
+    ASSERT_NOT_NOEXCEPT(std::exchange(x, std::move(x)));
+  }
+
+  return true;
+}
 
 int main(int, char**)
 {
@@ -81,5 +111,7 @@
     static_assert(test_constexpr());
 #endif
 
+    static_assert(test_noexcept(), "");
+
   return 0;
 }
