https://vibecheck.itool.tech/

Page structure & technical metrics

Words

376

Action candidates

4

Images

30

HTML

100 KB

Copy

Title chars
18
Meta chars
51
H1
1
H2
0

Action

Primary

手气不错

Forms
1/ 1 fields
On-site links
36
Off-site links
0

Security & metadata

HTTPS
yes
HSTS
no
CSP
no
nosniff
no
viewport
yes
Icon
yes
JSON-LD
yes
Analytics
no

Page

Next.js / Lovable / v0 / Tailwind

Scripts
10 ext / 12 inline
Lang
zh
Third-party hosts
no

Lighthouse

Simulated mobile · Performance

70 / 100

2026-09-05 · Lab data, not field data.

View details

Simulated mobile · Lab data, not field data
2026-09-05T04:37:54.017Z · Lighthouse 13.4.1

Performance70/ 100
Accessibility100/ 100
Best practices100/ 100
SEO100/ 100
LCP · Largest content11,706 ms
CLS · Layout shift0.001
TBT · Blocking time92 ms
FCP · First content2,706 ms
SI · Speed index3,028 ms

Results vary by server, network and environment, independently of taste/conversion scores. Diagnostics retain Lighthouse wording.

Minimize main-thread work

3.5 s

Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to minimize main-thread work

Elements & resources
{
  "type": "table",
  "items": [
    {
      "group": "styleLayout",
      "duration": 1282.5880000000002,
      "groupLabel": "Style & Layout"
    },
    {
      "group": "other",
      "duration": 1181.0079999999753,
      "groupLabel": "Other"
    },
    {
      "group": "scriptEvaluation",
      "duration": 568.5080000000003,
      "groupLabel": "Script Evaluation"
    },
    {
      "group": "paintCompositeRender",
      "duration": 267.064,
      "groupLabel": "Rendering"
    },
    {
      "group": "scriptParseCompile",
      "duration": 116.95200000000001,
      "groupLabel": "Script Parsing & Compilation"
    },
    {
      "group": "parseHTML",
      "duration": 32.92,
      "groupLabel": "Parse HTML & CSS"
    },
    {
      "group": "garbageCollection",
      "duration": 24.367999999999988,
      "groupLabel": "Garbage Collection"
    }
  ],
  "headings": [
    {
      "key": "groupLabel",
      "label": "Category",
      "valueType": "text"
    },
    {
      "key": "duration",
      "label": "Time Spent",
      "valueType": "ms",
      "granularity": 1
    }
  ],
  "sortedBy": [
    "duration"
  ]
}

Elements with visible text labels do not have matching accessible names.

Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. Learn more about accessible names.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "node": {
        "lhId": "1-0-BUTTON",
        "path": "1,HTML,1,BODY,3,DIV,1,HEADER,0,DIV,2,DIV,0,DIV,0,BUTTON",
        "type": "node",
        "snippet": "<button class=\"language-trigger\" aria-label=\"选择语言\" aria-haspopup=\"menu\" aria-expanded=\"false\" aria-controls=\"_R_tilvivb_\" aria-busy=\"false\">",
        "selector": "div.mx-auto > div.flex > div.language-switch > button.language-trigger",
        "nodeLabel": "中文",
        "explanation": "Fix any of the following:\n  Text inside the element is not included in the accessible name",
        "boundingRect": {
          "top": 12,
          "left": 168,
          "right": 250,
          "width": 82,
          "bottom": 52,
          "height": 40
        }
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "Failing Elements",
      "valueType": "node",
      "subItemsHeading": {
        "key": "relatedNode",
        "valueType": "node"
      }
    }
  ],
  "debugData": {
    "tags": [
      "cat.semantics",
      "wcag21a",
      "wcag253",
      "EN-301-549",
      "EN-9.2.5.3",
      "RGAAv4",
      "RGAA-6.1.5",
      "experimental"
    ],
    "type": "debugdata",
    "impact": "serious"
  }
}

Avoid enormous network payloads

Total size was 3,014 KiB

