Page summary

https://gitlab.com/dashboard/merge_requests/

Tested 2025-07-25 16:55:36 using Chrome 138.0.7204.49 (runtime settings).

SummaryWaterfall MetricsVideoFilmstrip CoachPageXrayThird party
| Summary | | Download Video | Download HAR | 

Summary

MetricValue
Page metrics
Performance Score70
Total Page Transfer Size378.9 KB
Requests17
Timing metrics
TTFB [median]322 ms
First Paint [median]520 ms
Fully Loaded [median]5.401 s
Google Web Vitals
TTFB [median]322 ms
First Contentful Paint (FCP) [median]520 ms
Largest Contentful Paint (LCP) [median]520 ms
Cumulative Layout Shift (CLS) [median]0.02
Interaction To Next Paint (INP) [median]120 ms
Total Blocking Time [median]2.205 s
Max Potential FID [median]656 ms
CPU metrics
CPU long tasks [median]10
CPU longest task duration1.041 s
CPU last long task happens at4.306 s
Visual Metrics
First Visual Change [median]500 ms
Speed Index [median]962 ms
Visual Complete 85% [median]1.100 s
Visual Complete 99% [median]5.834 s
Last Visual Change [median]5.834 s
Screenshot of run 1

Timings Summary

Metricminmedianmeanmax
Visual Metrics
FirstVisualChange466 ms500 ms544 ms666 ms
LastVisualChange5.766 s5.834 s5.855 s5.966 s
SpeedIndex911 ms962 ms994 ms1.108 s
VisualReadiness5.300 s5.300 s5.311 s5.334 s
VisualComplete851.066 s1.100 s1.144 s1.266 s
VisualComplete955.400 s5.434 s5.478 s5.600 s
VisualComplete995.766 s5.834 s5.855 s5.966 s
Google Web Vitals
Time To First Byte (TTFB)316 ms322 ms385 ms518 ms
Largest Contentful Paint (LCP)476 ms520 ms557 ms676 ms
First Contentful Paint (FCP)476 ms520 ms557 ms676 ms
Cumulative Layout Shift (CLS)0.01860.01860.01860.0186
More metrics
firstPaint476 ms520 ms557 ms676 ms
loadEventEnd987 ms1.018 s1.057 s1.165 s
CPU
Total Blocking Time1.503 s2.205 s2.178 s2.826 s
Max Potential FID616 ms656 ms771 ms1.041 s
CPU long tasks 8101012
CPU last long task happens at4.287 s4.306 s4.393 s4.586 s
| Waterfall | | Download HAR | 

Waterfall

Run 1 SpeedIndex median

| Video | Download | 

Video

Download video
| Filmstrip | 

Filmstrip

Use--filmstrip.showAll to show all filmstrips.

0 s
0.4 sDOM Content Loaded Time 353 ms
0.5 sCPU Long Task duration 63 msFirst Visual Change 500 ms
0.6 sFirst Contentful Paint 520 msLCP <DIV> ZEWft5 520 msCPU Long Task duration 70 ms
0.7 s
0.8 sCPU Long Task duration 106 ms
0.9 sLayout Shift 0.00672 813 ms
1.1 sPage Load Time 1.018 sLayout Shift 0.01191 1.035 sVisual Complete 85% 1.100 s
1.2 sCPU Long Task duration 118 ms
1.3 s
1.4 s
1.5 sCPU Long Task duration 649 ms
1.6 s
1.7 s
1.8 s
1.9 s
2 s
2.1 s
2.2 sCPU Long Task duration 170 ms
2.3 s
2.4 s
2.5 sCPU Long Task duration 217 ms
2.6 s
2.7 s
2.8 s
2.9 sCPU Long Task duration 69 ms
3 s
3.1 s
3.2 s
3.3 sCPU Long Task duration 232 ms
3.4 s
3.5 s
3.6 sCPU Long Task duration 211 ms
3.7 s
3.8 s
3.9 sCPU Long Task duration 493 ms
4 s
4.1 s
4.2 s
4.3 s
4.4 sCPU Long Task duration 1.041 s
4.5 s
4.6 s
4.7 s
4.8 s
4.9 s
5 s
5.1 s
5.2 s
5.3 s
5.4 s
5.5 sFully Loaded 5.401 sVisual Complete 95% 5.434 s
5.7 s
5.8 s
5.9 sLast Visual Change 5.834 sVisual Complete 99% 5.834 s
| Performance advice | Best practice advice | Privacy advice | Page info | Technologies | 

