Skip to content

Technical SEO

Website debugging – most common errors and how to fix them

Read the articleQuestions and answers

Article cover: Website debugging – most common errors and how to fix them

Debugging a website is not about a one-off “fixing the error”, but about methodically getting to its real root cause. In practice, it means establishing exactly what stops working, under what circumstances the problem occurs, and what needs to be changed so that other parts of the site are not affected. This matters both in the event of a site-wide outage and with seemingly minor issues such as a non-working form, an incorrect display on mobile or missing data in analytics. The most costly mistake is usually treating the symptom without confirming the root cause. Properly carried out debugging shortens downtime, reduces the risk of lost sales and helps avoid chaotic changes made “blindly”. In this article, we show what this looks like in practice and which problems teams most often face today.

What website debugging is and its practical importance

Website debugging is the process of detecting, reproducing, isolating and removing errors affecting a site’s operation, appearance, performance, security or conversion. It is not only about pointing to the line of code where something goes wrong. Usually, you need to compare the symptoms visible to the user with data from the browser, server, CMS, plugins and external integrations.

The scope of such work can be broad, because the source may lie in the front-end, back-end, hosting configuration, database, form, checkout, analytics or technical SEO. In many cases, the failure is not caused by a single error, but by a combination of several factors. In many cases, the problem is not the code itself, but a conflict between cache, the PHP version, a plugin, the CDN and an external script.

The practical value of debugging lies in the fact that it makes it possible to restore functions that have a direct impact on the business. When the basket, login, contact form or conversion tracking stops working, it quickly leads to lost leads, sales or incorrect marketing decisions. That is why an accurate diagnosis starts with setting priorities: what does not work, who is affected, how long the problem has been going on and how large its impact is.

For debugging to be effective, you need specific input information: the URL with the error, reproduction steps, device and browser details, a list of recent changes and access to logs or the admin panel. The more precise the description, the faster you can get to the core of the issue. If the error cannot be reproduced, resolving it usually takes longer than the technical fix itself.

A well-delivered service does not end with saying “it works now”. The result should also include a description of the cause, the scope of the changes made, post-fix tests and a list of elements that are worth monitoring further. This is important, because only then can you see whether the problem has been solved permanently rather than simply swept under the carpet.

Web development What website debugging is and its practical importance
  1. 01Detection and isolationFinding errors and their sources
  2. 02Comparing dataLinking symptoms with logs and systems
  3. 03Identifying conflictsAnalysing front-end, back-end, cache

Debugging is a comprehensive process of improving a site’s performance, not just fixing one line of code, which is crucial for performance and conversion.

Current technical challenges in website debugging

Current technical challenges in website debugging stem primarily from the growing network of dependencies between the site layer, the server, the browser and external services. In the past, many faults could be attributed to a single code error. Today, an identical symptom may be the result of a CMS update, a PHP version change, a JavaScript library conflict, an incorrect cache rule or a browser-side block.

Problems are becoming noticeably more visible after deployments and updates. A new version of a plugin, theme or module may work correctly in isolation, yet still stop cooperating with the rest of the environment. In practice, this means the need to compare recent changes, verify version compatibility and separate an application error from a configuration error.

Mobile issues are also playing an increasingly important role. A site may look correct on desktop, yet have unclickable buttons, a broken menu, a faulty form or overlapping elements on a phone. If the problem is not checked separately on mobile, it is easy to miss faults that genuinely reduce conversion.

Performance further obscures diagnosis, because slow loading often gives the impression of a failure. Heavy scripts, oversized images, render-blocking CSS or JS, poorly configured lazy loading and slow external APIs can lead to a situation in which the user sees a blank section of the page or cannot interact with it. In such cases, it is not enough to check whether the page “loads” — you need to determine exactly what is blocking rendering and event handling.

More and more often, the source of problems is also security and browser policies. Mixed content, CORS, CSP, SameSite cookies, blocked resources and session errors can bring login, forms, payments or the loading of analytics scripts to a standstill. In modern debugging, you analyse not only the application, but also headers, security policies and browser behaviour.

A separate category consists of sites built on JavaScript frameworks, where issues involving routing, hydration, client-side rendering and API communication come into play. Such a site may look correct for some users, yet behave incorrectly after moving between subpages, after refreshing or in search engine tools. This requires checking not only the visual layer, but also whether the content and events are correctly accessible to the user, the browser and bots.

Practical step-by-step debugging process

The debugging process step by step boils down to reproducing the error, narrowing down its source, implementing a fix and checking whether any other elements were affected in the process. To start with, it is worth establishing exactly what is not working, on which subpage, on which device and since when the problem has been occurring. The business priority is just as important, because you approach an error in the checkout differently from a fault in a less critical part of the site. Good diagnosis starts with a precise description of the symptom, not with guessing the cause.