Large network payloads cost users real money and are highly correlated with long load times. Learn how to reduce payload sizes.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/lovable-dev/screenshot?kind=desktop",
      "totalBytes": 715973
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/readymag-com/screenshot?kind=desktop",
      "totalBytes": 619658
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/cursor-com/screenshot?kind=desktop",
      "totalBytes": 282294
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/teenage-engineering/screenshot?kind=desktop",
      "totalBytes": 203564
    },
    {
      "url": "https://vibecheck.itool.tech/images/macbook-pro-front-hardware.png",
      "totalBytes": 142199
    },
    {
      "url": "https://vibecheck.itool.tech/_next/static/css/93829c03ac31244e.css",
      "totalBytes": 129168
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/gumroad-com/screenshot?kind=desktop",
      "totalBytes": 85374
    },
    {
      "url": "https://vibecheck.itool.tech/_next/static/media/b53c1142b9136fe1-s.woff2",
      "totalBytes": 76797
    },
    {
      "url": "https://vibecheck.itool.tech/_next/static/media/1cd350d5fca802aa-s.woff2",
      "totalBytes": 61932
    },
    {
      "url": "https://vibecheck.itool.tech/_next/static/media/b465fe72c6993d96-s.woff2",
      "totalBytes": 60467
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes"
    }
  ],
  "sortedBy": [
    "totalBytes"
  ]
}

Reduce unused CSS

Est savings of 110 KiB

Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. Learn how to reduce unused CSS.

Elements & resources
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://vibecheck.itool.tech/_next/static/css/93829c03ac31244e.css",
      "totalBytes": 112749,
      "wastedBytes": 112728,
      "wastedPercent": 99.98141273954668
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes"
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 450,
      "LCP": 450
    }
  },
  "overallSavingsMs": 450,
  "overallSavingsBytes": 112728
}

Page prevented back/forward cache restoration

3 failure reasons

Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache (bfcache) can speed up these return navigations. Learn more about the bfcache

Elements & resources
{
  "type": "table",
  "items": [
    {
      "reason": "Pages with cache-control:no-store header cannot enter back/forward cache.",
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "frameUrl": "https://vibecheck.itool.tech/zh"
          }
        ]
      },
      "failureType": "Actionable",
      "protocolReason": "CacheControlNoStoreHTTPOnlyCookieModified"
    },
    {
      "reason": "Pages whose main resource has cache-control:no-store cannot enter back/forward cache.",
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "frameUrl": "https://vibecheck.itool.tech/zh"
          }
        ]
      },
      "failureType": "Not actionable",
      "protocolReason": "MainResourceHasCacheControlNoStore"
    },
    {
      "reason": "Back/forward cache is disabled because some JavaScript network request received resource with Cache-Control: no-store header.",
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "frameUrl": "https://vibecheck.itool.tech/zh"
          }
        ]
      },
      "failureType": "Not actionable",
      "protocolReason": "JsNetworkRequestReceivedCacheControlNoStoreResource"
    }
  ],
  "headings": [
    {
      "key": "reason",
      "label": "Failure reason",
      "valueType": "text",
      "subItemsHeading": {
        "key": "frameUrl",
        "valueType": "url"
      }
    },
    {
      "key": "failureType",
      "label": "Failure type",
      "valueType": "text"
    }
  ]
}

Use efficient cache lifetimes

Est savings of 820 KiB

A long cache lifetime can speed up repeat visits to your page. Learn more about caching.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/lovable-dev/screenshot?kind=desktop",
      "totalBytes": 715973,
      "wastedBytes": 286389.2,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/readymag-com/screenshot?kind=desktop",
      "totalBytes": 619658,
      "wastedBytes": 247863.2,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/cursor-com/screenshot?kind=desktop",
      "totalBytes": 282294,
      "wastedBytes": 112917.6,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/teenage-engineering/screenshot?kind=desktop",
      "totalBytes": 203564,
      "wastedBytes": 81425.6,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/images/macbook-pro-front-hardware.png",
      "totalBytes": 142199,
      "wastedBytes": 56879.600000000006,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/gumroad-com/screenshot?kind=desktop",
      "totalBytes": 85374,
      "wastedBytes": 34149.6,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/images/macbook-pro-front-source.jpg",
      "totalBytes": 46499,
      "wastedBytes": 18599.600000000002,
      "cacheLifetimeMs": 86400000
    },
    {
      "url": "https://vibecheck.itool.tech/images/crayon-underline.svg",
      "totalBytes": 3785,
      "wastedBytes": 1514,
      "cacheLifetimeMs": 86400000
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "Request",
      "valueType": "url"
    },
    {
      "key": "cacheLifetimeMs",
      "label": "Cache TTL",
      "valueType": "ms",
      "displayUnit": "duration"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes",
      "displayUnit": "kb",
      "granularity": 1
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 839738.3999999999
  },
  "skipSumming": [
    "cacheLifetimeMs"
  ]
}

