diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs
index ac6c9e81..95f12d4a 100644
--- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs
@@ -67,9 +67,9 @@
             this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
             this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
             this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
+            this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
             this.tabGroup = new System.Windows.Forms.TabControl();
             this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
-            this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
             this.scBig = new System.Windows.Forms.SplitContainer();
             this.gbServers = new System.Windows.Forms.GroupBox();
             this.mainMsgControl = new v2rayN.Forms.MainMsgControl();
@@ -111,6 +111,9 @@
             this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
             this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
             this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
+            this.tsbCheckUpdateClashCore = new System.Windows.Forms.ToolStripMenuItem();
+            this.tsbCheckUpdateClashMetaCore = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();
             this.tsbCheckUpdateGeo = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
@@ -208,6 +211,7 @@
             this.menuExport2ShareUrl,
             this.menuExport2SubContent});
             this.cmsLv.Name = "cmsLv";
+            this.cmsLv.OwnerItem = this.tsbServer;
             resources.ApplyResources(this.cmsLv, "cmsLv");
             // 
             // menuAddVmessServer
@@ -414,6 +418,13 @@
             resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
             this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
             // 
+            // tsbServer
+            // 
+            this.tsbServer.DropDown = this.cmsLv;
+            this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
+            resources.ApplyResources(this.tsbServer, "tsbServer");
+            this.tsbServer.Name = "tsbServer";
+            // 
             // tabGroup
             // 
             resources.ApplyResources(this.tabGroup, "tabGroup");
@@ -426,13 +437,6 @@
             resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
             this.qrCodeControl.Name = "qrCodeControl";
             // 
-            // tsbServer
-            // 
-            this.tsbServer.DropDown = this.cmsLv;
-            this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
-            resources.ApplyResources(this.tsbServer, "tsbServer");
-            this.tsbServer.Name = "tsbServer";
-            // 
             // scBig
             // 
             resources.ApplyResources(this.scBig, "scBig");
@@ -707,6 +711,9 @@
             this.tsbCheckUpdateN,
             this.tsbCheckUpdateCore,
             this.tsbCheckUpdateXrayCore,
+            this.toolStripSeparator16,
+            this.tsbCheckUpdateClashCore,
+            this.tsbCheckUpdateClashMetaCore,
             this.toolStripSeparator15,
             this.tsbCheckUpdateGeo});
             this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
@@ -731,6 +738,23 @@
             resources.ApplyResources(this.tsbCheckUpdateXrayCore, "tsbCheckUpdateXrayCore");
             this.tsbCheckUpdateXrayCore.Click += new System.EventHandler(this.tsbCheckUpdateXrayCore_Click);
             // 
+            // toolStripSeparator16
+            // 
+            this.toolStripSeparator16.Name = "toolStripSeparator16";
+            resources.ApplyResources(this.toolStripSeparator16, "toolStripSeparator16");
+            // 
+            // tsbCheckUpdateClashCore
+            // 
+            this.tsbCheckUpdateClashCore.Name = "tsbCheckUpdateClashCore";
+            resources.ApplyResources(this.tsbCheckUpdateClashCore, "tsbCheckUpdateClashCore");
+            this.tsbCheckUpdateClashCore.Click += new System.EventHandler(this.tsbCheckUpdateClashCore_Click);
+            // 
+            // tsbCheckUpdateClashMetaCore
+            // 
+            this.tsbCheckUpdateClashMetaCore.Name = "tsbCheckUpdateClashMetaCore";
+            resources.ApplyResources(this.tsbCheckUpdateClashMetaCore, "tsbCheckUpdateClashMetaCore");
+            this.tsbCheckUpdateClashMetaCore.Click += new System.EventHandler(this.tsbCheckUpdateClashMetaCore_Click);
+            // 
             // toolStripSeparator15
             // 
             this.toolStripSeparator15.Name = "toolStripSeparator15";
@@ -936,6 +960,9 @@
         private System.Windows.Forms.ToolStripMenuItem menuMoveDown;
         private System.Windows.Forms.ToolStripMenuItem menuMoveBottom;
         private System.Windows.Forms.ToolStripMenuItem menuServerFilter;
+        private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashCore;
+        private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashMetaCore;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
     }
 }
 
diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs
index f57d92cc..8c88b416 100644
--- a/v2rayN/v2rayN/Forms/MainForm.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.cs
@@ -1327,6 +1327,16 @@ namespace v2rayN.Forms
             CheckUpdateCore(ECoreType.Xray);
         }
 
