https://github.com/

Page structure & technical metrics

Words

843

Action candidates

31

Images

24

HTML

563 KB

Copy

Title chars
61
Meta chars
186long
H1
1
H2
9

Action

Primary

Sign up

Forms
2/ 2 fields
On-site links
127
Off-site links
15

Security & metadata

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

Page

Tailwind

Scripts
8 ext / 6 inline
Alt
17 missing
Lang
en
Third-party hosts
1

Lighthouse

Simulated mobile · Performance

44 / 100

2026-09-09 · Run warnings: results may be incomplete.

View details

Simulated mobile · Lab data, not field data
2026-09-09T12:00:47.794Z · Lighthouse 13.4.1

This run has warnings; results may be incomplete: The page loaded too slowly to finish within the time limit. Results may be incomplete.

Performance44/ 100
Accessibility100/ 100
Best practices100/ 100
SEO100/ 100
LCP · Largest content83,575 ms
CLS · Layout shift0.000
TBT · Blocking time434 ms
FCP · First content54,543 ms
SI · Speed index54,543 ms

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

Reduce initial server response time

Root document took 720 ms

Keep the server response time for the main document short because all other requests depend on it. Learn more about the Time to First Byte metric.

Elements & resources
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://github.com/",
      "responseTime": 723
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "responseTime",
      "label": "Time Spent",
      "valueType": "timespanMs"
    }
  ],
  "overallSavingsMs": 623
}

Minimize main-thread work

6.7 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": "other",
      "duration": 2962.4639999999067,
      "groupLabel": "Other"
    },
    {
      "group": "styleLayout",
      "duration": 2400.216,
      "groupLabel": "Style & Layout"
    },
    {
      "group": "paintCompositeRender",
      "duration": 632.0839999999998,
      "groupLabel": "Rendering"
    },
    {
      "group": "scriptEvaluation",
      "duration": 451.72400000000016,
      "groupLabel": "Script Evaluation"
    },
    {
      "group": "parseHTML",
      "duration": 178.928,
      "groupLabel": "Parse HTML & CSS"
    },
    {
      "group": "garbageCollection",
      "duration": 14.839999999999986,
      "groupLabel": "Garbage Collection"
    },
    {
      "group": "scriptParseCompile",
      "duration": 12.959999999999997,
      "groupLabel": "Script Parsing & Compilation"
    }
  ],
  "headings": [
    {
      "key": "groupLabel",
      "label": "Category",
      "valueType": "text"
    },
    {
      "key": "duration",
      "label": "Time Spent",
      "valueType": "ms",
      "granularity": 1
    }
  ],
  "sortedBy": [
    "duration"
  ]
}

Image elements do not have explicit `width` and `height`

Set an explicit width and height on image elements to reduce layout shifts and improve CLS. Learn how to set image dimensions

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/g1XhuDG7foMyNWIEIpGJj/b40a790b854d0803704deb7905b1bd82/logo-duolingo-14477f9e54a6.svg",
      "node": {
        "lhId": "1-154-IMG",
        "path": "1,HTML,1,BODY,0,DIV,6,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,0,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img alt=\"Duolingo\" class=\"Primer_Brand__Image-module__Image___JSzlx\" height=\"32\" src=\"//images.ctfassets.net/8aevphvgewt8/g1XhuDG7foMyNWIEIpGJj/b40a790b854d0803…\" loading=\"lazy\">",
        "selector": "div.lp-SectionTemplate-customer > div.Primer_Brand__Pillar-module__Pillar___xLPAt > div.Primer_Brand__Pillar-module__Pillar__image___z4m11 > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "Duolingo",
        "boundingRect": {
          "top": 2705,
          "left": 24,
          "right": 160,
          "width": 136,
          "bottom": 2737,
          "height": 32
        }
      }
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/6Qr8Snm4JceoMFRJhapgFa/802ded1d2c486a9d0a4c073d9f8f38f4/logo-gartner-aa8c2e452b64.svg",
      "node": {
        "lhId": "1-155-IMG",
        "path": "1,HTML,1,BODY,0,DIV,6,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,1,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img alt=\"Gartner\" class=\"Primer_Brand__Image-module__Image___JSzlx\" height=\"32\" src=\"//images.ctfassets.net/8aevphvgewt8/6Qr8Snm4JceoMFRJhapgFa/802ded1d2c486a9…\" loading=\"lazy\">",
        "selector": "div.lp-SectionTemplate-customer > div.Primer_Brand__Pillar-module__Pillar___xLPAt > div.Primer_Brand__Pillar-module__Pillar__image___z4m11 > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "Gartner",
        "boundingRect": {
          "top": 2993,
          "left": 24,
          "right": 163,
          "width": 139,
          "bottom": 3025,
          "height": 32
        }
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "",
      "valueType": "node"
    },
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    }
  ]
}

