diff --git a/Misc/NEWS.d/next/Build/2021-11-29-11-24-45.bpo-40280.Knx7d7.rst b/Misc/NEWS.d/next/Build/2021-11-29-11-24-45.bpo-40280.Knx7d7.rst
new file mode 100644
index 00000000000000..28bcb4423ceb24
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2021-11-29-11-24-45.bpo-40280.Knx7d7.rst
@@ -0,0 +1 @@
+Disable unusable core extension modules on WASM/Emscripten targets.
diff --git a/configure b/configure
index 32aed7e49f2c04..0f961712649405 100755
--- a/configure
+++ b/configure
@@ -21047,6 +21047,10 @@ case $ac_sys_system in #(
     py_stdlib_not_available="_scproxy nis" ;; #(
   FreeBSD*) :
     py_stdlib_not_available="_scproxy spwd" ;; #(
+  Emscripten) :
+
+    py_stdlib_not_available="_curses _curses_panel _dbm _gdbm _multiprocessing _posixshmem _posixsubprocess _scproxy _xxsubinterpreters grp nis ossaudiodev resource spwd syslog termios"
+   ;; #(
   *) :
     py_stdlib_not_available="_scproxy"
  ;;
diff --git a/configure.ac b/configure.ac
index ec71470a74e028..21429470ebacb3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6191,6 +6191,26 @@ AS_CASE([$ac_sys_system],
   [CYGWIN*], [py_stdlib_not_available="_scproxy nis"],
   [QNX*], [py_stdlib_not_available="_scproxy nis"],
   [FreeBSD*], [py_stdlib_not_available="_scproxy spwd"],
+  [Emscripten], [
+    py_stdlib_not_available="m4_normalize([
+      _curses
+      _curses_panel
+      _dbm
+      _gdbm
+      _multiprocessing
+      _posixshmem
+      _posixsubprocess
+      _scproxy
+      _xxsubinterpreters
+      grp
+      nis
+      ossaudiodev
+      resource
+      spwd
+      syslog
+      termios
+    ])"
+  ],
   [py_stdlib_not_available="_scproxy"]
 )