Page summary

https://gitlab.com/explore

Tested 2025-10-07 04:54:37 using Chrome 140.0.7339.80 (runtime settings).

SummaryWaterfall MetricsVideoFilmstrip CoachPageXrayCPU Third party axe
| Summary | | Download Video | Download Timeline Log | Download HAR | 

Summary

MetricValue
Page metrics
Performance Score95
Total Page Transfer Size19.3 KB
Requests5
Timing metrics
TTFB [median]715 ms
First Paint [median]796 ms
Fully Loaded [median]1.405 s
Google Web Vitals
TTFB [median]715 ms
First Contentful Paint (FCP) [median]796 ms
Largest Contentful Paint (LCP) [median]796 ms
Cumulative Layout Shift (CLS) [median]0.00
Total Blocking Time [median]176 ms
Max Potential FID [median]201 ms
CPU metrics
CPU long tasks [median]1
CPU longest task duration401 ms
CPU last long task happens at804 ms
Visual Metrics
First Visual Change [median]800 ms
Speed Index [median]889 ms
Visual Complete 85% [median]1.217 s
Visual Complete 99% [median]1.217 s
Last Visual Change [median]1.217 s
Screenshot of run 1

Timings Summary

Metricminmedianmeanmax
Visual Metrics
FirstVisualChange767 ms800 ms800 ms833 ms
LastVisualChange1.200 s1.217 s1.217 s1.233 s
SpeedIndex849 ms889 ms889 ms928 ms
LargestImage767 ms800 ms800 ms833 ms
Heading767 ms800 ms800 ms833 ms
LargestContentfulPaint767 ms800 ms800 ms833 ms
LastMeaningfulPaint767 ms800 ms800 ms833 ms
VisualReadiness400 ms417 ms417 ms433 ms
VisualComplete851.200 s1.217 s1.217 s1.233 s
VisualComplete951.200 s1.217 s1.217 s1.233 s
VisualComplete991.200 s1.217 s1.217 s1.233 s
Google Web Vitals
Time To First Byte (TTFB)688 ms715 ms715 ms742 ms
Largest Contentful Paint (LCP)768 ms796 ms796 ms824 ms
First Contentful Paint (FCP)768 ms796 ms796 ms824 ms
Cumulative Layout Shift (CLS)0.00020.00030.00030.0005
More metrics
firstPaint768 ms796 ms796 ms824 ms
loadEventEnd1.227 s1.234 s1.234 s1.241 s
User Timing
sentry-tracing-init990 ms998998 ms1.006 s
CPU
Total Blocking Time0 ms176 ms176 ms351 ms
Max Potential FID0 ms201 ms201 ms401 ms
CPU long tasks 1111
CPU last long task happens at794 ms804 ms804 ms813 ms
| Waterfall | | Download HAR | 

Waterfall

Run 1 

| Video | Download | 

Video

Download video
| Filmstrip | 

Filmstrip

Use--filmstrip.showAll to show all filmstrips.

0 s
0.8 sFirst Visual Change 767 msLargest Image 767 msHeading 767 msFirst Contentful Paint 768 msLCP <P> 768 msLayout Shift 0.00026 791 msCPU Long Task duration 401 ms
1 ssentry-tracing-init 990 ms
1.2 sDOM Content Loaded Time 1.192 sLayout Shift 0.00020 1.198 sLast Visual Change 1.200 sVisual Complete 85% 1.200 sVisual Complete 95% 1.200 sVisual Complete 99% 1.200 s
1.3 sPage Load Time 1.227 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.3.

I am the coach

Coach score

Performance advice (95)