Coach

The coach helps you find performance problems on your web page using web performance best practice rules. And gives you advice on privacy and best practices. Tested using Coach-core version 8.1.1.

I am the coach

Coach score

Performance advice (70)

TitleAdviceScore
Avoid CPU Long Tasks (longTasks)The page has 12 CPU long tasks with the total of 3.439 s. The total blocking time is 2.826 s and 1 long task before first contentful paint with total time of 63 ms. However the CPU Long Task is depending on the computer/phones actual CPU speed, so you should measure this on the same type of the device that your user is using. Use Geckoprofiler for Firefox or Chromes tracelog to debug your long tasks.0
Description: Long CPU tasks locks the thread. To the user this is commonly visible as a "locked up" page where the browser is unable to respond to user input; this is a major source of bad user experience on the web today. However the CPU Long Task is depending on the computer/phones actual CPU speed, so you should measure this on the same type of the device that your user is using. To debug you should use the Chrome timeline log and drag/drop it into devtools or use Firefox Geckoprofiler.
Offenders:
  • self
  • self
  • self
  • cross-origin-descendant
  • cross-origin-descendant
  • cross-origin-descendant
  • cross-origin-descendant
  • cross-origin-descendant
  • cross-origin-descendant
  • unknown
  • cross-origin-descendant
  • cross-origin-descendant
  • Avoid doing redirects (assetsRedirects)The page has 3 redirects. 3 of the redirects are from the base domain, please fix them! 70
    Description: A redirect is one extra step for the user to download the asset. Avoid that if you want to be fast. Redirects are even more of a showstopper on mobile.
    Offenders:
  • https://gitlab.com/users/sign_in
  • https://gitlab.com/favicon.ico
  • https://gitlab.com/favicon.ico
  • Avoid extra requests by setting cache headers (cacheHeaders)The page has 11 requests that are missing a cache time. Configure a cache time so the browser doesn't need to download them every time. It will save 115.2 kB the next access.0
    Description: The easiest way to make your page fast is to avoid doing requests to the server. Setting a cache header on your server response will tell the browser that it doesn't need to download the asset again during the configured cache time! Always try to set a cache time if the content doesn't change for every request.
    Offenders:
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=964d2f9d1ae253d3
  • https://gitlab.com/favicon.ico
  • https://gitlab.com/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7...b2b82aa5143ef.png
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov.../new/normal/auto/
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/cmg/1
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl...strate/chl_api/v1
  • https://gitlab.com/favicon.ico
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/pat/964d2fa08ed...6/of-fPemBpn7k6n2
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/d/964d2fa08eddd...6/aF4hWhR4D0b_Oa8
  • Always compress text content (compressAssets)The page has 1 request that are served uncompressed. You could save a lot of bytes by sending them compressed instead.90
    Description: In the early days of the Internet there were browsers that didn't support compressing (gzipping) text content. They do now. Make sure you compress HTML, JSON, JavaScript, CSS and SVG. It will save bytes for the user; making the page load faster and use less bandwith.
    Offenders:
    URLTransfer sizeContent size
    https://gitlab.com/users/sign_in 5.9 KB7.1 KB
    Avoid redirecting the main document (documentRedirect)The main document gets redirected 3 time(s). Remove those redirect and make the page faster!0
    Description: You should never ever redirect the main document, because it will make the page load slower for the user. Well, you should redirect the user if the user tries to use HTTP and there's an HTTPS version of the page. The coach checks for that. :)
    Offenders:
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/users/sign_in
  • https://gitlab.com/dashboard/merge_requests/
  • Total JavaScript size shouldn't be too big (javascriptSize)The total JavaScript transfer size is 120.1 kB and the uncompressed size is 304.7 kB. This is quite large. 50
    Description: A lot of JavaScript often means you are downloading more than you need. How complex is the page and what can the user do on the page? Do you use multiple JavaScript frameworks?
    Offenders:
    URLTransfer sizeContent size
    https://gitlab.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=964d2f9d1ae253d3 44.0 KB111.4 KB
    https://challenges.cloudflare.com/turnstile/v0/b/8359bcf47b68/api.js?onload=Xwypo8&render=explicit 16.2 KB47.8 KB
    https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl...strate/chl_api/v1 57.0 KB138.3 KB
    Don't use private headers on static content (privateAssets)The page has 3 requests with private headers. Make sure that the assets really should be private and only used by one user. Otherwise, make it cacheable for everyone.70
    Description: If you set private headers on content, that means that the content are specific for that user. Static content should be able to be cached and used by everyone. Avoid setting the cache header to private.
    Offenders:
  • https://gitlab.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=964d2f9d1ae253d3
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov.../new/normal/auto/
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl...strate/chl_api/v1
  • Avoid missing and error requests (responseOk)The page has 2 error responses. The page has 1 response with code 401. The page has 1 response with code 403. 80
    Description: Your page should never request assets that return a 400 or 500 error. These requests are never cached. If that happens something is broken. Please fix it.
    Offenders:
  • https://gitlab.com/users/sign_in
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/pat/964d2fa08ed...6/of-fPemBpn7k6n2
  • Best practice advice (76)

    TitleAdviceScore
    Meta description (metaDescription)The page is missing a meta description.0
    Description: Use a page description to make the page more relevant to search engines.
    Do not send too long headers (longHeaders)https://gitlab.com/d...d/merge_requests/ has a header content-security-policy that is 1648 characters long. https://gitlab.com/d...d/merge_requests/ has a header content-security-policy that is 1648 characters long. https://gitlab.com/users/sign_in has a header content-security-policy that is 1648 characters long. https://gitlab.com/favicon.ico has a header content-security-policy that is 1621 characters long. https://gitlab.com/a...b2b82aa5143ef.png has a header content-security-policy that is 1621 characters long. https://gitlab.com/favicon.ico has a header content-security-policy that is 1621 characters long. https://challenges.c...GexUH7urZkc5JMPav has a header cf-chl-gen that is 817 characters long. https://challenges.c...6/of-fPemBpn7k6n2 has a header www-authenticate that is 1913 characters long. 92
    Description: Do not send response headers that are too long.
    Offenders:
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/users/sign_in
  • https://gitlab.com/favicon.ico
  • https://gitlab.com/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7...b2b82aa5143ef.png
  • https://gitlab.com/favicon.ico
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/648788...GexUH7urZkc5JMPav
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/pat/964d2fa08ed...6/of-fPemBpn7k6n2
  • Avoid too many third party requests (thirdParty)The page do 47% requests to third party domains (8 requests and 320.6 kB). First party is 9 requests and 67.3 kB. The page transfer more bytes from third party domains (320.6 kB) then first party (67.3 kB). The regex .*gitlab.* was used to calculate first/third party requests.0
    Description: Do not load most of your content from third party URLs.
    Avoid unnecessary headers (unnecessaryHeaders)There are 16 responses that sets a server header. 84
    Description: Do not send headers that you don't need. We look for p3p, cache-control and max-age, pragma, server and x-frame-options headers. Have a look at Andrew Betts - Headers for Hackers talk as a guide https://www.youtube.com/watch?v=k92ZbrY815c or read https://www.fastly.com/blog/headers-we-dont-want.
    Offenders:
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/dashboard/merge_requests/
  • https://gitlab.com/users/sign_in
  • https://gitlab.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=964d2f9d1ae253d3
  • https://challenges.cloudflare.com/turnstile/v0/b/8359bcf47b68/api.js?onload=Xwypo8&render=explicit
  • https://gitlab.com/favicon.ico
  • https://gitlab.com/cdn-cgi/challenge-platform/h/b/flow/ov1/807389495:1753460074:...bNCTkGVzFN1fPgBsF
  • https://gitlab.com/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7...b2b82aa5143ef.png
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov.../new/normal/auto/
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/cmg/1
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl...strate/chl_api/v1
  • https://gitlab.com/favicon.ico
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/648788...GexUH7urZkc5JMPav
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/pat/964d2fa08ed...6/of-fPemBpn7k6n2
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/d/964d2fa08eddd...6/aF4hWhR4D0b_Oa8
  • https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/648788...GexUH7urZkc5JMPav
  • Privacy advice (93)

    TitleAdviceScore
    Set a referrer-policy header to make sure you do not leak user information. (referrerPolicyHeader)Set a referrer-policy header to make sure you do not leak user information.0
    Description: Referrer Policy is a new header that allows a site to control how much information the browser includes with navigations away from a document and should be set by all sites. https://scotthelme.co.uk/a-new-security-header-referrer-policy/.
    Offenders:
  • https://gitlab.com/users/sign_in
  • https://gitlab.com/users/sign_in
  • Set a strict transport header to make sure the user always use HTTPS. (strictTransportSecurityHeader)A strict transport header is set but miss out on setting includeSubDomains90
    Description: The HTTP Strict-Transport-Security response header (often abbreviated as HSTS) lets a web site tell browsers that it should only be accessed using HTTPS, instead of using HTTP. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security.
    Offenders:
  • https://gitlab.com/users/sign_in
  • Page info

    Page info
    TitleJust a moment...
    Width1350
    Height699
    DOM elements41
    Avg DOM depth5
    Max DOM depth8
    Iframes0
    Script tags3
    Local storage0 b
    Session storage0 b
    Network Information API4g

    Technologies used to build the page.

    Data collected using Wappalyzer version 6.10.66. With updated code from Webappanalyzer 2024-12-27. Use --browsertime.firefox.includeResponseBodies htmlor --browsertime.chrome.includeResponseBodies htmlto help Wappalyzer find more information about technologies used.

    TechnologyConfidenceCategory
    GitLab 100  Issue trackers Development
    Ruby 100  Programming languages
    Ruby on Rails 100  Web frameworks
    Vue.js 100  JavaScript frameworks
    HSTS 100  Security
    Cloudflare 100  CDN
    HTTP/3 100  Miscellaneous
    | Browser metrics | Visual Metrics | Largest Contentful Paint | Cumulative Layout Shift | Interaction To Next Paint | Long Aninimation Frames | Server timings | 

    Data from run 1

    Visual Metrics

    Browser Metrics

    Largest Contentful Paint

    When in time the page main content is rendered (collected using the Largest Contentful Paint API). Read more about Largest Contentful Paint.

    Element typeDIV
    Element/tag<div id="ZEWft5" class="core-msg spacer spacer-top"></div>
    Render time 520 ms
    Element render delay204 ms
    TTFB316 ms
    Resource delay0 ms
    Resource load duration0 ms
    Element idZEWft5
    Load time0 ms
    Size (width*height)50816
    DOM path
    div:eq(0) > div > div#ZEWft5> div:eq(0) > div > div#ZEWft5>
    LCP

    The largest contentful paint is highlighted in the image. If no element is highlighted the element was removed before the screenshot or the LCP API couldn't find the element.

    Detected Cumulative Layout Shift

    0.01863 cumulative layout shift collected from the Cumulative Layout Shift API.

    These HTML elements contribute most to the Cumulative Layout Shifts of the page. The higher score, the more layout shift.

    ScoreHTML Element
    0.01191<div id="ZEWft5" class="core-msg spacer spacer-top"></div>,<div class="footer" role="contentinfo"></div>
    body > div:eq(0) > div > div#ZEWft5,body > div:eq(1)
    0.00672<div id="ZEWft5" class="core-msg spacer spacer-top"></div>,<div class="footer" role="contentinfo"></div>
    body > div:eq(0) > div > div#ZEWft5,body > div:eq(1)
    Layout shift

    The elements that have shifted place is highlighted in the image (that have a higher value than 0.01). If the element shifted outside of the viewport, you will not see it there. It can be hard to understand what content that has shifted, if that's the case, checkout the video or the filmstrip of the run.

    Interaction to Next Paint

    Interaction to Next Paint (INP) is a metric that try to measure responsiveness. It's useful if you are testing user journeys. Read more about Interaction to Next Paint.

    The measured latency was 152 ms.

    Event typepointerover
    Element typeBODY
    Element class name
    Event targethtml>body
    Load state when the event happeneddom-content-loaded

    Long Animation Frames

    Read more about the Long Animation Frames API here here.

    The top 10 longest animation frames entries

    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    991.7 ms1.045 s0.4 ms0.1 ms0.3 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    600.6 ms650.3 ms0.7 ms0.6 ms0.1 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    444.2 ms494.7 ms0.3 ms0 ms0.3 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    183.4 ms233.3 ms0.4 ms0.4 ms0 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    168.1 ms239.2 ms0.5 ms0.5 ms0 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    162.1 ms211.7 ms0.7 ms0.6 ms0.1 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    120.5 ms178.6 ms0.5 ms0.5 ms0 ms
    No availible script information.
    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    58.3 ms108.2 ms1.5 ms0 ms1.5 ms
    https://gitlab.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=964d2f9d1ae253d3

    Invoker:  XMLHttpRequest.onreadystatechange
    Invoker Type: event-listener
    Window attribution: self
    Source char position: 72313

    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    44.9 ms105 ms0.4 ms0.4 ms0 ms
    https://gitlab.com/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=964d2f9d1ae253d3

    Invoker:  TimerHandler:setTimeout
    Invoker Type: user-callback
    Source Function Name:  EG
    Window attribution: self
    Source char position: 78276

    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    32.7 ms82.7 ms0.3 ms0 ms0.3 ms
    No availible script information.

    Server timings

    namedurationdescription
    chlray0964d2f9d1ae253d3

    Custom metrics collected through JavaScript

    There are no custom configured scripts.

    Extra metrics collected using scripting

    There are no custom extra metrics from scripting.

    | Summary  | Largest responses  | Requests and sizes per content type  | Data per domain | Expires and last modified statistics  | Requests loaded after onLoad event  | 

    PageXray

    How the page is built.

    Summary
    HTTP versionHTTP/2.0
    Total requests17
    Total domains2
    Total transfer size378.9 KB
    Total content size656.4 KB
    Responses missing compression8
    Number of cookies1
    Third party cookies0
    Requests per response code
    20010
    3012
    3022
    3071
    4011
    4031

    Largest assets on the page (by transfer size)

    Requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b8.1 KB26.5 KB1
    javascript0 b117.3 KB297.6 KB3
    image0 b1.7 KB825 B3
    plain0 b244.3 KB324.4 KB3
    Total0 b371.4 KB649.3 KB10

    Data per domain

    DomainTotal download timeTransfer SizeContent SizeRequests
    gitlab.com699 ms65.8 KB138.1 KB9
    challenges.cloudflare.com562 ms313.1 KB518.3 KB8

    Expires and last modified statistics

    typeminmedianmax
    Expires0 seconds0 seconds1 year
    Last modified4 days4 days4 days

    Requests loaded after onLoad event

    Included requests done after load event end.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript0 b0
    image271 B1
    font0 b0
    plain229.6 KB2
    Total231.6 KB5

    Requests loaded after onContentLoad

    Includes requests done after DOM content loaded.

    ContentTransfer SizeRequests
    html8.1 KB1
    css0 b0
    javascript73.3 KB2
    image1.7 KB3
    font0 b0
    plain244.3 KB3
    Total329.0 KB12
    | Categories | | First vs third | 

    Third party

    Third party requests categorised by Third party web version 0.26.2.

    CategoryRequests
    CategoryNumber of tools

    Unmatched third party domains

    Here's a list of domains that didn't match any tool in Third party web. If you are sure they are third party domains, please do a PR to that project. You can also fine tune the list using --firstParty.

    challenges.cloudflare.com

    First party requests and sizes per content type

    Calculated using .*gitlab.* (use --firstParty to configure).

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b0 b0 b0
    css0 b0 b0 b0
    javascript0 b44.0 KB111.4 KB1
    image0 b1.3 KB591 B1
    font0 b0 b0 b0
    plain0 b14.6 KB19.0 KB1
    Total82 B65.8 KB138.1 KB9

    Third party requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b8.1 KB26.5 KB1
    css0 b0 b0 b0
    javascript0 b73.3 KB186.2 KB2
    image0 b480 B234 B2
    font0 b0 b0 b0
    plain0 b229.6 KB305.4 KB2
    TotalN/A313.1 KB518.3 KB8