0%

Why is my website slow?

A slow website can be a 4 MB image. It can also be 10 other things. The first question isn't what the site is built in – it's where the time actually goes.

A slow website can be a 4 MB image.

It can also be the server taking two seconds to respond. A script from an analytics tool. A plugin doing far too much work. A database query that should take 20 milliseconds but takes a second and a half.

Or a bit of everything.

So when someone tells me their website is slow, my first question usually isn't what it's built in.

I measure it.

Otherwise you risk spending half a day optimising images on a website where the actual problem is somewhere else entirely.

What does "slow" actually mean?

That's the first thing to work out.

Is it the first page that takes a long time to appear? Does the page show up quickly but feel sluggish when you click something? Does the content jump around while it loads? Is it only the product pages? Only on mobile? Only for users who aren't logged in?

Or does the whole site just feel heavy?

Those symptoms can have very different causes.

A slow server can mean the browser is sitting there waiting before it has anything to show at all. A large image can mean the page starts quickly but takes a long time to get the important content in place. Too much JavaScript can mean everything looks downloaded while the browser is still busy working through it.

That's why "slow" isn't precise enough to start optimising against.

I start with the measurement

Lighthouse and PageSpeed Insights are often reasonable places to start.

But I use them as diagnostic tools, not as a verdict.

Among other things, I want to know how long the server takes to respond. Which files the browser fetches. How large they are. When the important content actually becomes visible. What's blocking the browser along the way. And what's happening for real users out there.

If the site has enough traffic, I prefer field data.

A lab test tells you what happened during one controlled run. Field data tells you what's actually happening on phones, computers and networks, out with real users.

The two don't always agree.

Images are still a classic

I still come across websites where an image is displayed at 600 pixels wide, but the browser is sent an original that's 4,000 pixels across.

That's rarely necessary.

Images need sensible dimensions, proper compression, and a format the browser can handle efficiently. And images further down the page usually don't need to be fetched before the user is close to them.

But image optimisation is also a good example of why you measure first.

If the images are already reasonably optimised, spending three hours squeezing another 30 KB out of them won't get you much.

There's no gain in thoroughly optimising the wrong problem.

JavaScript has a cost

The modern web can do an incredible amount.

Which also means we're sending an incredible amount of code down to the browser.

Analytics. Cookie consent. Chat. Tracking. Video. Ads. A/B tests. Form tools. Social media. Marketing automation.

Every single integration can be entirely legitimate on its own.

But the browser doesn't care about the org chart. It still has to fetch and run all of it.

So I'd often rather find out why a script is on the page than shave a few kilobytes off a CSS file. If nobody still knows why a third-party script is loading on every single page, that's worth looking into.

The fastest script is, after all, the one the browser never has to fetch.

Sometimes the problem is on the server

You can optimise the frontend as much as you like, but if the server takes a long time to assemble the page, you're already behind before anything is sent.

On a WordPress site, the cause might be plugins, heavy database queries, external API calls, or missing caching. On a custom-built solution, the problem might be a query pulling in far more data than necessary, or code doing the same work over and over. And sometimes the server is simply undersized or poorly configured.

Converting yet another image to WebP won't help much here.

You have to find the bottleneck.

Caching can make a huge difference

If a page is essentially the same for every visitor, there's rarely a good reason to rebuild it from scratch on every single visit.

That's the basic idea behind caching.

But caching exists in several layers. The browser can store files. A CDN can serve them closer to the user. The web server can cache whole pages or parts of them. The application can store results that would otherwise need recalculating. The database can avoid being asked the same question over and over.

That can make a very large difference.

But caching can also end up as a patch on a solution that's fundamentally doing too much work. If a database query takes three seconds, I want to know why – even if we cache the result afterwards.

Plugins aren't slow. Some plugins are.

On WordPress, the discussion quickly ends up at the number of plugins.

"We've got 37 plugins," the client will usually say. "Is that why the site is slow?"

Maybe.

But 37 doesn't tell me much on its own.

