Run 2 summary

https://iliev.co.uk/

Tested 2025-12-11 13:12:05 using Chrome 138.0.7204.49 (runtime settings).

SummaryWaterfall MetricsVideoFilmstrip CoachPageXrayThird partyScreenshots

Summary

MetricValue
Page metrics
Performance score76
Total page size578.4 KB
Requests16
Timing metrics
TTFB82 ms
First Paint692 ms
Fully Loaded861 ms
Google Web Vitals
TTFB82 ms
First Contentful Paint (FCP) 692 ms
Largest Contentful Paint (LCP) 796 ms
Cumulative Layout Shift (CLS) 0.00
512 ms
CPU metrics
CPU long tasks2
CPU last long task happens at526 ms
Visual Metrics
First Visual Change701 ms
Speed Index725 ms
Visual Complete 85%801 ms
Visual Complete 99%868 ms
Last Visual Change868 ms
Screenshot
| Waterfall | | Download HAR | 

Waterfall

| Video | Download | 

Video

Download video
| Filmstrip | 

Filmstrip

Use--filmstrip.showAll to show all filmstrips.

0 s
0.5 sCPU Long Task duration 65 ms
0.6 sDOM Content Loaded Time 503 msCPU Long Task duration 111 ms
0.7 sFirst Contentful Paint 692 ms
0.8 sFirst Visual Change 701 msLayout Shift 0.00165 719 msLayout Shift 0.00001 791 msPage Load Time 795 msLCP <H5> 796 ms
0.9 sVisual Complete 85% 801 msVisual Complete 95% 801 msFully Loaded 861 msLast Visual Change 868 msVisual Complete 99% 868 ms
| 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 (76)