Reduce unused CSS

Est savings of 202 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://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css",
      "totalBytes": 71554,
      "wastedBytes": 71554,
      "wastedPercent": 100
    },
    {
      "url": "https://github.githubassets.com/assets/global-adcabba7b5c5d221.css",
      "totalBytes": 40579,
      "wastedBytes": 40219,
      "wastedPercent": 99.11276599329436
    },
    {
      "url": "https://github.githubassets.com/assets/primer-react-css.c4086b4d579ad1e7.module.css",
      "totalBytes": 35121,
      "wastedBytes": 35121,
      "wastedPercent": 100
    },
    {
      "url": "https://github.githubassets.com/assets/github-552513ad07a183a1.css",
      "totalBytes": 21827,
      "wastedBytes": 21822,
      "wastedPercent": 99.97503685963694
    },
    {
      "url": "https://github.githubassets.com/assets/landing-pages.3335b8a95b85fbbc.module.css",
      "totalBytes": 20938,
      "wastedBytes": 20938,
      "wastedPercent": 100
    },
    {
      "url": "https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css",
      "totalBytes": 43113,
      "wastedBytes": 17448,
      "wastedPercent": 40.46957734636797
    }
  ],
  "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": 1200,
      "LCP": 900
    }
  },
  "overallSavingsMs": 900,
  "overallSavingsBytes": 207102
}

Reduce unused JavaScript

Est savings of 448 KiB

Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.

Elements & resources
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://github.githubassets.com/assets/primer-react-795d3d4785478ddd.js",
      "totalBytes": 120373,
      "wastedBytes": 120242,
      "wastedPercent": 99.89091784483753
    },
    {
      "url": "https://github.githubassets.com/assets/react-core-b3944113ce58176b.js",
      "totalBytes": 82391,
      "wastedBytes": 80624,
      "wastedPercent": 97.85522689286465
    },
    {
      "url": "https://github.githubassets.com/assets/mz-991b0be334f7b646.js",
      "totalBytes": 59818,
      "wastedBytes": 59759,
      "wastedPercent": 99.90205398553856
    },
    {
      "url": "https://github.githubassets.com/assets/react-lib-b5f08b83f94216f8.js",
      "totalBytes": 57421,
      "wastedBytes": 56372,
      "wastedPercent": 98.17231305417457
    },
    {
      "url": "https://github.githubassets.com/assets/behaviors-592edc94fa6fd58a.js",
      "totalBytes": 59819,
      "wastedBytes": 49562,
      "wastedPercent": 82.85359801488835
    },
    {
      "url": "https://github.githubassets.com/assets/nvz-46a994f1aea249d4.js",
      "totalBytes": 27910,
      "wastedBytes": 27875,
      "wastedPercent": 99.87355285387063
    },
    {
      "url": "https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js",
      "totalBytes": 27043,
      "wastedBytes": 22117,
      "wastedPercent": 81.78506925814813
    },
    {
      "url": "https://github.githubassets.com/assets/3d8-52820d324301d734.js",
      "totalBytes": 21979,
      "wastedBytes": 21931,
      "wastedPercent": 99.7793784884598
    },
    {
      "url": "https://github.githubassets.com/assets/app-runtime-0b7903e63f63ea8d.js",
      "totalBytes": 29326,
      "wastedBytes": 20643,
      "wastedPercent": 70.39287547602278
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "source",
        "valueType": "code"
      }
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "sourceBytes"
      }
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "sourceWastedBytes"
      }
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 0,
      "LCP": 0
    }
  },
  "overallSavingsMs": 0,
  "overallSavingsBytes": 459125
}

