diff --git a/src/components/proxy/proxy-item-mini.tsx b/src/components/proxy/proxy-item-mini.tsx
index aaf5ab169276f4fcb882282337705430fecae767..c7e98bceba79897a7125afe0bc4aa4af9b52c1e0 100644
--- a/src/components/proxy/proxy-item-mini.tsx
+++ b/src/components/proxy/proxy-item-mini.tsx
@@ -137,20 +137,14 @@ export const ProxyItemMini = (props: Props) => {
               e.stopPropagation();
               onDelay();
             }}
-            color={
-              delay > 500
-                ? "error.main"
-                : delay < 100
-                ? "success.main"
-                : "text.secondary"
-            }
+            color={delayManager.formatDelayColor(delay)}
             sx={({ palette }) =>
               !proxy.provider
                 ? { ":hover": { bgcolor: alpha(palette.primary.main, 0.15) } }
                 : {}
             }
           >
-            {delay > 1e5 ? "Error" : delay > 3000 ? "Timeout" : `${delay}`}
+            {delayManager.formatDelay(delay)}
           </Widget>
         )}
 
diff --git a/src/components/proxy/proxy-item.tsx b/src/components/proxy/proxy-item.tsx
index c5971127b15efdfc544708738addcb430a7fa1e3..d4c63c4a6ba84071b5b35f98dade9f318a8f7af3 100644
--- a/src/components/proxy/proxy-item.tsx
+++ b/src/components/proxy/proxy-item.tsx
@@ -145,20 +145,14 @@ export const ProxyItem = (props: Props) => {
                 e.stopPropagation();
                 onDelay();
               }}
-              color={
-                delay > 500
-                  ? "error.main"
-                  : delay < 100
-                  ? "success.main"
-                  : "text.secondary"
-              }
+              color={delayManager.formatDelayColor(delay)}
               sx={({ palette }) =>
                 !proxy.provider
                   ? { ":hover": { bgcolor: alpha(palette.primary.main, 0.15) } }
                   : {}
               }
             >
-              {delay > 1e5 ? "Error" : delay > 3000 ? "Timeout" : `${delay}ms`}
+              {delayManager.formatDelay(delay)}
             </Widget>
           )}
 
diff --git a/src/services/delay.ts b/src/services/delay.ts
index 4739d1b46d06d33f0fc6978c62cfaff734571b5b..91e4ab8985f9c92d7a52e6efb3d122b444952af5 100644
--- a/src/services/delay.ts
+++ b/src/services/delay.ts
@@ -107,6 +107,21 @@ class DelayManager {
       for (let i = 0; i < concurrency; ++i) help();
     });
   }
+
+  formatDelay(delay: number) {
+    if (delay < 0) return "-";
+    if (delay > 1e5) return "Error";
+    if (delay >= 10000) return "Timeout"; // 10s
+    return `${delay}`;
+  }
+
+  formatDelayColor(delay: number) {
+    if (delay <= 0) return "text.secondary";
+    if (delay >= 10000) return "error.main";
+    if (delay > 500) return "warning.main";
+    if (delay > 100) return "text.secondary";
+    return "success.main";
+  }
 }
 
 export default new DelayManager();