TitleAdviceScore
Don't scale images in the browser (avoidScalingImages)The page has 1 image that are scaled more than 100 pixels. It would be better if those images are sent so the browser don't need to scale them.90
Description: It's easy to scale images in the browser and make sure they look good in different devices, however that is bad for performance! Scaling images in the browser takes extra CPU time and will hurt performance on mobile. And the user will download extra kilobytes (sometimes megabytes) of data that could be avoided. Don't do that, make sure you create multiple version of the same image server-side and serve the appropriate one.
Offenders:
  • https://iliev.co.uk/static/profile.png
  • Avoid CPU Long Tasks (longTasks)The page has 2 CPU long tasks with the total of 176 ms. The total blocking time is 0 ms and 2 long tasks before first contentful paint with total time of 176 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.60
    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
  • unknown
  • Avoid Frontend single point of failures (spof)The page has 1 request inside of the head that can cause a SPOF (single point of failure). Load them asynchronously or move them outside of the document head.90
    Description: A page can be stopped from loading in the browser if a single JavaScript, CSS, and in some cases a font, couldn't be fetched or is loading really slowly (the white screen of death). That is a scenario you really want to avoid. Never load 3rd-party components synchronously inside of the head tag.
    Offenders:
  • https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback
  • 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 542.1 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://iliev.co.uk/static/plugins/fontawesome-free/css/all.min.css
  • https://iliev.co.uk/static/dist/css/adminlte.min.css
  • https://iliev.co.uk/static/profile.png
  • https://iliev.co.uk/static/http3.png
  • https://iliev.co.uk/static/plugins/jquery/jquery.min.js
  • https://iliev.co.uk/static/plugins/bootstrap/js/bootstrap.bundle.min.js
  • https://iliev.co.uk/static/dist/js/adminlte.min.js
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
  • https://iliev.co.uk/favicon.ico
  • Long cache headers is good (cacheHeadersLong)The page has 1 request that have a shorter cache time than 30 days (but still a cache time).99
    Description: Setting a cache header is good. Setting a long cache header (at least 30 days) is even better beacause then it will stay long in the browser cache. But what do you do if that asset change? Rename it and the browser will pick up the new version.
    Offenders:
  • https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback
  • Total CSS size shouldn't be too big (cssSize)The total CSS transfer size is 250.2 kB and uncompressed size is 1.5 MB. That is big and the CSS could most probably be smaller.0
    Description: Delivering a massive amount of CSS to the browser is not the best thing you can do, because it means more work for the browser when parsing the CSS against the HTML and that makes the rendering slower. Try to send only the CSS that is used on that page. And make sure to remove CSS rules when they aren't used anymore.
    Offenders:
    URLTransfer sizeContent size
    https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback 1.3 KB10.2 KB
    https://iliev.co.uk/static/plugins/fontawesome-free/css/all.min.css 18.6 KB57.9 KB
    https://iliev.co.uk/static/dist/css/adminlte.min.css 224.5 KB1.3 MB
    Avoid too many fonts (fewFonts)The page has 6 font requests. Do you really need them? What value does the fonts give the user?40
    Description: How many fonts do you need on a page for the user to get the message? Fonts can slow down the rendering of content, try to avoid loading too many of them because worst case it can make the text invisible until they are loaded (FOIT—flash of invisible text), best case they will flicker the text content when they arrive.
    Offenders:
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
  • Make each CSS response small (optimalCssSize)https://iliev.co.uk/static/plugins/fontawesome-free/css/all.min.css size is 19 kB (18999) and that is bigger than the limit of 14.5 kB. https://iliev.co.uk/static/dist/css/adminlte.min.css size is 229.9 kB (229855) and that is bigger than the limit of 14.5 kB. Try to make the CSS files fit into 14.5 KB.80
    Description: Make CSS responses small to fit into the magic number TCP window size of 14.5 KB. The browser can then download the CSS faster and that will make the page start rendering earlier.
    Offenders:
    URLTransfer sizeContent size
    https://iliev.co.uk/static/plugins/fontawesome-free/css/all.min.css 18.6 KB57.9 KB
    https://iliev.co.uk/static/dist/css/adminlte.min.css 224.5 KB1.3 MB
    Don't use private headers on static content (privateAssets)The page has 1 request with private headers. 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://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback
  • Avoid missing and error requests (responseOk)The page has 1 error response. The page has 1 response with code 404. 90
    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://iliev.co.uk/favicon.ico
  • Best practice advice (83)

    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.
    Avoid too many third party requests (thirdParty)The page do 25% requests to third party domains (4 requests and 45.8 kB). First party is 12 requests and 546.5 kB. The regex .*iliev.* was used to calculate first/third party requests.50
    Description: Do not load most of your content from third party URLs.
    Avoid unnecessary headers (unnecessaryHeaders)There are 4 responses that sets both a max-age and expires header. There are 16 responses that sets a server header. 80
    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://iliev.co.uk/
  • https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback
  • https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback
  • https://iliev.co.uk/static/plugins/fontawesome-free/css/all.min.css
  • https://iliev.co.uk/static/dist/css/adminlte.min.css
  • https://iliev.co.uk/static/profile.png
  • https://iliev.co.uk/static/http3.png
  • https://iliev.co.uk/static/plugins/jquery/jquery.min.js
  • https://iliev.co.uk/static/plugins/bootstrap/js/bootstrap.bundle.min.js
  • https://iliev.co.uk/static/dist/js/adminlte.min.js
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
  • https://iliev.co.uk/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
  • https://iliev.co.uk/favicon.ico
  • Privacy advice (89)

    TitleAdviceScore
    Use a good Content-Security-Policy header to make sure you you avoid Cross Site Scripting (XSS) attacks. (contentSecurityPolicyHeader)Set a Content-Security-Policy header to make sure you are not open for Cross Site Scripting (XSS) attacks. You can start with setting a Content-Security-Policy-Report-Only header, that will only report the violation, not stop the download.0
    Description: Content Security Policy is delivered via a HTTP response header, and defines approved sources of content that the browser may load. It can be an effective countermeasure to Cross Site Scripting (XSS) attacks and is also widely supported and usually easily deployed. https://scotthelme.co.uk/content-security-policy-an-introduction/.
    Offenders:
  • https://iliev.co.uk/
  • Do not share user data with third parties. (thirdPartyPrivacy)The page has 25% requests that are 3rd party (4 requests with a size of 45.8 kB). The page also have request to companies that harvest data from users and do not respect users privacy (see https://en.wikipedia.org/wiki/Surveillance_capitalism). The page do 4 survelliance requests and uses 1 survelliance tool.0
    Description: Using third party requests shares user information with that third party. Please avoid that! The project https://github.com/patrickhulce/third-party-web is used to categorize first/third party requests.
    Offenders:
  • https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
  • https://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
  • Page info

    Page info
    TitleDean Iliev | Info
    Width1350
    Height995
    DOM elements186
    Avg DOM depth10
    Max DOM depth16
    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
    Nginx 1.27.5100  Web servers Reverse proxies
    HSTS 100  Security
    HTTP/3 100  Miscellaneous

    Data collected using Third Party Web 0.26.2

    Cdn
    Google Fonts
    Survelliance
    Google Fonts
    | Browser metrics | Visual Metrics | Largest Contentful Paint | Cumulative Layout Shift | Interaction To Next Paint | Long Aninimation Frames | Metrics from CDP | 

    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 typeH5
    Element/tag<h5></h5>
    Render time 796 ms
    Element render delay715 ms
    TTFB82 ms
    Resource delay0 ms
    Resource load duration0 ms
    Load time0 ms
    Size (width*height)10340
    DOM path
    div > div > section:eq(1) > div > div > div:eq(1) > div > div:eq(1) > div > div#more > h5:eq(0)> div > div > section:eq(1) > div > div > div:eq(1) > div > div:eq(1) > div > div#more > h5:eq(0)>
    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.00166 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.00165,<div style="float: left;" class="col-md-6"></div>,<div class="card card-primary card-outline"></div>,<li class="nav-item"></li>,<div style="float: left;" class="col-md-6"></div>
    body > div > div > section:eq(1) > div > div > div:eq(0) > div:eq(0) > div > h3 > #text,body > div > div > section:eq(1) > div > div > div:eq(0) > div:eq(0) > div > div:eq(2),body > div > div > section:eq(1) > div > div > div:eq(0) > div:eq(1),body > div > div > section:eq(1) > div > div > div:eq(1) > div > div:eq(0) > ul > li:eq(1),body > div > div > section:eq(1) > div > div > div:eq(0) > div:eq(0) > div > div:eq(1)
    0.00001<p class="text-muted"></p>
    body > div > div > section:eq(1) > div > div > div:eq(0) > div:eq(1) > div:eq(1) > p:eq(0)
    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 512 ms.

    Event typemouseover
    Element typeDIV
    Element class nametab-pane active
    Event target#more
    Load state when the event happeneddom-interactive

    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
    70.8 ms342.2 ms0.3 ms0.2 ms0.1 ms
    https://iliev.co.uk/static/plugins/jquery/jquery.min.js

    Invoker:  https://iliev.co.uk/static/plugins/jquery/jquery.min.js
    Invoker Type: classic-script
    Window attribution: self

    https://iliev.co.uk/static/plugins/bootstrap/js/bootstrap.bundle.min.js

    Invoker:  https://iliev.co.uk/static/plugins/bootstrap/js/bootstrap.bundle.min.js
    Invoker Type: classic-script
    Window attribution: self

    Blocking duration Work durationRender durationPreLayout DurationStyle And Layout Duration
    0 ms20.6 ms37.1 ms0 ms37.1 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.

    CDP Performance

    namevalue
    AudioHandlers0
    AudioWorkletProcessors0
    Documents3
    Frames2
    JSEventListeners17
    LayoutObjects707
    MediaKeySessions0
    MediaKeys0
    Nodes742
    Resources46
    ContextLifecycleStateObservers4
    V8PerContextDatas1
    WorkerGlobalScopes0
    UACSSResources0
    RTCPeerConnections0
    ResourceFetchers3
    AdSubframes0
    DetachedScriptStates0
    ArrayBufferContents0
    LayoutCount12
    RecalcStyleCount17
    LayoutDuration231
    RecalcStyleDuration40
    DevToolsCommandDuration14
    ScriptDuration67
    V8CompileDuration0
    TaskDuration518
    TaskOtherDuration166
    ThreadTime0
    ProcessTime1
    JSHeapUsedSize2060132
    JSHeapTotalSize3407872
    FirstMeaningfulPaint690
    | 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 requests16
    Total domains3
    Total transfer size578.4 KB
    Total content size1.8 MB
    Responses missing compression7
    Number of cookies0
    Third party cookies0
    Requests per response code
    20015
    4041

    Largest assets on the page (by transfer size)

    Requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b4.3 KB12.3 KB1
    css0 b244.3 KB1.4 MB3
    javascript0 b99.8 KB214.0 KB3
    image0 b20.7 KB22.4 KB2
    font0 b208.7 KB207.6 KB6
    Total0 b577.9 KB1.8 MB15

    Data per domain

    DomainTotal download timeTransfer SizeContent SizeRequests
    iliev.co.uk431 ms533.7 KB1.8 MB12
    fonts.googleapis.com385 ms1.3 KB10.2 KB1
    fonts.gstatic.com416 ms43.4 KB43.3 KB3

    Expires and last modified statistics

    typeminmedianmax
    Expires0 seconds0 seconds1 year
    Last modified34 minutes3 years3 years

    Requests loaded after onLoad event

    Included requests done after load event end.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript0 b0
    image0 b0
    font0 b0
    Total575 B1

    Requests loaded after onContentLoad

    Includes requests done after DOM content loaded.

    ContentTransfer SizeRequests
    html0 b0
    css0 b0
    javascript0 b0
    image0 b0
    font43.4 KB3
    Total44.0 KB4
    | Categories | | Tools | | First vs third | 

    Third party

    Third party requests categorised by Third party web version 0.26.2.

    CategoryRequests
    cdn 4
    survelliance 4
    CategoryNumber of tools
    cdn 1
    survelliance 1

    Third party requests and tools

    cdn (4 requests)
    Google Fonts
    survelliance (4 requests)
    Google Fonts

    First party requests and sizes per content type

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

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b4.3 KB12.3 KB1
    css0 b243.0 KB1.4 MB2
    javascript0 b99.8 KB214.0 KB3
    image0 b20.7 KB22.4 KB2
    font0 b165.3 KB164.3 KB3
    TotalN/A533.7 KB1.8 MB12

    Third party requests and sizes per content type

    ContentHeader SizeTransfer SizeContent SizeRequests
    html0 b0 b0 b0
    css0 b1.3 KB10.2 KB1
    javascript0 b0 b0 b0
    image0 b0 b0 b0
    font0 b43.4 KB43.3 KB3
    TotalN/A44.7 KB53.6 KB4
    afterPageCompleteCheck.png | layoutShift.png | largestContentfulPaint.png | 

    Screenshots

    afterPageCompleteCheck.png

    afterPageCompleteCheck.png

    layoutShift.png

    layoutShift.png

    largestContentfulPaint.png

    largestContentfulPaint.png