A small plugin might do one simple thing and barely register. Another might load scripts and styles on every page, make external calls, and run a handful of database queries on every visit.

So I want to know what those 37 plugins actually do before I start deleting them. The same goes for themes, frameworks and third-party solutions.

Mobile is often where reality shows up

A website can feel fast on the developer's MacBook with a fibre connection and still be slow for a large share of its users.

A phone doesn't necessarily have the same processing power. The connection isn't necessarily stable. And the browser might have plenty of other things going on at the same time.

"It loads fast for me," I hear now and then. That's not a particularly useful performance measurement.

It's also one of the reasons I prefer field data when there's enough of it. I'd rather know what users are actually experiencing than how fast the site is on my own computer.

Does everything need to be green?

No.

I like green numbers.

But I wouldn't spend hours moving a Lighthouse score from 98 to 100 if users already have a fast experience and that time could go somewhere more useful.

The same goes for Core Web Vitals. They're useful because they measure different parts of the user experience. But a website still has to work outside the measuring tool.

Lighthouse is a diagnosis, not a grade.

So what do you actually do about a slow website?

I wouldn't start by installing yet another performance plugin.

I'd start by finding out where the time is going.

If the server's response time is the problem, I look at the server, the application, the database and the caching. If it's the images, I work on size, format and delivery. If the browser is buried in JavaScript, I find out what's running, when it's running, and whether it needs to be there at all. If it's third-party scripts, sometimes you need to have the conversation about whether their value matches their cost. And if the problem only shows up on certain page types, that's where I start.

Measure first. Then optimise.

Performance work is obviously about technique. But a large part of it is about prioritisation. There will almost always be more you could optimise. The question is what actually makes a noticeable difference.

That's why I start with the measurement and work my way to the cause before I change anything. Otherwise you risk doing whatever's easiest to optimise, instead of whatever's actually making the website slow.

The fastest website isn't necessarily the one with the highest score. It's the one that feels fast to the people who actually have to use it.

Performance & SEOI work with performance from measurement and diagnosis to images, caching, database queries, JavaScript and technical SEO. The goal isn't 100 in Lighthouse. The goal is a fast website that works well for real users.

Tags_

Read next_

2026-06_ Which CMS should you choose? WordPress, Umbraco, Drupal, Shopify, Webflow, or something else entirely? My slightly annoying answer is usually: What is it for? 2026-05_ A visual identity has to work without the designer A visual identity is easy to make look good on a screen. It gets harder when it has to go out into the real world – into a PowerPoint, onto an invoice, onto a sign someone edits themselves three years later. 2026-05_ Is my job as a graphic designer under threat? AI-generated graphics have moved out of the computer and into the real world. The question is no longer whether AI can make graphics. It can. The question is what is then left of the graphic designer's work. 2026-04_ When should you switch CMS? Most people ask the wrong question first. The interesting one is not which CMS is best – it is whether the CMS is even the problem. 2026-04_ WordPress — the short version The thing that makes WordPress easy to extend is also the reason behind most of the problems you meet in older installations. 2026-03_ WordPress vs. headless — the difference in practice Headless gives you freedom by taking things apart. But whatever you take apart has to be put back together again. 2026-02_ Sometimes I design in VS Code Not because I have given up on Figma. But because sometimes it is faster to see whether an idea holds up in the browser than on a canvas. 2026-01_ The most expensive code is the code you never had to write Not all expensive code is bad code. Some of the most expensive decisions I have been part of were well-written solutions to problems nobody had yet. 2025-12_ From coder to reviewer – how AI changed the workflow In the short term, AI does not change what I know – it changes my workflow. 2025-11_ The art of inheriting a WordPress installation 8 years, 34 plugins and a theme nobody dares touch. The job does not start by fixing anything – it starts by working out what is in use. 2025-08_ Ctrl, Cmd and C# A language is learnable. It is the domain and the codebase that take time – and two machines that cost more attention than the syntax. 2025-02_ After a bankruptcy Valued at 35 million at its height, bankrupt in December 2023, a new company seven months later. This is what sat in between – and what I took with me. 2024-11_ The report that had to sit in reception When we built ESGRapporter, the competition had heavier calculation engines than we did. We bet somewhere else: on what the user was left holding being worth showing to someone.

