Max Potential First Input Delay
220 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
Words
843
Action candidates
31
Images
24
HTML
563 KB
Primary
Sign up
Tailwind
Simulated mobile · Performance
2026-09-09 · Run warnings: results may be incomplete.
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.
Results vary by server, network and environment, independently of taste/conversion scores. Diagnostics retain Lighthouse wording.
220 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
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.
{
"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
}107.0 s
Time to Interactive is the amount of time it takes for the page to become fully interactive. Learn more about the Time to Interactive metric.
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
{
"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"
]
}Set an explicit width and height on image elements to reduce layout shifts and improve CLS. Learn how to set image dimensions
{
"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"
}
]
}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.
{
"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
}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.
{
"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
}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.
{
"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
}
}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.
{
"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
}
]
}
]
}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
{
"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
}
}Each subpart has specific improvement strategies. Ideally, most of the LCP time should be spent on loading the resources, not within delays.
{
"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
}
}
]
}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.
{
"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."
}
]
}{
"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
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.
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
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.
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
Background
#0d1117Text
#ffffffCLEARER WORDS
The future of building happens together
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
Explore each observation, recommendation and captured record.
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
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
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
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
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"
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

Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.
05 / MAKE IT HAPPEN
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.
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.