Improve image delivery

Est savings of 1,815 KiB

Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/lovable-dev/screenshot?kind=desktop",
      "node": {
        "lhId": "page-0-IMG",
        "path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,0,DIV,0,DIV,11,A,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/api/v1/scans/lovable-dev/screenshot?kind=desktop\" alt=\"Lovable\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
        "selector": "div.marquee-track-left > a.group > div.relative > img.h-full",
        "nodeLabel": "Lovable",
        "boundingRect": {
          "top": 443,
          "left": 3495,
          "right": 3813,
          "width": 318,
          "bottom": 618,
          "height": 175
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
            "wastedBytes": 525604
          },
          {
            "reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
            "wastedBytes": 675873
          }
        ]
      },
      "totalBytes": 715554,
      "wastedBytes": 705020
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/readymag-com/screenshot?kind=desktop",
      "node": {
        "lhId": "page-1-IMG",
        "path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,1,DIV,0,DIV,14,A,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/api/v1/scans/readymag-com/screenshot?kind=desktop\" alt=\"Readymag\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
        "selector": "div.marquee-track-right > a.group > div.relative > img.h-full",
        "nodeLabel": "Readymag",
        "boundingRect": {
          "top": 741,
          "left": 3314,
          "right": 3632,
          "width": 318,
          "bottom": 916,
          "height": 175
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
            "wastedBytes": 429343
          },
          {
            "reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
            "wastedBytes": 584950
          }
        ]
      },
      "totalBytes": 619293,
      "wastedBytes": 608759
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/cursor-com/screenshot?kind=desktop",
      "node": {
        "lhId": "page-2-IMG",
        "path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,0,DIV,0,DIV,10,A,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/api/v1/scans/cursor-com/screenshot?kind=desktop\" alt=\"Cursor\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
        "selector": "div.marquee-track-left > a.group > div.relative > img.h-full",
        "nodeLabel": "Cursor",
        "boundingRect": {
          "top": 443,
          "left": 3155,
          "right": 3473,
          "width": 318,
          "bottom": 618,
          "height": 175
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
            "wastedBytes": 92077
          },
          {
            "reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
            "wastedBytes": 266387
          }
        ]
      },
      "totalBytes": 282027,
      "wastedBytes": 271493
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/teenage-engineering/screenshot?kind=desktop",
      "node": {
        "lhId": "page-3-IMG",
        "path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,1,DIV,0,DIV,10,A,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/api/v1/scans/teenage-engineering/screenshot?kind=desktop\" alt=\"teenage engineering\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
        "selector": "div.marquee-track-right > a.group > div.relative > img.h-full",
        "nodeLabel": "teenage engineering",
        "boundingRect": {
          "top": 741,
          "left": 1954,
          "right": 2272,
          "width": 318,
          "bottom": 916,
          "height": 175
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
            "wastedBytes": 13474
          },
          {
            "reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
            "wastedBytes": 192143
          }
        ]
      },
      "totalBytes": 203424,
      "wastedBytes": 192890
    },
    {
      "url": "https://vibecheck.itool.tech/api/v1/scans/gumroad-com/screenshot?kind=desktop",
      "node": {
        "lhId": "page-4-IMG",
        "path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,1,DIV,0,DIV,11,A,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/api/v1/scans/gumroad-com/screenshot?kind=desktop\" alt=\"Gumroad\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
        "selector": "div.marquee-track-right > a.group > div.relative > img.h-full",
        "nodeLabel": "Gumroad",
        "boundingRect": {
          "top": 741,
          "left": 2294,
          "right": 2612,
          "width": 318,
          "bottom": 916,
          "height": 175
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
            "wastedBytes": 80567
          }
        ]
      },
      "totalBytes": 85297,
      "wastedBytes": 80567
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "",
      "valueType": "node"
    },
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "reason",
        "valueType": "text"
      }
    },
    {
      "key": "totalBytes",
      "label": "Resource Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "wastedBytes",
        "valueType": "bytes"
      }
    }
  ],
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 1858729
  }
}

LCP request discovery

Optimize LCP by making the LCP image discoverable from the HTML immediately, and avoiding lazy-loading