Document request latency

Est savings of 620 ms

Your first network request is the most important. Reduce its latency by avoiding redirects, ensuring a fast server response, and enabling text compression.

Elements & resources
{
  "type": "checklist",
  "items": {
    "noRedirects": {
      "label": "Avoids redirects",
      "value": true
    },
    "usesCompression": {
      "label": "Applies text compression",
      "value": true
    },
    "serverResponseIsFast": {
      "label": "Server responded slowly (observed 723 ms)",
      "value": false
    }
  },
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 0,
    "redirectDuration": 0,
    "serverResponseTime": 723,
    "uncompressedResponseBytes": 0
  }
}

Forced reflow

A forced reflow occurs when JavaScript queries geometric properties (such as offsetWidth) after styles have been invalidated by a change to the DOM state. This can result in poor performance. Learn more about forced reflows and possible mitigations.

Elements & resources
{
  "type": "list",
  "items": [
    {
      "type": "table",
      "items": [
        {
          "source": {
            "url": "https://github.githubassets.com/assets/6ny-c969fbae697a356f.js",
            "line": 16,
            "type": "source-location",
            "column": 20520,
            "urlProvider": "network"
          },
          "reflowTime": 99.779
        }
      ],
      "headings": [
        {
          "key": "source",
          "label": "Top function call",
          "valueType": "source-location"
        },
        {
          "key": "reflowTime",
          "label": "Total reflow time",
          "valueType": "ms",
          "granularity": 1
        }
      ]
    },
    {
      "type": "table",
      "items": [
        {
          "source": {
            "type": "text",
            "value": "[unattributed]"
          },
          "reflowTime": 425.429
        },
        {
          "source": {
            "url": "https://github.githubassets.com/assets/6ny-c969fbae697a356f.js",
            "line": 15,
            "type": "source-location",
            "column": 20578,
            "urlProvider": "network"
          },
          "reflowTime": 99.779
        }
      ],
      "headings": [
        {
          "key": "source",
          "label": "Source",
          "valueType": "source-location"
        },
        {
          "key": "reflowTime",
          "label": "Total reflow time",
          "valueType": "ms",
          "granularity": 1
        }
      ]
    }
  ]
}

Improve image delivery

