diff --git a/emsdk.py b/emsdk.py
index f208a69..aeda7d5 100644
--- a/emsdk.py
+++ b/emsdk.py
@@ -2110,11 +2110,17 @@
 def load_releases_info():
   if not hasattr(load_releases_info, 'cached_info'):
     try:
-      text = open(sdk_path('emscripten-releases-tags.json'), 'r').read()
-      load_releases_info.cached_info = json.loads(text)
+      with open(sdk_path('emscripten-releases-tags.json')) as f:
+        text = f.read()
+      info = json.loads(text)
     except Exception as e:
       print('Error parsing emscripten-releases-tags.json!')
       exit_with_error(str(e))
+    for key, value in dict(info['aliases']).items():
+      info['aliases'][key + '-base'] = value + '-base'
+    for key, value in dict(info['releases']).items():
+      info['releases'][key + '-base'] = value + '-base'
+    load_releases_info.cached_info = info
 
   return load_releases_info.cached_info
 
@@ -2589,20 +2595,25 @@
   #   sdk-x.y.z-64bit
   # TODO: support short notation for old builds too?
   fullname = name
-  version = fullname.replace('sdk-', '').replace('releases-', '').replace('-64bit', '').replace('tag-', '')
-  sdk = 'sdk-' if not name.startswith('releases-') else ''
+  version = fullname
+  for pattern in ('sdk-', 'releases-', '-64bit', 'tag-', '-base'):
+    version = version.replace(pattern, '')
+  if name.startswith('releases-') or name.endswith('-base'):
+    sdk_prefix = ''
+  else:
+    sdk_prefix = 'sdk-'
   releases_info = load_releases_info()['releases']
   release_hash = get_release_hash(version, releases_info)
   if release_hash:
     # Known release hash
-    full_name = '%sreleases-%s-64bit' % (sdk, release_hash)
+    full_name = '%sreleases-%s-64bit' % (sdk_prefix, release_hash)
     print("Resolving SDK version '%s' to '%s'" % (version, full_name))
     return full_name
 
   if len(version) == 40:
     global extra_release_tag
     extra_release_tag = version
-    return '%sreleases-%s-64bit' % (sdk, version)
+    return '%sreleases-%s-64bit' % (sdk_prefix, version)
 
   return name
 
@@ -2848,7 +2859,8 @@
     releases_versions = sorted(load_releases_versions(), key=version_key, reverse=True)
     releases_info = load_releases_info()['releases']
     for ver in releases_versions:
-      print('         %s    %s' % (ver, installed_sdk_text('sdk-releases-%s-64bit' % get_release_hash(ver, releases_info))))
+      if not ver.endswith('-base'):
+        print('         %s    %s' % (ver, installed_sdk_text('sdk-releases-%s-64bit' % get_release_hash(ver, releases_info))))
     print()
 
     # Use array to work around the lack of being able to mutate from enclosing
diff --git a/test/test.py b/test/test.py
index 98557a6..c82a9a0 100755
--- a/test/test.py
+++ b/test/test.py
@@ -252,6 +252,12 @@
     # Test that its possible to install emscripten as tool instead of SDK
     checked_call_with_output(emsdk + ' install releases-77b065ace39e6ab21446e13f92897f956c80476a', unexpected='Installing SDK')
 
+  def test_install_alias(self):
+    # 3.1.18 is 49d45744895c7d7e28acd94a385d7ee361653b4a
+    run_emsdk('install 3.1.18-base')
+    checked_call_with_output(emsdk + ' install install 3.1.18-base', unexpected='Installing SDK')
+    checked_call_with_output(emsdk + ' install install releases-upstream-49d45744895c7d7e28acd94a385d7ee361653b4a', unexpected='already downloaded, skipping', unexpected='Downloading:')
+
   def test_activate_missing(self):
     run_emsdk('install latest')
     failing_call_with_output(emsdk + ' activate 2.0.1', expected="error: tool is not installed and therefore cannot be activated: 'releases-13e29bd55185e3c12802bc090b4507901856b2ba-64bit'")