Elements & resources
{
  "type": "list",
  "items": [
    {
      "type": "checklist",
      "items": {
        "eagerlyLoaded": {
          "label": "LCP resources should not use loading=lazy",
          "value": false
        },
        "priorityHinted": {
          "label": "fetchpriority=high should be applied",
          "value": false
        },
        "requestDiscoverable": {
          "label": "Request is discoverable in initial document",
          "value": true
        }
      }
    },
    {
      "lhId": "page-5-IMG",
      "path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,IMG",
      "type": "node",
      "snippet": "<img src=\"/api/v1/scans/cursor-com/screenshot?kind=desktop\" alt=\"Cursor\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
      "selector": "div.marquee-track-left > a.group > div.relative > img.h-full",
      "nodeLabel": "Cursor",
      "boundingRect": {
        "top": 443,
        "left": -245,
        "right": 73,
        "width": 318,
        "bottom": 618,
        "height": 175
      }
    }
  ]
}

Legacy JavaScript

Est savings of 11 KiB

Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers. Learn why most sites can deploy ES6+ code without transpiling

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "signal": "Array.prototype.at",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 166927,
              "urlProvider": "network"
            }
          },
          {
            "signal": "Array.prototype.flat",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 166315,
              "urlProvider": "network"
            }
          },
          {
            "signal": "Array.prototype.flatMap",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 166428,
              "urlProvider": "network"
            }
          },
          {
            "signal": "Object.fromEntries",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 166804,
              "urlProvider": "network"
            }
          },
          {
            "signal": "Object.hasOwn",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 167062,
              "urlProvider": "network"
            }
          },
          {
            "signal": "String.prototype.trimEnd",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 166057,
              "urlProvider": "network"
            }
          },
          {
            "signal": "String.prototype.trimStart",
            "location": {
              "url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
              "line": 0,
              "type": "source-location",
              "column": 165972,
              "urlProvider": "network"
            }
          }
        ]
      },
      "wastedBytes": 11629
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "location",
        "valueType": "source-location"
      }
    },
    {
      "key": null,
      "label": "",
      "valueType": "code",
      "subItemsHeading": {
        "key": "signal"
      }
    },
    {
      "key": "wastedBytes",
      "label": "Wasted bytes",
      "valueType": "bytes"
    }
  ],
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 11629
  }
}

Render-blocking requests

Est savings of 1,310 ms

Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network requests out of the critical path.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://vibecheck.itool.tech/_next/static/css/93829c03ac31244e.css",
      "wastedMs": 750,
      "totalBytes": 129168
    },
    {
      "url": "https://vibecheck.itool.tech/_next/static/css/bf7aa8067a46f911.css",
      "totalBytes": 16179
    },
    {
      "url": "https://vibecheck.itool.tech/_next/static/css/7d01a8ed4214f82b.css",
      "totalBytes": 944
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedMs",
      "label": "Duration",
      "valueType": "timespanMs"
    }
  ]
}
Environment & raw metrics
{
  "finalUrl": "https://vibecheck.itool.tech/zh",
  "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
  "formFactor": "mobile",
  "throttlingMethod": "simulate",
  "throttling": {
    "rttMs": 150,
    "throughputKbps": 1638.4,
    "requestLatencyMs": 562.5,
    "uploadThroughputKbps": 675,
    "cpuSlowdownMultiplier": 4,
    "downloadThroughputKbps": 1474.5600000000002
  },
  "metrics": [
    {
      "id": "largest-contentful-paint",
      "unit": "millisecond",
      "value": 11706.028
    },
    {
      "id": "cumulative-layout-shift",
      "unit": "unitless",
      "value": 0.0010256316695518653
    },
    {
      "id": "total-blocking-time",
      "unit": "millisecond",
      "value": 91.5
    },
    {
      "id": "first-contentful-paint",
      "unit": "millisecond",
      "value": 2706.0280000000002
    },
    {
      "id": "speed-index",
      "unit": "millisecond",
      "value": 3027.5598642231025
    }
  ]
}

01 / WHAT WORKS

What makes it work

Distinct typographic personality and brand contrast