Est savings of 662 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://images.ctfassets.net/8aevphvgewt8/1uXZYDy7dMcH9QwxuAU06F/1cb167cc60d725b8cf7089faf9a4ed06/accordion-2-730955545f07.webp",
      "node": {
        "lhId": "page-3-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,1,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        \n      …\" src=\"//images.ctfassets.net/8aevphvgewt8/1uXZYDy7dMcH9QwxuAU06F/1cb167cc60d725b…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3332,
          "left": -10,
          "right": 422,
          "width": 433,
          "bottom": 3677,
          "height": 345
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 197869
          }
        ]
      },
      "totalBytes": 213302,
      "wastedBytes": 197869
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/3xzVZaJhqo3B62R8NeHjX2/e37c81e4f26e9dac2aff1f23a0243087/accordion-3-52ca331d22ea.webp",
      "node": {
        "lhId": "page-4-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,2,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        \n      …\" src=\"//images.ctfassets.net/8aevphvgewt8/3xzVZaJhqo3B62R8NeHjX2/e37c81e4f26e9da…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3332,
          "left": -10,
          "right": 422,
          "width": 433,
          "bottom": 3677,
          "height": 345
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 177441
          }
        ]
      },
      "totalBytes": 191280,
      "wastedBytes": 177441
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/1Dt1ncaR6ZM4dQvknFzfBI/e5c2092be5bd53881622eced4fd37564/accordion-1-ce487d44c0bf.webp",
      "node": {
        "lhId": "page-5-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        lp-Sect…\" src=\"//images.ctfassets.net/8aevphvgewt8/1Dt1ncaR6ZM4dQvknFzfBI/e5c2092be5bd538…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3340,
          "left": 0,
          "right": 412,
          "width": 412,
          "bottom": 3669,
          "height": 329
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 154383
          }
        ]
      },
      "totalBytes": 166424,
      "wastedBytes": 154383
    },
    {
      "url": "https://images.ctfassets.net/8aevphvgewt8/3cgNgdKFqflI27vyDh4Gpa/c459dc8690133e7663b8db2626cf2045/accordion-4-a26744b70ff7.webp",
      "node": {
        "lhId": "page-6-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,1,SECTION,0,DIV,2,DIV,0,DIV,0,DIV,0,DIV,3,IMG",
        "type": "node",
        "snippet": "<img alt=\"\" class=\"Primer_Brand__Image-module__Image___JSzlx \n                        \n      …\" src=\"//images.ctfassets.net/8aevphvgewt8/3cgNgdKFqflI27vyDh4Gpa/c459dc8690133e7…\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "nodeLabel": "div.lp-SectionBlock-content > div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > img.Primer_Brand__Image-module__Image___JSzlx",
        "boundingRect": {
          "top": 3332,
          "left": -10,
          "right": 422,
          "width": 433,
          "bottom": 3677,
          "height": 345
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1600x1278) for its displayed dimensions (412x359). Use responsive images to reduce the image download size.",
            "wastedBytes": 114052
          }
        ]
      },
      "totalBytes": 122948,
      "wastedBytes": 114052
    },
    {
      "url": "https://github.githubassets.com/assets/particles-170bd1fd231f4669.png",
      "node": {
        "lhId": "page-7-IMG",
        "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,3,SECTION,0,DIV,0,DIV,0,DIV,1,DIV,0,DIV,1,IMG",
        "type": "node",
        "snippet": "<img class=\"particles\" src=\"https://github.githubassets.com/assets/particles-170bd1fd231f4669.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">",
        "selector": "div.lp-SectionBlock-content > div.lp-SectionHero > div.lp-SectionHero-glow > img.particles",
        "nodeLabel": "div.lp-SectionBlock-content > div.lp-SectionHero > div.lp-SectionHero-glow > img.particles",
        "boundingRect": {
          "top": 7644,
          "left": 124,
          "right": 288,
          "width": 165,
          "bottom": 7845,
          "height": 200
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (1075x1307) for its displayed dimensions (165x200). Use responsive images to reduce the image download size.",
            "wastedBytes": 33699
          }
        ]
      },
      "totalBytes": 34510,
      "wastedBytes": 33699
    }
  ],
  "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": 677444
  }
}

LCP breakdown

Each subpart has specific improvement strategies. Ideally, most of the LCP time should be spent on loading the resources, not within delays.

Elements & resources
{
  "type": "list",
  "items": [
    {
      "type": "table",
      "items": [
        {
          "label": "Time to first byte",
          "subpart": "timeToFirstByte",
          "duration": 963.157
        },
        {
          "label": "Element render delay",
          "subpart": "elementRenderDelay",
          "duration": 8988.733
        }
      ],
      "headings": [
        {
          "key": "label",
          "label": "Subpart",
          "valueType": "text"
        },
        {
          "key": "duration",
          "label": "Duration",
          "valueType": "ms"
        }
      ]
    },
    {
      "lhId": "page-0-H1",
      "path": "1,HTML,1,BODY,0,DIV,7,DIV,0,MAIN,0,REACT-APP,1,DIV,0,DIV,0,DIV,0,DIV,0,SECTION,0,DIV,3,DIV,0,SECTION,0,DIV,0,DIV,0,DIV,0,H1",
      "type": "node",
      "snippet": "<h1 class=\"Primer_Brand__Heading-module__Heading___fudyh Primer_Brand__Heading-module…\" id=\"hero-section-brand-heading\">",
      "selector": "div.Primer_Brand__Grid-module__Grid___H4Yx1 > div.Primer_Brand__Grid-module__Grid__column___bCs9w > div.Primer_Brand__Stack-module__Stack___kkChc > h1#hero-section-brand-heading",
      "nodeLabel": "The future of building happens together",
      "boundingRect": {
        "top": 267,
        "left": 48,
        "right": 364,
        "width": 316,
        "bottom": 405,
        "height": 138
      }
    }
  ]
}