+        private void tsbCheckUpdateClashCore_Click(object sender, EventArgs e)
+        {
+            CheckUpdateCore(ECoreType.clash);
+        }
+
+        private void tsbCheckUpdateClashMetaCore_Click(object sender, EventArgs e)
+        {
+            CheckUpdateCore(ECoreType.clash_meta);
+        }
+
         private void CheckUpdateCore(ECoreType type)
         {
             void _updateUI(bool success, string msg)
diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx
index 553fd572..565876f0 100644
--- a/v2rayN/v2rayN/Forms/MainForm.resx
+++ b/v2rayN/v2rayN/Forms/MainForm.resx
@@ -320,8 +320,20 @@
   
     Export subscription (base64) share to clipboard
   
+  
+    Magenta
+  
+  
+    64, 53
+  
+  
+    Servers
+  
+  
+    ImageAboveText
+  
   
-    356, 622
+    356, 600
   
   
     cmsLv
@@ -470,18 +482,6 @@
   
     0
   
-  
-    Magenta
-  
-  
-    64, 53
-  
-  
-    Servers
-  
-  
-    ImageAboveText
-  
   
     Fill
   
@@ -825,28 +825,43 @@
     6, 56
   
   
-    203, 22
+    219, 22
   
   
     v2rayN (this software)
   
   
-    203, 22
+    219, 22
   
   
-    Update v2flyCore
+    Update v2fly Core
   
   
-    203, 22
+    219, 22
   
   
-    Update XrayCore
+    Update Xray Core
+  
+  
+    216, 6
+  
+  
+    219, 22
+  
+  
+    Update clash Core
+  
+  
+    219, 22
+  
+  
+    Update Clash.Meta Core
   
   
-    200, 6
+    216, 6
   
   
-    203, 22
+    219, 22
   
   
     Update Geo files
@@ -1391,6 +1406,24 @@
   
     System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
   
+  
+    toolStripSeparator16
+  
+  
+    System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    tsbCheckUpdateClashCore
+  
+  
+    System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    tsbCheckUpdateClashMetaCore
+  
+  
+    System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
   
     toolStripSeparator15
   
diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx
index 740a1506..b4881f2c 100644
--- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx
+++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx
@@ -561,4 +561,10 @@
   
     设置服务器过滤器 (Ctrl+F)
   
+  
+    Update clash Core
+  
+  
+    Update Clash.Meta Core
+  
 
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Handler/LazyConfig.cs b/v2rayN/v2rayN/Handler/LazyConfig.cs
index 71b53f3a..0f15823d 100644
--- a/v2rayN/v2rayN/Handler/LazyConfig.cs
+++ b/v2rayN/v2rayN/Handler/LazyConfig.cs
@@ -69,7 +69,8 @@ namespace v2rayN.Handler
                 coreType = ECoreType.v2rayN,
                 coreUrl = Global.NUrl,
                 coreLatestUrl = Global.NUrl + "/latest",
-                coreDownloadUrl = Global.NUrl + "/download/{0}/v2rayN.zip",
+                coreDownloadUrl32 = Global.NUrl + "/download/{0}/v2rayN.zip",
+                coreDownloadUrl64 = Global.NUrl + "/download/{0}/v2rayN.zip",
             });
 
             coreInfos.Add(new CoreInfo
@@ -79,7 +80,8 @@ namespace v2rayN.Handler
                 arguments = "",
                 coreUrl = Global.v2flyCoreUrl,
                 coreLatestUrl = Global.v2flyCoreUrl + "/latest",
-                coreDownloadUrl = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
+                coreDownloadUrl32 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
+                coreDownloadUrl64 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
                 match = "V2Ray"
             });
 
@@ -90,7 +92,8 @@ namespace v2rayN.Handler
                 arguments = "",
                 coreUrl = Global.xrayCoreUrl,
                 coreLatestUrl = Global.xrayCoreUrl + "/latest",
-                coreDownloadUrl = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
+                coreDownloadUrl32 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
+                coreDownloadUrl64 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
                 match = "Xray"
             });
 