Curriculum Vitae ↓

Profile Image

Paul Nybo Andersen

Profile_

48 years old, CTO, graphic designer, and full-stack developer (LAMP/LEMP) with 26 years of experience in developing digital solutions for a broad target group of companies.

Scroll to read more →

01_Services_

How I can help

Go to Experience ↓

PHP • Laravel • MySQL • JavaScript

Web development

From database and backend to frontend, integrations and hosting.

UX • Figma • Prototypes • Testing

Web design & UX

Interface design that has to work for the user and the business alike.

Visual identity • Design systems • Print

Visual identity

Visual identity for companies that need to look like something you can rely on.

WordPress • Umbraco • Magento

CMS solutions

Content systems built for the people working in them every day.

Core Web Vitals • SEO • Caching

Performance & SEO

Websites that load quickly – including on a phone on a poor connection.

Architecture • Technology choice • Sparring

Technical consulting

For when a technical decision has to be made and you have nobody to test it against.

02_Case: Lifeguard Health ApS_

8 years with Lifeguard

CTO & Co-Founder

From 2015 to 2023, I was CTO and co-founder of Lifeguard Health ApS. Here, I worked on the development of a digital health platform that combined technology, data and personal coaching. The role included everything from product development, UX and software architecture to management of development teams, operations and business development. The eight years at Lifeguard shaped my approach to both technology, products and people and today form the foundation for much of what I work with.

Watch Lifeguard's Core-story

Lifeguard presentation_1_4_

Slides #1 showing my last job
Slides #2 showing my last job
Slides #3 showing my last job

03_Employment_history_

My experiences

In my role as CTO at Lifeguard, I drew on the experience I have built up over the past 26 years.

In this section, I have tried to describe the experiences I have acquired through the tasks I have solved and the professional skills I have used.

Experiences_

Image from my time at ESGRapporter

2024-2026, CTO & Co-founder

ESGRapporter

Now: ESGRapporter ApS.

We built the ESG reporting platform in Laravel, and I carried the technical responsibility for the direction, the reporting side and everyth ..

Image from my time at Revolvo

2024-2026, Senior Developer • UI/UX • Design

Revolvo

Now: Revolvo Aps. + BmyGuest ApS.

I handled development, UI/UX and graphic identity. 60% of my time went to BmyGuest and IDoMeetings, which Revolvo co-owned.

Image from my time at Lifeguard

2015-2023, CTO & Co-founder

Lifeguard

Now: Lifeguard Health ApS.

I built the LifeScore platform in Laravel with consent-based access to health data and an app for the wristband, and handled all UX and desi ..

Image from my time at VitalityGuard

2016-2018, CTO & Co-founder

VitalityGuard

Now: FIDIMI

We ran the Lifeguard platform white-labelled through a joint venture with Dansk Sundhedssikring. Maersk was the biggest client.

Image from my time at ContentCPH

2010-2015, Senior Digital Wizard

ContentCPH

Now: Charlie Tango

I built 60+ Facebook apps in PHP for Samsung, IKEA and H&M. The Nik & Jay campaign for Samsung won Danish Internet Awards 2014.

Image from my time at BOCCA WIRED

2009-2010, Freelance developer

BOCCA WIRED

Now: BOCCA

I built campaign sites for Movia and the Danish Heart Foundation, among them Overraskende hurtig, which took bronze at the Creative Circle A ..

Image from my time at EuroRSCG

2008-2010, Inhouse Freelance developer

EuroRSCG

Now: Havas Danmark

I won the agency's digital work back from the competitors and built an iPhone site and interactive product tools for GN/Jabra.

Image from my time at Bandits Inc.

2001-2026, Sole proprietorship

Bandits Inc.