Network dependency tree

Avoid chaining critical requests by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.

Elements & resources
{
  "type": "list",
  "items": [
    {
      "type": "list-section",
      "value": {
        "type": "network-tree",
        "chains": {
          "CCB7DA1EE5DDE0A049D1D1B1B04B1BAA": {
            "url": "https://github.com/",
            "children": {
              "313143.4": {
                "url": "https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css",
                "children": {},
                "transferSize": 7516,
                "navStartToEndTime": 2504
              },
              "313143.5": {
                "url": "https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css",
                "children": {},
                "transferSize": 7411,
                "navStartToEndTime": 2688
              },
              "313143.6": {
                "url": "https://github.githubassets.com/assets/dark-79ad2ace604703b3.css",
                "children": {},
                "transferSize": 7514,
                "navStartToEndTime": 3507
              },
              "313143.7": {
                "url": "https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css",
                "children": {},
                "transferSize": 7634,
                "navStartToEndTime": 3566
              },
              "313143.8": {
                "url": "https://github.githubassets.com/assets/primer-primitives-ed9ca172356fd545.css",
                "children": {},
                "transferSize": 2556,
                "navStartToEndTime": 4428
              },
              "313143.9": {
                "url": "https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css",
                "children": {},
                "transferSize": 43556,
                "navStartToEndTime": 4213
              },
              "313143.10": {
                "url": "https://github.githubassets.com/assets/global-adcabba7b5c5d221.css",
                "children": {},
                "transferSize": 41021,
                "navStartToEndTime": 4638
              },
              "313143.11": {
                "url": "https://github.githubassets.com/assets/github-552513ad07a183a1.css",
                "children": {},
                "transferSize": 22270,
                "navStartToEndTime": 4872
              },
              "313143.12": {
                "url": "https://github.githubassets.com/assets/marketing-c6c574a5b2679474.css",
                "children": {
                  "313143.201": {
                    "url": "https://github.githubassets.com/assets/MonaSansMonoVF-wght-da74d51ce1316829.woff2",
                    "children": {},
                    "transferSize": 37800,
                    "navStartToEndTime": 11665
                  }
                },
                "transferSize": 1825,
                "navStartToEndTime": 4874
              },
              "313143.13": {
                "url": "https://github.githubassets.com/assets/home-87c3046c3560e1b7.css",
                "children": {},
                "transferSize": 7405,
                "navStartToEndTime": 4900
              },
              "313143.14": {
                "url": "https://github.githubassets.com/assets/high-contrast-cookie-e3d808ee18eb9784.js",
                "children": {},
                "transferSize": 964,
                "navStartToEndTime": 5089
              },
              "313143.20": {
                "url": "https://github.githubassets.com/assets/environment-6d7bc83f464641dd.js",
                "children": {},
                "transferSize": 3149,
                "navStartToEndTime": 10097
              },
              "313143.21": {
                "url": "https://github.githubassets.com/assets/app-runtime.b732c9a532d735a7.module.css",
                "children": {},
                "transferSize": 1502,
                "navStartToEndTime": 5085
              },
              "313143.32": {
                "url": "https://github.githubassets.com/assets/github-elements-8f7f28096a446d5d.js",
                "children": {},
                "transferSize": 3267,
                "navStartToEndTime": 14354
              },
              "313143.33": {
                "url": "https://github.githubassets.com/assets/element-registry-2b5e245fb4415fe9.js",
                "children": {
                  "313143.254": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-select-panel-c1e7af998a1d00c5.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18639
                  },
                  "313143.255": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-toggle-switch-0b0e875a5b4f4f2e.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18639
                  },
                  "313143.256": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-cookie-consent-link-107acedd3d61c045.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18640
                  },
                  "313143.257": {
                    "url": "https://github.githubassets.com/assets/chunk-dg-c9fddb85345164af.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18641
                  },
                  "313143.258": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-fullstory-capture-2484cc12a67724f1.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18641
                  },
                  "313143.259": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-element-ghcc-consent-c2868a800ad1375a.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18641
                  },
                  "313143.260": {
                    "url": "https://github.githubassets.com/assets/u2l.ccebc7a07d93130c.module.css",
                    "children": {},
                    "transferSize": 635,
                    "navStartToEndTime": 19013
                  },
                  "313143.261": {
                    "url": "https://github.githubassets.com/assets/chunk-lazy-react-partial-keyboard-shortcuts-dialog-841ba6c2f0aed1dc.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 18643
                  },
                  "313143.262": {
                    "url": "https://github.githubassets.com/assets/7gn.e38425ead0b59349.module.css",
                    "children": {},
                    "transferSize": 1902,
                    "navStartToEndTime": 19014
                  },
                  "313143.263": {
                    "url": "https://github.githubassets.com/assets/xy.ac674e627f4d0699.module.css",
                    "children": {},
                    "transferSize": 1752,
                    "navStartToEndTime": 19014
                  }
                },
                "transferSize": 12066,
                "navStartToEndTime": 14566
              },
              "313143.49": {
                "url": "https://github.githubassets.com/assets/behaviors-592edc94fa6fd58a.js",
                "children": {
                  "313143.264": {
                    "url": "https://github.githubassets.com/assets/chunk-xg-0bc1b5900d59e0d9.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 25019
                  },
                  "313143.265": {
                    "url": "https://github.githubassets.com/assets/chunk-3m-396c8d3168589b84.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 25019
                  }
                },
                "transferSize": 60255,
                "navStartToEndTime": 24964
              },
              "313143.50": {
                "url": "https://github.githubassets.com/assets/react-core.20be589990c46106.module.css",
                "children": {},
                "transferSize": 679,
                "navStartToEndTime": 6205
              },
              "313143.52": {
                "url": "https://github.githubassets.com/assets/marketing-essentials-28b9131041e36274.js",
                "children": {
                  "313143.267": {
                    "url": "https://github.githubassets.com/assets/chunk-c1-38178dc0e7cae70d.js",
                    "children": {},
                    "transferSize": 0,
                    "navStartToEndTime": 25375
                  },
                  "313143.268": {
                    "url": "https://github.githubassets.com/assets/chunk-8x-e6fcfc76692041a9.js",
                    "children": {},
                    "isLongest": true,
                    "transferSize": 0,
                    "navStartToEndTime": 25375
                  }
                },
                "isLongest": true,
                "transferSize": 910,
                "navStartToEndTime": 25364
              },
              "313143.82": {
                "url": "https://github.githubassets.com/assets/landing-pages-3b4f111997bc127a.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 987
              },
              "313143.83": {
                "url": "https://github.githubassets.com/assets/primer-react-css.c4086b4d579ad1e7.module.css",
                "children": {},
                "transferSize": 35562,
                "navStartToEndTime": 9198
              },
              "313143.84": {
                "url": "https://github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css",
                "children": {},
                "transferSize": 71995,
                "navStartToEndTime": 8268
              },
              "313143.85": {
                "url": "https://github.githubassets.com/assets/landing-pages.3335b8a95b85fbbc.module.css",
                "children": {},
                "transferSize": 21377,
                "navStartToEndTime": 9424
              },
              "313143.170": {
                "url": "https://github.githubassets.com/assets/obo-b97774c6eb95c7ee.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 1077
              },
              "313143.171": {
                "url": "https://github.githubassets.com/assets/bi0-5a602e8242c55c27.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 1078
              },
              "313143.172": {
                "url": "https://github.githubassets.com/assets/keyboard-shortcuts-dialog-dcd7e9b611a8d7e7.js",
                "children": {},
                "transferSize": 0,
                "navStartToEndTime": 1078
              },
              "313143.178": {
                "url": "https://github.githubassets.com/assets/keyboard-shortcuts-dialog.63ee55a8093b9a0a.module.css",
                "children": {},
                "transferSize": 639,
                "navStartToEndTime": 9640
              },
              "313143.183": {
                "url": "https://github.githubassets.com/assets/marketing-global-banner.a53cb6fed94b4932.module.css",
                "children": {},
                "transferSize": 1757,
                "navStartToEndTime": 9641
              },
              "313143.192": {
                "url": "https://github.githubassets.com/assets/lazy-react-partial-marketing-header.18fa9e9936132bbe.module.css",
                "children": {},
                "transferSize": 3705,
                "navStartToEndTime": 9846
              },
              "313143.193": {
                "url": "https://github.com/manifest.json",
                "children": {},
                "transferSize": 4729,
                "navStartToEndTime": 21445
              },
              "313143.198": {
                "url": "https://github.githubassets.com/assets/marketing-footer.42532d8061c63a3b.module.css",
                "children": {},
                "transferSize": 1899,
                "navStartToEndTime": 9931
              }
            },
            "isLongest": true,
            "transferSize": 123009,
            "navStartToEndTime": 1307
          }
        },
        "longestChain": {
          "duration": 25375
        }
      }
    },
    {
      "type": "list-section",
      "title": "Preconnected origins",
      "value": {
        "type": "table",
        "items": [
          {
            "origin": "https://github.githubassets.com/",
            "source": {
              "lhId": "page-1-LINK",
              "path": "1,HTML,0,HEAD,6,LINK",
              "type": "node",
              "snippet": "<link rel=\"preconnect\" href=\"https://github.githubassets.com\" crossorigin=\"\">",
              "selector": "head > link",
              "nodeLabel": "head > link",
              "boundingRect": {
                "top": 0,
                "left": 0,
                "right": 0,
                "width": 0,
                "bottom": 0,
                "height": 0
              }
            },
            "subItems": {
              "type": "subitems",
              "items": []
            }
          },
          {
            "origin": "https://avatars.githubusercontent.com/",
            "source": {
              "lhId": "page-2-LINK",
              "path": "1,HTML,0,HEAD,7,LINK",
              "type": "node",
              "snippet": "<link rel=\"preconnect\" href=\"https://avatars.githubusercontent.com\">",
              "selector": "head > link",
              "nodeLabel": "head > link",
              "boundingRect": {
                "top": 0,
                "left": 0,
                "right": 0,
                "width": 0,
                "bottom": 0,
                "height": 0
              }
            },
            "subItems": {
              "type": "subitems",
              "items": [
                {
                  "warning": "Unused preconnect. Only use preconnect for origins that the page is likely to request."
                }
              ]
            }
          }
        ],
        "headings": [
          {
            "key": "origin",
            "label": "Origin",
            "valueType": "text",
            "subItemsHeading": {
              "key": "warning"
            }
          },
          {
            "key": "source",
            "label": "Source",
            "valueType": "node"
          }
        ]
      },
      "description": "[preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints help the browser establish a connection earlier in the page load, saving time when the first request for that origin is made. The following are the origins that the page preconnected to."
    },
    {
      "type": "list-section",
      "title": "Preconnect candidates",
      "value": {
        "type": "text",
        "value": "No additional origins are good candidates for preconnecting"
      },
      "description": "Add [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints to your most important origins, but try to use no more than 4."
    }
  ]
}
Environment & raw metrics
{
  "finalUrl": "https://github.com/",
  "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": 83574.587
    },
    {
      "id": "cumulative-layout-shift",
      "unit": "unitless",
      "value": 0
    },
    {
      "id": "total-blocking-time",
      "unit": "millisecond",
      "value": 434
    },
    {
      "id": "first-contentful-paint",
      "unit": "millisecond",
      "value": 54542.645
    },
    {
      "id": "speed-index",
      "unit": "millisecond",
      "value": 54542.645
    }
  ]
}

