diff --git a/README.md b/README.md
index 1d397e3..3d10f87 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,8 @@
 
 ### Mac OS X
 
-- `python`: Version 2.7.0 or above.
+- For Intel-based Macs, macOS 10.13 or newer. For ARM64 M1 based Macs, macOS
+  11.0 or newer.
 - `java`: For running closure compiler (optional).  After installing emscripten
   via emsdk, typing 'emcc --help' should pop up a OS X dialog "Java is not
   installed. To open java, you need a Java SE 6 runtime. Would you like to
diff --git a/emsdk.bat b/emsdk.bat
index 66f6d11..70e6b70 100644
--- a/emsdk.bat
+++ b/emsdk.bat
@@ -7,6 +7,13 @@
 :: When using our bundled python we never want the users
 :: PYTHONHOME or PYTHONPATH
 :: https://github.com/emscripten-core/emsdk/issues/598
+if exist "%~dp0python\3.9.2-1_64bit\python.exe" (
+  set EMSDK_PY="%~dp0python\3.9.2-1_64bit\python.exe"
+  set PYTHONHOME=
+  set PYTHONPATH=
+  goto end
+)
+
 if exist "%~dp0python\3.7.4-pywin32_64bit\python.exe" (
   set EMSDK_PY="%~dp0python\3.7.4-pywin32_64bit\python.exe"
   set PYTHONHOME=
diff --git a/emsdk.ps1 b/emsdk.ps1
index 694d8fe..f9ec036 100644
--- a/emsdk.ps1
+++ b/emsdk.ps1
@@ -1,6 +1,7 @@
 $ScriptDirectory = Split-Path -parent $PSCommandPath
 
 $PythonLocations = $(
+    "python\3.9.2-1_64bit\python.exe",
     "python\3.7.4-pywin32_64bit\python.exe",
     "python\3.7.4_64bit\python.exe",
     "python\2.7.13.1_64bit\python-2.7.13.amd64\python.exe",
diff --git a/emsdk_manifest.json b/emsdk_manifest.json
index b0000e0..c344458 100644
--- a/emsdk_manifest.json
+++ b/emsdk_manifest.json
@@ -150,7 +150,8 @@
     "linux_url": "node-v8.9.1-linux-x86.tar.xz",
     "activated_path": "%installation_dir%/bin",
     "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
-    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
+    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%",
+    "is_old": true
   },
   {
     "id": "node",
@@ -160,7 +161,8 @@
     "linux_url": "https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-armv7l.tar.xz",
     "activated_path": "%installation_dir%/bin",
     "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
-    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
+    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%",
+    "is_old": true
   },
   {
     "id": "node",
@@ -172,7 +174,8 @@
     "linux_url": "node-v8.9.1-linux-x64.tar.xz",
     "activated_path": "%installation_dir%/bin",
     "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
-    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
+    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%",
+    "is_old": true
   },
   {
     "id": "node",
@@ -182,7 +185,8 @@
     "linux_url": "node-v8.9.1-linux-arm64.tar.xz",
     "activated_path": "%installation_dir%/bin",
     "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'",
-    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%"
+    "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%",
+    "is_old": true
   },
   {
     "id": "node",
@@ -234,7 +238,8 @@
     "arch": "x86",
     "windows_url": "WinPython-32bit-2.7.13.1Zero.zip",
     "activated_cfg": "PYTHON='%installation_dir%/python-2.7.13/python%.exe%'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/python-2.7.13/python%.exe%"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python-2.7.13/python%.exe%",
+    "is_old": true
   },
   {
     "id": "python",
@@ -243,7 +248,8 @@
     "arch": "x86_64",
     "windows_url": "WinPython-64bit-2.7.13.1Zero.zip",
     "activated_cfg": "PYTHON='%installation_dir%/python-2.7.13.amd64/python%.exe%'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/python-2.7.13.amd64/python%.exe%"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python-2.7.13.amd64/python%.exe%",
+    "is_old": true
   },
   {
     "id": "python",
@@ -252,7 +258,8 @@
     "arch": "x86",
     "windows_url": "python-3.7.4-embed-win32-patched.zip",
     "activated_cfg": "PYTHON='%installation_dir%/python.exe'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe",
+    "is_old": true
   },
   {
     "id": "python",
@@ -261,7 +268,8 @@
     "arch": "x86_64",
     "windows_url": "python-3.7.4-embed-amd64-patched.zip",
     "activated_cfg": "PYTHON='%installation_dir%/python.exe'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe",
+    "is_old": true
   },
   {
     "id": "python",
@@ -270,7 +278,8 @@
     "arch": "x86",
     "windows_url": "python-3.7.4-embed-win32+pywin32.zip",
     "activated_cfg": "PYTHON='%installation_dir%/python.exe'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe",
+    "is_old": true
   },
   {
     "id": "python",
@@ -279,7 +288,8 @@
     "arch": "x86_64",
     "windows_url": "python-3.7.4-embed-amd64+pywin32.zip",
     "activated_cfg": "PYTHON='%installation_dir%/python.exe'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe",
+    "is_old": true
   },
   {
     "id": "python",
@@ -288,7 +298,17 @@
     "arch": "x86_64",
     "macos_url": "python-3.7.4-2-macos.tar.gz",
     "activated_cfg": "PYTHON='%installation_dir%/bin/python3'",
-    "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.7/site-packages/certifi/cacert.pem"
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/bin/python3;SSL_CERT_FILE=%installation_dir%/lib/python3.7/site-packages/certifi/cacert.pem",
+    "is_old": true
+  },
+  {
+    "id": "python",
+    "version": "3.9.2-1",
+    "bitness": 64,
+    "arch": "x86_64",
+    "windows_url": "python-3.9.2-1-embed-amd64+pywin32.zip",
+    "activated_cfg": "PYTHON='%installation_dir%/python.exe'",
+    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe"
   },
   {
     "id": "python",
@@ -506,7 +526,7 @@
   {
     "version": "upstream-main",
     "bitness": 64,
-    "uses": ["python-3.7.4-pywin32-64bit", "llvm-git-main-64bit", "node-14.15.5-64bit", "emscripten-main-64bit", "binaryen-main-64bit"],
+    "uses": ["python-3.9.2-1-64bit", "llvm-git-main-64bit", "node-14.15.5-64bit", "emscripten-main-64bit", "binaryen-main-64bit"],
     "os": "win"
   },
   {
@@ -573,7 +593,7 @@
   {
     "version": "releases-upstream-%releases-tag%",
     "bitness": 64,
-    "uses": ["node-14.15.5-64bit", "python-3.7.4-2-64bit", "releases-upstream-%releases-tag%-64bit"],
+    "uses": ["node-14.15.5-64bit", "python-3.9.2-1-64bit", "releases-upstream-%releases-tag%-64bit"],
     "os": "macos",
     "arch": "x86_64",
     "custom_install_script": "emscripten_npm_install"
@@ -581,7 +601,7 @@
   {
     "version": "releases-upstream-%releases-tag%",
     "bitness": 64,
-    "uses": ["node-14.15.5-64bit", "python-3.7.4-pywin32-64bit", "java-8.152-64bit", "releases-upstream-%releases-tag%-64bit"],
+    "uses": ["node-14.15.5-64bit", "python-3.9.2-1-64bit", "java-8.152-64bit", "releases-upstream-%releases-tag%-64bit"],
     "os": "win",
     "custom_install_script": "emscripten_npm_install"
   },
diff --git a/scripts/update_python.py b/scripts/update_python.py
index f7509aa..390aa71 100755
--- a/scripts/update_python.py
+++ b/scripts/update_python.py
@@ -42,13 +42,31 @@
 upload_base = 'gs://webassembly/emscripten-releases-builds/deps/'
 
 
+def unzip_cmd():
+    # Use 7-Zip if available (https://www.7-zip.org/)
+    sevenzip = os.path.join(os.getenv('ProgramFiles'), '7-Zip', '7z.exe')
+    if os.path.isfile(sevenzip):
+        return [sevenzip, 'x']
+    # Fall back to 'unzip' tool
+    return ['unzip', '-q']
+
+
+def zip_cmd():
+    # Use 7-Zip if available (https://www.7-zip.org/)
+    sevenzip = os.path.join(os.getenv('ProgramFiles'), '7-Zip', '7z.exe')
+    if os.path.isfile(sevenzip):
+        return [sevenzip, 'a', '-mx9']
+    # Fall back to 'zip' tool
+    return ['zip', '-rq']
+
+
 def make_python_patch(arch):
     if arch == 'amd64':
       pywin32_filename = 'pywin32-%s.win-%s-py%s.exe' % (pywin32_version, arch, major_minor_version)
     else:
       pywin32_filename = 'pywin32-%s.%s-py%s.exe' % (pywin32_version, arch, major_minor_version)
     filename = 'python-%s-embed-%s.zip' % (version, arch)
-    out_filename = 'python-%s-embed-%s+pywin32.zip' % (version, arch)
+    out_filename = 'python-%s-%s-embed-%s+pywin32.zip' % (version, revision, arch)
     if not os.path.exists(pywin32_filename):
         download_url = pywin32_base + pywin32_filename
         print('Downloading pywin32: ' + download_url)
@@ -60,17 +78,21 @@
         urllib.request.urlretrieve(download_url, filename)
 
     os.mkdir('python-embed')
-    check_call(['unzip', '-q', os.path.abspath(filename)], cwd='python-embed')
-    os.remove(os.path.join('python-embed', 'python37._pth'))
+    check_call(unzip_cmd() + [os.path.abspath(filename)], cwd='python-embed')
+    os.remove(os.path.join('python-embed', 'python%s._pth' % major_minor_version.replace('.', '')))
 
     os.mkdir('pywin32')
-    rtn = subprocess.call(['unzip', '-q', os.path.abspath(pywin32_filename)], cwd='pywin32')
+    rtn = subprocess.call(unzip_cmd() + [os.path.abspath(pywin32_filename)], cwd='pywin32')
     assert rtn in [0, 1]
 
     os.mkdir(os.path.join('python-embed', 'lib'))
     shutil.move(os.path.join('pywin32', 'PLATLIB'), os.path.join('python-embed', 'lib', 'site-packages'))
 
-    check_call(['zip', '-rq', os.path.join('..', out_filename), '.'], cwd='python-embed')
+    check_call(zip_cmd() + [os.path.join('..', out_filename), '.'], cwd='python-embed')
+
+    # cleanup if everything went fine
+    shutil.rmtree('python-embed')
+    shutil.rmtree('pywin32')
 
     upload_url = upload_base + out_filename
     print('Uploading: ' + upload_url)
@@ -78,10 +100,6 @@
     print(' '.join(cmd))
     check_call(cmd)
 
-    # cleanup if everything went fine
-    shutil.rmtree('python-embed')
-    shutil.rmtree('pywin32')
-
 
 def build_python():
     if sys.platform.startswith('darwin'):