@@ -99,7 +102,11 @@ namespace v2rayN.Handler
                 coreType = ECoreType.clash,
                 coreExes = new List { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" },
                 arguments = "-f config.json",
-                coreUrl = Global.clashCoreUrl
+                coreUrl = Global.clashCoreUrl,
+                coreLatestUrl = Global.clashCoreUrl + "/latest",
+                coreDownloadUrl32 = Global.clashCoreUrl + "/download/{0}/clash-windows-386-{0}.zip",
+                coreDownloadUrl64 = Global.clashCoreUrl + "/download/{0}/clash-windows-amd64-{0}.zip",
+                match = "v"
             });
 
             coreInfos.Add(new CoreInfo
@@ -107,7 +114,10 @@ namespace v2rayN.Handler
                 coreType = ECoreType.clash_meta,
                 coreExes = new List { "Clash.Meta-windows-amd64v1", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
                 arguments = "-f config.json",
-                coreUrl = Global.clashMetaCoreUrl
+                coreUrl = Global.clashMetaCoreUrl,
+                coreLatestUrl = Global.clashMetaCoreUrl + "/latest",
+                coreDownloadUrl32 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-386-{0}.zip",
+                coreDownloadUrl64 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-amd64-compatible-{0}.zip",
             });
 
             coreInfos.Add(new CoreInfo
@@ -115,7 +125,10 @@ namespace v2rayN.Handler
                 coreType = ECoreType.hysteria,
                 coreExes = new List { "hysteria-tun-windows-6.0-amd64", "hysteria-tun-windows-6.0-386", "hysteria" },
                 arguments = "",
-                coreUrl = Global.hysteriaCoreUrl
+                coreUrl = Global.hysteriaCoreUrl,
+                coreLatestUrl = Global.hysteriaCoreUrl + "/latest",
+                coreDownloadUrl32 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-386.exe",
+                coreDownloadUrl64 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-amd64.exe",
             });
 
             coreInfos.Add(new CoreInfo
diff --git a/v2rayN/v2rayN/Handler/UpdateHandle.cs b/v2rayN/v2rayN/Handler/UpdateHandle.cs
index 9e30e38d..c200bbfe 100644
--- a/v2rayN/v2rayN/Handler/UpdateHandle.cs
+++ b/v2rayN/v2rayN/Handler/UpdateHandle.cs
@@ -295,7 +295,7 @@ namespace v2rayN.Handler
             try
             {
                 var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
-                string url = coreInfo.coreLatestUrl;               
+                string url = coreInfo.coreLatestUrl;
 
                 var result = await (new DownloadHandle()).UrlRedirectAsync(url, true);
                 if (!Utils.IsNullOrEmpty(result))
@@ -374,29 +374,41 @@ namespace v2rayN.Handler
                 string curVersion;
                 string message;
                 string url;
-                if (type == ECoreType.v2fly)
+                switch (type)
                 {
-                    curVersion = "v" + getCoreVersion(type);
-                    message = string.Format(ResUI.IsLatestCore, curVersion);
-                    string osBit = Environment.Is64BitProcess ? "64" : "32";
-                    url = string.Format(coreInfo.coreDownloadUrl, version, osBit);
-                }
-                else if (type == ECoreType.Xray)
-                {
-                    curVersion = "v" + getCoreVersion(type);
-                    message = string.Format(ResUI.IsLatestCore, curVersion);
-                    string osBit = Environment.Is64BitProcess ? "64" : "32";
-                    url = string.Format(coreInfo.coreDownloadUrl, version, osBit);
-                }
-                else if (type == ECoreType.v2rayN)
-                {
-                    curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
-                    message = string.Format(ResUI.IsLatestN, curVersion);
-                    url = string.Format(coreInfo.coreDownloadUrl, version);
-                }
-                else
-                {
-                    throw new ArgumentException("Type");
+                    case ECoreType.v2fly:
+                    case ECoreType.Xray:
+                        {
+                            curVersion = "v" + getCoreVersion(type);
+                            message = string.Format(ResUI.IsLatestCore, curVersion);
+                            string osBit = Environment.Is64BitProcess ? "64" : "32";
+                            url = string.Format(coreInfo.coreDownloadUrl64, version, osBit);
+                            break;
+                        }
+                    case ECoreType.clash:
+                    case ECoreType.clash_meta:
+                        {
+                            curVersion = "";//getCoreVersion(type);
+                            message = string.Format(ResUI.IsLatestCore, curVersion);
+                            if (Environment.Is64BitProcess)
+                            {
+                                url = string.Format(coreInfo.coreDownloadUrl64, version);
+                            }
+                            else
+                            {
+                                url = string.Format(coreInfo.coreDownloadUrl32, version);
+                            }
+                            break;
+                        }
+                    case ECoreType.v2rayN:
+                        {
+                            curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
+                            message = string.Format(ResUI.IsLatestN, curVersion);
+                            url = string.Format(coreInfo.coreDownloadUrl64, version);
+                            break;
+                        }
+                    default:
+                        throw new ArgumentException("Type");
                 }
 
                 if (curVersion == version)
diff --git a/v2rayN/v2rayN/Mode/CoreInfo.cs b/v2rayN/v2rayN/Mode/CoreInfo.cs
index 86391c7d..4afc1c22 100644
--- a/v2rayN/v2rayN/Mode/CoreInfo.cs
+++ b/v2rayN/v2rayN/Mode/CoreInfo.cs
@@ -16,7 +16,9 @@ namespace v2rayN.Mode
 
         public string coreLatestUrl { get; set; }
 
-        public string coreDownloadUrl { get; set; }
+        public string coreDownloadUrl32 { get; set; }
+
+        public string coreDownloadUrl64 { get; set; }
 
         public string match { get; set; }
     }