Now: Audiotracking v/Paul Nybo Andersen

My own sole proprietorship since 2001. Through it I have sold web development to agencies that had the graphics but lacked the developer.

04_Skills + Stack_

My qualifications

As shown in the previous section, I have dealt with a wide range of tasks and taken on many different job roles, ranging from sound engineer to photographer, graphic artist, web developer, and CTO. The common feature in all of them has been my passion for creating meaningful experiences and my drive to create something unique.

In my approach, I have always been open to exploring new solutions to existing challenges, and I have never been afraid to acquire new knowledge. This has resulted in a wide range of skills that I have put together over time.

I have tried to list the most relevant ones here.

Rating

- " This is what I do best".

- " I'm pretty good at it".

- " I can do this just fine".

- " It's not what I'm best at, but I can if necessary".

- " I'm not good at it - but I'm willing to learn".

05_Writing_

Notes from the work

2026-09_

Why is my website slow?

A slow website can be a 4 MB image. It can also be 10 other things. The first question isn't what the site is built in – it's where the time actually goes.

2026-06_

Which CMS should you choose?

WordPress, Umbraco, Drupal, Shopify, Webflow, or something else entirely? My slightly annoying answer is usually: What is it for?

2026-05_

A visual identity has to work without the designer

A visual identity is easy to make look good on a screen. It gets harder when it has to go out into the real world – into a PowerPoint, onto an invoice, onto a sign someone edits themselves three years later.

2026-05_

Is my job as a graphic designer under threat?

AI-generated graphics have moved out of the computer and into the real world. The question is no longer whether AI can make graphics. It can. The question is what is then left of the graphic designer's work.

2026-04_

When should you switch CMS?

Most people ask the wrong question first. The interesting one is not which CMS is best – it is whether the CMS is even the problem.

2026-04_

WordPress — the short version

The thing that makes WordPress easy to extend is also the reason behind most of the problems you meet in older installations.

2026-03_

WordPress vs. headless — the difference in practice

Headless gives you freedom by taking things apart. But whatever you take apart has to be put back together again.

2026-02_

Sometimes I design in VS Code

Not because I have given up on Figma. But because sometimes it is faster to see whether an idea holds up in the browser than on a canvas.

2026-01_

The most expensive code is the code you never had to write

Not all expensive code is bad code. Some of the most expensive decisions I have been part of were well-written solutions to problems nobody had yet.

2025-12_

From coder to reviewer – how AI changed the workflow

In the short term, AI does not change what I know – it changes my workflow.

2025-11_

The art of inheriting a WordPress installation

8 years, 34 plugins and a theme nobody dares touch. The job does not start by fixing anything – it starts by working out what is in use.

2025-08_

Ctrl, Cmd and C#

A language is learnable. It is the domain and the codebase that take time – and two machines that cost more attention than the syntax.

2025-02_

After a bankruptcy

Valued at 35 million at its height, bankrupt in December 2023, a new company seven months later. This is what sat in between – and what I took with me.

2024-11_

The report that had to sit in reception

When we built ESGRapporter, the competition had heavier calculation engines than we did. We bet somewhere else: on what the user was left holding being worth showing to someone.

06_When I'm not working_

A bit about me

I was born and raised in Copenhagen. But after a few years living with small children in an apartment in Østerbro, my girlfriend and I chose to move to a house in the suburb. We've lived in Hellerup for 11 years now, in a less pulsating neighborhood but no further away from Copenhagen than you can hop on the bike and then you're back.

I often do the latter; it's all about inspiration and new impressions. For the same reason, I still try to combine these trips with my passion for shooting photos. But since work has always been my hobby, it has been a challenge to find a balance between leisure and work projects.

When I'm not working, I spend a lot of time playing and listening to music. Unfortunately, over time, it has mostly become listening, which has been a very expensive but also rewarding passion.

The common feature of all my passions is the desire to create something. I hope this can benefit you.

TT38 profil

+25 years of experience with digital products ↓

Available for consulting, development, digital products and technical leadership.