The hero heading pairs heavy sans-serif glyphs at 72px with Caveat script styling and an orange accent underline (#ff5500), anchoring character without sacrificing legibility.

Immediate domain credibility via reference showcase cards

The showcase grid directly renders recognized design benchmarks like Cursor, Lovable, and Stripe alongside live palette swatches and monospace domain tags.

02 / NEXT STEPS

Where to go next

  1. 01

    Add an instant audit report preview tab beside the input

    First-time visitors do not know whether '深度审计' yields a score, CSS variables, or an AI prompt, causing bounce before trying.

    Place a prominent '查看示例报告' link or interactive toggle below the input that previews an audited report with token metrics and prompt snippets. Verify that clicking it reveals modal or inline sample data across 1440px and 390px viewports.

  2. 02

    Turn curated gallery cards into one-click test runs

    Typing a URL on mobile or finding a reference site on desktop is high friction compared to tapping an existing showcase card.

    Make every showcase card clickable with a visible '试运行' badge that injects the target URL (e.g., linear.app) into the hero input and initiates analysis immediately. Verify the input fills and status loader triggers on both click and tap.

03 / DESIGN LANGUAGE

A design system you can reuse

Colors

Background

#fafafc

Text

#0b0f19

Accent

#0b0f19

Surface

#ffffff

Typography

Display font
Inter
Body font
Inter
Heading / body
72px / 16px

Spacing & shape

Section gap
64px
Component inset
0px
Card radius
10px
Button radius
7px

CLEARER WORDS

Copy Revision Diff

Now

网页上线深度审计。 一键提取标杆设计 Token,让 AI 照着复刻高水准网页。

SUGGESTED COPY

网页上线前深度体检。一键提取标杆设计 Token 与 AI 提示词,直出高水准代码。

Clarifies the exact utility and output format (tokens and prompt rules) instead of abstract replication promises.

04 / EVIDENCE

The detail behind the report

Explore each observation, recommendation and captured record.

Conversion6 observations

Share card is incomplete

High

A blank or generic unfurl on X, Slack, or WeChat wastes the click you already earned. This is distribution, not decoration.

Set og:title, og:description, and a 1200x630 image that matches the live headline.

og:title=yes og:image=no

A form has no action

High

A waitlist or contact form with no action is a conversion dead end. It looks ready and does nothing.

Wire the form to an endpoint, Formspark, Basin, or a server action you actually handle.

<form>

No human or proof on the page

Medium

A stranger landing on an AI-looking site with no maker, no customer, and no contact will not give you an email.

Add a real name, a real face, a real contact method, or one real customer line.

no about, no first-person, no quote

No analytics on the live page

Medium

If you cannot see who bounced, you cannot tell if the next fix worked. Shipping without a counter is flying blind.

Put Plausible, PostHog, or GA4 on the public pages. One snippet is enough.

no gtag / plausible / posthog / umami

No way to reach a human

Medium

A stranger who wants to buy, ask, or complain has nowhere to go. That is a conversion leak and a trust leak.

Put a mailto, a form that works, or a real social handle in the footer. One is enough.

no mailto / telegram / x / github / email

Tab title and H1 disagree

If the tab, the share card, and the hero name different things, the visitor cannot form one memory of the product.

Make title, og:title, and H1 share the same noun.

title="VibeCheck · 网站气质检测" h1="从 Vibe 到专业"
Launch4 observations

No HSTS header

Medium

Without Strict-Transport-Security, a first visit can still be downgraded to http. Browsers will not pin HTTPS.

Set Strict-Transport-Security: max-age=31536000; includeSubDomains at the edge.

strict-transport-security missing

No Content-Security-Policy

A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.

Start with a report-only CSP, then default-src 'self' and an explicit script-src.

content-security-policy missing

No X-Content-Type-Options

Without nosniff, browsers may interpret a file as a different type than you sent. It is a one-line header.

Set X-Content-Type-Options: nosniff.

x-content-type-options missing

No Referrer-Policy

The default referrer can leak internal paths and query strings to third parties.

Set Referrer-Policy: strict-origin-when-cross-origin.

referrer-policy missing
Link preview

05 / MAKE IT HAPPEN

Give your AI a clear next step

Use the improvement prompt for this page, or the design prompt to borrow its visual language. “Recreate” includes references and implementation steps. Paste either into your coding assistant.

Preview full instructions
Enhance the VibeCheck hero conversion flow while preserving exact design tokens (#fafafc background, #0b0f19 ink, JetBrains Mono tags, 7px button radius, 10px card radius, and Caveat font on 'Vibe'). 1. Add an interactive '查看示例报告' preview trigger beneath the URL input that displays a sample audit card showing scores, extracted palette swatches, and a copyable DESIGN.md prompt snippet. 2. Make each gallery card (Cursor, Lovable, Stripe, etc.) interactive so clicking it injects its URL into the input field and executes the audit. 3. Maintain responsive padding, header layout, and mobile navigation behavior. Test at 1440x900 and 390x844 viewports to verify alignment and focus states.