01 / WHAT WORKS

What makes it work

Cohesive brand atmosphere and refined dark palette

Using deep base #0d1117 accented with subtle purple glow gradients, crisp Mona Sans typography, and calibrated accent greens (#08872b / #238636) establishes immediate authority and high technical trust.

Frictionless inline onboarding entry point

Pairing a direct email input field with a high-contrast 'Sign up for GitHub' primary button eliminates intermediate navigation hops, capturing developer intent directly from the hero fold.

02 / NEXT STEPS

Where to go next

  1. 01

    Resolve mobile header announcement banner layout overlap

    On the 390px mobile viewport, the text 'Join GitHub Copilot Day...' renders directly beneath the navigation hamburger, Octocat icon, and 'Sign in' button without proper vertical offset, impairing header navigation legibility.

    Separate the top announcement banner into its own flow block above the header container, giving the mobile navigation bar adequate padding-top or standard block stacking. Verify in Chrome DevTools at 390px width that no text touches or underlaps header controls.

  2. 02

    Differentiate hero dual CTAs for clear decision hierarchy

    Showing 'Sign up for GitHub' alongside 'Download GitHub Copilot app' with equal prominence creates cognitive friction for visitors wondering whether they need an account before downloading the app.

    Keep the email signup form as the primary visual focus, and append microcopy or an explanatory sub-link to clarify that the Copilot app requires an existing account or trial. Test conversion rates across both routes.