The second step is to reproduce the problem in controlled conditions. You need to note down the specific steps, input data, the browser being used, the user status and the circumstances that trigger the error, for example only after login or only on mobile. If the error appears randomly, it is worth checking the impact of cache, server load, external scripts and unstable integrations.

When the problem can be reproduced, it is time for a quick classification. In practice, this means deciding whether to look for the source on the front-end, back-end, database, server, CDN, DNS, SSL, plugin, form, payments or analytics side. This really speeds up the work, because you use different tools for a JavaScript error in the browser and different ones for a timeout in the application or a 500 error.

When analysing the front-end, you check the browser console, the Network tab, HTTP statuses, blocked resources, the loading order of scripts and the page behaviour at different screen widths. When analysing the back-end and server, the application logs, 4xx and 5xx errors, memory limits, response time, database queries and the latest cron jobs or background processes are key. Very often the problem does not result from one error in the code, but from a combination of several factors, such as a plugin update, a PHP version change and old cache.

The next stage is to compare the problem with the latest changes. It is worth reviewing deployments, CMS and plugin updates, a theme change, hosting migration, redirect rules, SSL certificate and CDN settings. If something has stopped working “suddenly”, the list of recent modifications usually leads to the root cause the fastest.

Once the source has been narrowed down, it should be isolated. In practice, this is done by disabling the conflicting plugin, testing on a copy of the site, rolling back a selected deployment or running a minimal reproduction scenario, without any unnecessary extras. The safest approach is to implement fixes on staging or a test copy, not directly on production.

The fix itself may concern code, server configuration, the cookies policy, headers, routing, event mapping, database queries or static resource sources. After deployment, validation is necessary, meaning a functional test and a regression test on critical paths such as logging in, forms, basket and payment. The repair is only complete once the problem disappears after clearing the cache and does not break other functions.

Finally, it is worth leaving behind solid documentation. It should include a description of the symptom, the confirmed cause, the scope of the change introduced, a risk assessment, elements requiring monitoring and preventive recommendations. This way, the next similar incident can be resolved faster, without going back to the same mistakes.

Debugging process Practical debugging process step by step
  1. 01Error diagnosisDescribe the symptoms precisely
  2. 02Reproducing the problemNote the steps and conditions
  3. 03Narrowing down the sourceLocate the cause of the error
  4. 04Implementing a fixFix and test

Good diagnosis and controlled conditions are the key to effective debugging.

The most common errors occurring on websites and their diagnosis

The most common errors on websites include 500 failures, JavaScript problems, non-functioning forms, login errors, redirect loops, slowdowns, mobile errors and incorrect analytics tracking. For the user, each of these problems looks different, but the diagnosis almost always comes down to one scheme: confirm the symptom, reproduce it and check where the flow breaks. In practice, the biggest time saver is separating the problems “visible on the screen” from those resulting from the application logic, server or configuration.

  • White screen or a 500 error usually means you need to check the PHP or application logs, verify the memory limit and review the latest changes. The source is often a fatal error, an incompatible plugin, an issue after an update, or an exception triggered by a specific module.
  • The page loads, but elements do not work is usually a JavaScript issue. It is worth checking the console, library dependencies, script loading order, missing files and any CSP blocks.
  • The form does not submit data requires testing validation on both sides, the endpoint, CAPTCHA, SMTP, antispam and hosting limits. Users often see only “nothing happens”, while the real error only appears in Network or in the server logs.
  • Login or session errors are usually related to cookies, SameSite, HTTPS, redirects between domains, cache for logged-in users, or incorrect proxy configuration. In this case, you need to make sure that the browser and server use a consistent session policy.
  • 404s, 301 loops or mixed content usually result from server rules, URL mapping, incorrect absolute links, SSL or CDN and CMS settings. Such a problem affects usability, indexing and the site’s credibility at the same time.
  • The site runs slowly or freezes at random requires checking TTFB, CPU load, database queries, object cache, external APIs and heavy resources. Image compression alone will not solve the problem if the bottleneck remains the server or an external integration.
  • Incorrect display on mobile should be diagnosed through breakpoints, the viewport, CSS units, overlays, sticky elements and touch interactions. Often the problem is not “responsiveness in general”, but a single element blocking a click or breaking the layout within a specific width range.
  • Analytics or pixels are not collecting data usually require checking the tag firing order, consent mode settings, dataLayer accuracy, events in SPAs and the impact of script blockers. It is easy here to make an apparent “fix” when you only verify the presence of the code, instead of whether the data being sent is complete and correct.