TitleAdviceScore
Inline CSS for faster first render (inlineCss)The page has both inline CSS and CSS requests even though it uses a HTTP/2-ish connection. If you have many users on slow connections, it can be better to only inline the CSS. Run your own tests and check the waterfall graph to see what happens.95
Description: In the early days of the Internet, inlining CSS was one of the ugliest things you can do. That has changed if you want your page to start rendering fast for your user. Always inline the critical CSS when you use HTTP/1 and HTTP/2 (avoid doing CSS requests that block rendering) and lazy load and cache the rest of the CSS. It is a little more complicated when using HTTP/2. Does your server support HTTP push? Then maybe that can help. Do you have a lot of users on a slow connection and are serving large chunks of HTML? Then it could be better to use the inline technique, becasue some servers always prioritize HTML content over CSS so the user needs to download the HTML first, before the CSS is downloaded.
Avoid CPU Long Tasks (longTasks)The page has 1 CPU long task with the total of 401 ms. The total blocking time is 351 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.80
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
  • Avoid extra requests by setting cache headers (cacheHeaders)The page has 2 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 649 B the next access.80
    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/-/manifest.json
  • https://gitlab.com/-/pwa-icons/logo-192.png
  • Don't use private headers on static content (privateAssets)The page has 2 requests with private headers. The main page has a private header. It could be right in some cases where the user can be logged in and served specific content. But if your asset is static it should never be private. Make sure that the assets really should be private and only used by one user. Otherwise, make it cacheable for everyone.90
    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/explore
  • https://gitlab.com/-/manifest.json
  • Best practice advice (100)

    Your best practice score is perfect!

    Privacy advice (99)

    TitleAdviceScore
    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.

    Page info

    Page info
    TitleExplore projects · GitLab
    Width1350
    Height2019
    DOM elements1638
    Avg DOM depth13
    Max DOM depth21
    Iframes0
    Script tags22
    Local storage386.6 KB
    Session storage17 B
    Network Information API4g
    Resource Hints
    preconnect
    https://snowplowprd.trx.gitlab.net/

    Technologies used to build the page.

    Data collected using Wappalyzer version 6.10.54. 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
    HSTS 100  Security
    Cloudflare 100  CDN
    | Browser metrics | Visual Metrics | Largest Contentful Paint | Cumulative Layout Shift | Long Aninimation Frames | Visual Elements | 

    Data from run 1

    Visual Metrics

    Browser Metrics

    Google Web Vitals
    Time to first byte (TTFB)688 ms
    First Contentful Paint (FCP)768 ms
    Largest Contentful Paint (LCP)768 ms
    Cumulative Layout Shift (CLS)0.00
    Total Blocking Time (TBT)351 ms
    First Contentful Paint info
    Elements that needed recalculate style before FCP789
    Time spent in recalculate style before FCP14.52 ms
    Extra timings
    TTFB688 ms
    First Paint768 ms
    Load Event End1.227 s
    Fully loaded1.405 s
    User Timing marks
    sentry-tracing-init990 ms

    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 typeP
    Element/tag<p data-sourcepos="3:1-3:170" dir="auto"></p>
    Render time 768 ms
    Element render delay80 ms
    TTFB688 ms
    Resource delay0 ms
    Resource load duration0 ms
    Elements that needed recalculate style before LCP789
    Time spent in recalculate style before LCP14.52 ms
    Load time0 ms
    Size (width*height)17069
    DOM path
    div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(3) > div:eq(1) > div > div:eq(1) > p:eq(1)> div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(3) > div:eq(1) > div > div:eq(1) > p:eq(1)>
    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.00046 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.00026<div class="project-cell project-controls gl-text-subtle @sm/panel:gl-flex gl-items-center !gl-align-middle !gl-hidden @sm/panel:!gl-table-cell" data-testid="project_controls"></div>,<div class="project-cell project-controls gl-text-subtle !gl-hidden @sm/panel:!gl-table-cell" data-testid="project_controls"></div>,<div class="project-cell project-controls gl-text-subtle !gl-hidden @sm/panel:!gl-table-cell" data-testid="project_controls"></div>,<div class="project-cell project-controls gl-text-subtle !gl-hidden @sm/panel:!gl-table-cell" data-testid="project_controls"></div>
    body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(0) > div:eq(2),body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(1) > div:eq(2),body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(2) > div:eq(2),body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(3) > div:eq(2)
    0.00020<span></span>,<span></span>,<span></span>,<span></span>
    body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(0) > div:eq(2) > div:eq(1) > span,body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(1) > div:eq(2) > div:eq(1) > span,body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(2) > div:eq(2) > div:eq(1) > span,body > div:eq(1) > div:eq(1) > div:eq(3) > main#content-body > div:eq(5) > ul > li:eq(3) > div:eq(2) > div:eq(1) > span
    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.

    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
    353.5 ms402.3 ms2.2 ms1.9 ms0.3 ms
    https://gitlab.com/assets/webpack/main.dc7de4d6.chunk.js

    Invoker:  https://gitlab.com/assets/webpack/main.dc7de4d6.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    https://gitlab.com/assets/webpack/tracker.85adcc5f.chunk.js

    Invoker:  https://gitlab.com/assets/webpack/tracker.85adcc5f.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    https://gitlab.com/assets/webpack/analytics.1f5b93d6.chunk.js

    Invoker:  https://gitlab.com/assets/webpack/analytics.1f5b93d6.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    https://gitlab.com/assets/webpack/sentry.61dff9c0.chunk.js

    Invoker:  https://gitlab.com/assets/webpack/sentry.61dff9c0.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    https://gitlab.com/assets/webpack/commons-pages.groups.settings.work_items.show-super_sidebar.cf340fb7.chunk.js

    Invoker:  https://gitlab.com/assets/webpack/commons-pages.groups.settings.work_items.show-super_sidebar.cf340fb7.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    https://gitlab.com/assets/webpack/super_sidebar.fc4e151c.chunk.js

    Forced Style And Layout Duration: 22 ms

    Invoker:  https://gitlab.com/assets/webpack/super_sidebar.fc4e151c.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    https://gitlab.com/assets/webpack/pages.explore.projects.cc1cde8a.chunk.js

    Forced Style And Layout Duration: 2 ms

    Invoker:  https://gitlab.com/assets/webpack/pages.explore.projects.cc1cde8a.chunk.js
    Invoker Type: classic-script
    Window attribution: self

    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    1.9 ms35.1 ms17.1 ms0.1 ms17 ms
    https://gitlab.com/assets/webpack/main.dc7de4d6.chunk.js

    Forced Style And Layout Duration: 23 ms

    Invoker:  IdleRequestCallback
    Invoker Type: user-callback
    Window attribution: self
    Source char position: 765109

    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    0 ms38.2 ms21.9 ms0.1 ms21.8 ms
    No availible script information.

    Server timings

    There are no Server Timings.

    Custom metrics collected through JavaScript

    There are no custom configured scripts.

    Extra metrics collected using scripting

    There are no custom extra metrics from scripting.

    Visual Elements

    NameDisplay TimeX YWidthHeight
    LargestImage (photo_2025-07-25_23-37-21.jpg?width=48)767 ms 264 361 48 48
    <img srcset="/uploads/-/system/project/avatar/75080181/photo_2025-07-25_23-37-21.jpg?width=48 1x, /uploads/-/system/project/avatar/75080181/photo_2025-07-25_23-37-21.jpg?width=96 2x" class="gl-avatar gl-avatar-s48 !gl-rounded-base" height="48" width="48" loading="lazy" aria-hidden="true" src="/uploads/-/system/project/avatar/75080181/photo_2025-07-25_23-37-21.jpg?width=48">
    Heading767 ms 264 108 207 36
    <h1 class="page-title gl-text-size-h-display"></h1>
    LargestContentfulPaint767 ms 328 593 793 36
    <p data-sourcepos="3:1-3:170" dir="auto"></p>
    | 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 requests5
    Total domains3
    Total transfer size19.3 KB
    Total content size182.2 KB
    Responses missing compression1
    Number of cookies2
    Third party cookies0
    Requests per response code
    2005

    Largest assets on the page (by transfer size)

    Requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b18.0 KB179.7 KB1
    image0 b346 B1.8 KB1
    json0 b694 B721 B2
    plain0 b226 B2 B1
    Total0 b19.3 KB182.2 KB5

    Data per domain

    DomainTotal download timeTransfer SizeContent SizeRequests
    gitlab.com886 ms18.7 KB182.2 KB3
    new-sentry.gitlab.net54 ms391 B2 B1
    snowplowprd.trx.gitlab.net76 ms226 B2 B1

    Expires and last modified statistics

    typeminmedianmax
    Expires0 seconds0 seconds0 seconds
    Last modified7 hours7 hours7 hours

    Requests loaded after onLoad event

    Included requests done after load event end.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript0 b0
    image346 B1
    font0 b0
    json303 B1
    plain226 B1
    Total875 B3

    Requests loaded after onContentLoad

    Includes requests done after DOM content loaded.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript0 b0
    image346 B1
    font0 b0
    json303 B1
    plain226 B1
    Total875 B3
    CPU Long Tasks | CPU Time Spent | CPU Time Spent Per Request | CPU Time Per Tool/Domain | 

    CPU

    Download the Chrome trace log and drag and drop it into Developer Tools / Performance in Chrome.

    Long Tasks

    Collected using the Long Task API. A long task is a task that take 50 milliseconds or more.

    TypeQuantityTotal duration (ms)
    Total Blocking Time 351
    Max Potential First Input Delay 401
    Long Tasks before First Paint00
    Long Tasks before First Contentful Paint00
    Long Tasks before Largest Contentful Paint00
    Long Tasks after Load Event End00
    Total Long Tasks1401

    CPU last long task happened at 794 ms

    Individual Long Tasks

    namestartTimedurationcontainerIdcontainerNamecontainerSrccontainerType
    self794401window

    CPU time spent

    Calculated using Tracium.

    Categories (ms)
    parseHTML25
    styleLayout116
    paintCompositeRender10
    scriptParseCompile135
    scriptEvaluation272
    garbageCollection4
    other51
    Events (ms)
    v8.compile135
    v8.run121
    UpdateLayoutTree96
    v8.produceCache62
    RunMicrotasks52
    RunTask32
    ParseHTML25
    FunctionCall25
    Layout19

    Time spent per request

    URLCPU time (ms)
    https://gitlab.com/assets/webpack/main.dc7de4d6.chunk.js195
    https://gitlab.com/assets/webpack/super_sidebar.fc4e151c.chunk.js130
    https://gitlab.com/assets/webpack/pages.explore.projects.cc1cde8a.chunk.js55
    https://gitlab.com/assets/webpack/sentry.61dff9c0.chunk.js38
    https://gitlab.com/assets/webpack/global_search_modal.ef2ac536.chunk.js14

    CPU time spent

    Tool/domainTime (ms)
    gitlab.com431.3
    | First vs third | 

    Third party

    Third party requests categorised by Third party web version 0.26.2.

    First party requests and sizes per content type

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

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b18.0 KB179.7 KB1
    css0 b0 b0 b0
    javascript0 b0 b0 b0
    image0 b346 B1.8 KB1
    font0 b0 b0 b0
    json0 b694 B721 B2
    plain0 b226 B2 B1
    TotalN/A19.3 KB182.2 KB5

    Third party requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b0 b0 b0
    css0 b0 b0 b0
    javascript0 b0 b0 b0
    image0 b0 b0 b0
    font0 b0 b0 b0
    TotalN/AN/AN/A

    Axe

    Axe is an accessibility testing engine for websites and other HTML-based user interfaces. Tested using axe-core version 4.10.3. Read more about axe-core .

    Violations

    Median number of violations for all the runs. Check each individual run to see all the violations.

    TypeViolations (median)
    Critical 0 (0 issues)
    Serious0 (0 issues)
    Moderate0 (0 issues)
    Minor0 (0 issues)