03 / DESIGN LANGUAGE

A design system you can reuse

Colors

Background

#0d1117

Text

#ffffff

Typography

Display font
Mona Sans
Body font
Mona Sans VF
Heading / body
64px / 14px

Spacing & shape

Section gap
0px
Component inset
—
Card radius
—
Button radius
6px

CLEARER WORDS

Copy Revision Diff

Now

The future of building happens together

SUGGESTED COPY

Build, automate, and secure software with AI

The existing headline is an abstract brand slogan. An outcome-oriented headline instantly informs first-time visitors about GitHub's end-to-end AI capabilities.

04 / EVIDENCE

The detail behind the report

Explore each observation, recommendation and captured record.

Taste1 observations

Header elements overlap top banner text on mobile

High

On 390px screens, the text 'Join GitHub Copilot Day, live on Sept 10...' sits directly behind the hamburger toggle and logo, signaling lack of mobile QA on live announcements.

Ensure the announcement banner wrapper has position: relative with full document flow clearance before position: sticky or fixed header triggers, or push the navbar down by the measured banner height. Verify visually at 375px and 390px viewports.

Join GitHub Copilot Day, live on Sept 10. Come for the product news, stay for the demos, live coding, and surprises.Set your reminder Navigation Menu Platform
Conversion4 observations