A separate category is issues after updating the CMS, theme or plugins. When something stopped working after a version change, it is better to compare PHP compatibility, review the changelog and compare behaviour on staging, rather than immediately rolling out a series of random fixes. After updates, the most common approach is methodical conflict isolation, not manual setting-by-setting “clicking through” without a plan.

Many faults are taken for a crash, although in practice they are about performance or browser security policies. Mixed content, CORS, CSP, blocked resources, incorrectly set cookies or external scripts can produce symptoms strikingly similar to a broken website. That is why observing the interface alone is not enough and it is worth combining data from the browser, the server and the latest changes.

Before starting work, it is good to have a backup, access to logs, admin accounts, a list of recent deployments and the ability to clear the cache. Without these elements, the fix takes longer and the risk of an incorrect diagnosis increases. The most common organisational mistake is treating the symptom without confirming the root cause and without a regression test after deployment.

Strategies for fixing front-end and back-end errors

Strategies for fixing front-end and back-end errors come down to matching the fix to the place where the problem is actually created: in the browser, the application, the server or an integration. If the cause lies on the front-end side, corrective actions most often concern JavaScript, CSS, HTML, the order in which resources load or communication with the API. When the problem is on the back-end side, you need to verify the application logic, data validation, the database, sessions, permissions and the environment configuration. The worst practice is fixing the visible symptom without making sure where the process is actually falling apart.

In the case of front-end errors, at the beginning it is worth establishing whether the site is failing because of a script, layout, resource block or an incorrect response from the server. The browser console reveals JavaScript errors, and the Network tab lets you check response statuses, load times and blocked files. In practice, it is often not about a “broken site”, but a single missing file, a library conflict or a script running before the DOM is ready. The same applies on mobile, where overlays, sticky elements, non-clickable buttons and faults occurring only in Safari or Chrome Mobile come into play.

Front-end fixes should be as small and precise as possible. If a form does not work, you do not start by rewriting the entire module, but by checking validation, the endpoint, the error message and whether the request leaves the browser at all. When the appearance “breaks”, it is worth tracing the CSS rule or breakpoint overriding the correct style instead of adding more workarounds. A good fix removes the conflict at source instead of masking it with an additional layer of code.

In back-end errors, application and server logs are crucial, because that is where you can see fatal errors, exceptions, time-outs, database connection errors and memory issues. A white screen, a 500 error or apparently random freezing of the site usually points to a problem with a module, a query, the environment version or an external integration. In shops and services with logins, you also need to review sessions, cookies, redirects, cache for logged-in users and browser security policies. Often only combining these elements shows the full failure mechanism.

In practice, fixing the back-end often comes down to choosing between a quick rollback and a fix in the current version. If the error appeared after a CMS update, a plugin update or a PHP change, a rollback is often the fastest way to restore functionality, but it does not in itself close the issue. When the source of the error is clear and the impact is limited, a targeted fix on staging may be a better solution, and only then deployment to production. The decision depends on business risk: you act differently for an error in checkout than for a less important function.

A separate category is problems resulting from cache, CDN, DNS, SSL and security headers. A site may look fixed on one device, while for some users it still remains broken because of an old version of files in the cache or incorrect redirect rules. That is why after deployment you need to check asset versioning, clear the relevant cache layers and verify server responses over HTTPS. Without this, it is easy to assume a fix is effective only because the tester sees a different version of the site than the user.

The safest strategy is to first reproduce the error, then isolate the cause on a copy of the site, deploy a minimal fix and only then test the whole journey. This order reduces the risk that fixing one issue will break the form, analytics, redirects or mobile rendering. The more integrations and plugins there are, the greater the importance of change control and documenting exactly what has been fixed.

The importance of regression tests and monitoring after deploying fixes

Regression tests and monitoring after deploying fixes are meant to confirm not only that the fault has been removed, but also that the change has not caused new problems in other areas of the site. “It works on my machine” is not enough, because many errors only appear after clearing the cache, on a different device, after logging in or after going through several stages of the process. After each modification, it is worth returning to the business-critical journeys and going through them from start to finish. In practice, this most often means login, forms, checkout, search, payment integrations and event tracking.

Traffic sources report in Matomo: a table of channels with the number of visits, actions and bounce rate for each source
Example The channel overview shows not only where traffic comes from, but also how it behaves — compare bounces and the number of actions between sources. Public Matomo demo (sample data), own screenshot

A regression test should cover exactly those elements that the change could have affected. If the fix concerns JavaScript, you need to verify not only the faulty component, but also the other modules using the same library or dependency. If server or cache rules have changed, you need to check redirects, sessions, static assets and the behaviour of the site for logged-in and logged-out users. Most post-deployment problems arise from the assumption that a fix is local, when in practice it affects several related functions.