Headline is a category line, not a claim

High

A stranger cannot repeat what you sell after a category sentence. Conversion starts when the promise is specific.

Name the user, the job, and the outcome in one line. Cut 'the easiest way to'.

The future of building happens together

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

Images ship without alt text

Medium

Missing alt is a screen-reader dead end and a ranking leak. Decorative images can be alt="". Content images cannot be blank.

Write a short alt for product and photo images. Use empty alt only on pure decoration.

17 images without alt

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="GitHub · Change is constant. GitHub keeps you ahead. · GitHub" h1="The future of building happens together"
Launch1 observations

The HTML payload is huge

Medium

A first document over 350 KB is usually inlined junk: CSS dumps, JSON, or a whole app. Phones pay for that before they see a headline.

Move CSS and data out of the document. Keep the first HTML under 200 KB.

563 KB HTML
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
Fix the mobile announcement banner and header layout collision on GitHub homepage.

Problem:
At mobile viewport (390px width), the top announcement bar copy ('Join GitHub Copilot Day, live on Sept 10...') physically overlaps the hamburger menu icon, the GitHub Octocat logo, and the 'Sign in' button in the global navigation bar.

Required Changes:
1. Adjust the header layout structure so that the announcement banner occupies its own flow block with proper height calculation. When the header is sticky or fixed, ensure the navigation bar sits strictly below the banner without negative offsets or z-index collisions.
2. Maintain design tokens: background #0d1117, font family 'Mona Sans VF', 'Mona Sans', font size 14px for body, button radius 6px, input field radius 8px, primary button background #08872b / #238636.
3. On screens below 63.25rem (the --brand-breakpoint-large breakpoint), center the announcement text or make it cleanly collapsible, preventing any overlap with navigation controls.
4. Verify in mobile viewports (375px, 390px, and 414px) that the announcement banner, the hamburger trigger, the centered logo, and the Sign In button do not collide or clip.