Good post-deployment tests are not limited to the visual layer. It is worth checking HTTP response codes, messages in the logs, form submission accuracy, data saving in the system, the operation of analytics events and the site’s behaviour on mobile devices. In services based on JS frameworks, you also need to verify routing, hydration, API errors and whether the content is correctly visible to users and robots. This matters because some faults are not obvious on screen, yet still damage technical SEO, remarketing or conversion reporting.

Post-deployment monitoring helps catch problems that do not show up in a short manual test. It is worth observing 4xx and 5xx logs, server response time, JavaScript errors, form submission success, the number of successful transactions and sudden drops in analytics. If the fix concerns login or sessions, you also need to track the number of failed attempts, redirects and cookie behaviour. Lack of monitoring means the bug goes unnoticed or only appears in sales and lead results.

In practice, it is worth setting a short period of heightened observation after deployment, especially for changes in checkout, forms and external integrations. During this time, it is good to compare pre- and post-deployment data and check whether any new alerts or user reports have appeared. This stage does not have to be elaborate, but it should be planned. Without it, it is easy to close the issue too early and miss side effects that only emerge under real traffic.

Typical pitfalls and organisational errors in the debugging process

Typical pitfalls and organisational missteps in the debugging process include: failing to confirm the root cause, nervous actions on production and working without complete incident data. In practice, it is often the way the work is organised that determines whether a fault is removed quickly or keeps coming back despite successive fixes. The most costly mistake is fixing the symptom instead of the mechanism that causes that symptom. If the team cannot reproduce the problem and identify the conditions under which it occurs, every subsequent change becomes a shot in the dark.

A very common problem is a report such as “the site does not work” without a URL, reproduction steps, information about the device, browser and the time the error appeared. Such a message is usually not enough, because many faults only appear after a specific action, on a particular account, after logging in or only on mobile. Good diagnosis starts with a minimal reproduction scenario: what to click, where, on which device and with what result.

Another pitfall is introducing many changes at once. When someone updates a plugin, clears the cache, modifies CDN rules and changes the code at the same time, after a while it is hard to tell what actually helped and what incidentally broke other elements. In debugging, every change should be controlled, reversible and documented. This is especially important for commercial sites, where an apparently minor adjustment can break the form, checkout or analytics.

  • Failing to make a backup before working on the fault.
  • Testing only on production instead of on staging or a copy of the site.
  • Missing access to server logs, the browser console and a list of recent changes.
  • Making fixes by several people at the same time without one person responsible for decisions.
  • Assuming the problem has been solved without checking critical paths after deployment.

Communication between the business, marketing and the technical team often breaks down too. For the website owner, the problem may be a “drop in leads”, while technically the cause may turn out to be a non-working event, a form error on Safari or cache showing an older version of the website. The business symptom needs to be translated into a measurable technical problem, otherwise the team will look in the wrong place.

A separate challenge is the lack of a clearly defined completion criterion for the work. Simply saying “it works on my machine” is not very valuable if specific browsers, devices, response statuses, log accuracy and behaviour after clearing the cache have not been verified. The fix should have acceptance criteria: exactly what is meant to work, under what conditions and how this was confirmed.

In practice, well-structured debugging is based on a simple workflow. First, it is worth gathering information, then reproducing the error, narrowing down the source of the problem, introducing one tightly controlled change and finally making sure that no other functions have “broken” along the way. This path is less spectacular than rapid “firefighting”, but it delivers predictable results and reduces the risk that the issue will return after the next update.

FAQ

Frequently asked questions

What does website debugging look like step by step?

First, you need to reproduce the error and determine where and when it occurs. Then you narrow down the source, make the fix and check whether any other parts of the site were affected.

Does an error on a website always mean a code problem?

No, the source may also be hosting configuration, cache, the PHP version, a plugin, CDN or an external script. The article emphasises that one symptom is often the result of several overlapping factors.

Why does a site work on desktop but break on a phone?

On mobile, different issues may appear than on a computer, for example unclickable buttons, a broken menu or overlapping elements. That is why you need to check screen widths and touch interactions separately.

What should you do when a contact form does not send data?

You should check validation on both sides, the endpoint, CAPTCHA, SMTP, anti-spam and hosting limits. The fact that the user sees no response does not yet say exactly where the error occurred.

How do you tell whether the problem comes from JavaScript or the server?

If the page loads but elements do not work, JavaScript, the wrong script order or a blocked resource is often to blame. With 500 errors, timeouts or log issues, it is more often the back end or the server.

When is it worth checking recent updates and deployments?

Always when something stops working suddenly or after a change in the CMS, theme, plugin or PHP version. A list of recent modifications often leads to the root cause the fastest.

Contents