https://kamilobstawski.com/pl/ · Report generated 05/11/2026
Your site is in good shape: it is secure over HTTPS, fast on desktop, and scores 100 for SEO and best practices. The single most important fix is to add descriptive text (alt text) to all 6 images, which helps Google Images, screen-reader users and overall SEO. After that, improve mobile speed and a few accessibility details.
Every image on the page has no alt text. Visitors using screen readers get no description, and Google cannot understand the images, so you lose possible image-search traffic.
How: Open each image in your CMS or template and add a short description of what it shows, for example 'Kamil Obstawski at work' instead of leaving it empty. Decorative images should have an empty alt attribute (alt="") on purpose. Check the other pages too, since the audit counted only the home page.
Mobile performance is 82 against 100 on desktop. The page shows quickly, but it blocks for about 0.74 seconds (Total Blocking Time) and takes about 4 seconds to become fully interactive on a phone. Visitors on slower phones may tap and see nothing happen.
How: Ask your developer to check the 4 scripts on the page and defer or remove any that are not needed right away (add the 'defer' attribute, load them after the page is shown). Also remove unused CSS and minify the CSS file, which Lighthouse estimates will save about 150 ms and 30 KB. Re-run the mobile test afterwards to confirm the gain.
Three pieces of text on the home page are too faint against their background. People with weaker eyesight, or anyone reading on a phone in sunlight, will struggle to read them.
How: Ask your developer to find the three flagged elements (a free tool like the WAVE or axe browser extension highlights them) and darken the text colour or lighten the background. Aim for a contrast ratio of at least 4.5:1 for normal text. A contrast checker such as WebAIM's will confirm the result.
All three pages checked (home, blog, contact) lack a main content landmark, and much of the content sits outside any labelled region. Screen-reader users cannot jump straight to the content, and this is the main reason accessibility is not at 100.
How: In the page template, wrap the central content in a <main> element, and use <header>, <nav> and <footer> for the other parts. Because this is a shared template, one change fixes every page. It takes a developer a few minutes.
This header is missing. It limits which scripts can run on your site, so it is a useful protection if a malicious script ever gets in.
How: Your site is behind Cloudflare, so your developer can add the header in the Cloudflare dashboard (Rules, then Transform Rules, then Modify Response Header) or on the web server. Start with 'Content-Security-Policy-Report-Only' so nothing breaks, check which resources are blocked, then switch to the enforced version.
This header is missing. It lets you switch off browser features such as camera, microphone and location that your site does not use, which reduces what a hacked script could do.
How: Add a response header in Cloudflare (Transform Rules, Modify Response Header) or on your server, for example: Permissions-Policy: camera=(), microphone=(), geolocation=(). It is low risk and quick to do.
The address https://kamilobstawski.com redirects to /pl/ with a temporary (302) redirect. Google may keep treating the root address as the main page instead of passing its strength on to /pl/.
How: If /pl/ is meant to be the permanent home page, change the redirect from 302 to 301 in your server or Cloudflare redirect rule. If you plan to redirect visitors by browser language, a 302 is fine, so confirm with your developer first.
Your certificate has 60 days left. It is valid now, but if renewal fails, visitors would see a scary security warning and leave.
How: Check that automatic renewal is switched on (Cloudflare or your host usually handles this). Set a calendar reminder for about 2 weeks before the expiry date to confirm it renewed.
| Metric | Value | Rating |
|---|---|---|
| Largest Contentful Paint (LCP) | 1.2 s | good |
| Cumulative Layout Shift (CLS) | 0.000 | good |
| Total Blocking Time (TBT) | 0.7 s | poor |
| First Contentful Paint (FCP) | 1.2 s | good |
| Speed Index (SI) | 1.6 s | good |
| Page weight | 0.4 MB | |
| Requests | 18 |
HTTP headers protecting your visitors:
| Check | Result |
|---|---|
strict-transport-security | OK |
content-security-policy | missing |
x-content-type-options | OK |
x-frame-options | OK |
referrer-policy | OK |
permissions-policy | missing |
| TLS certificate | OK · valid for 60 more days · issuer: Let's Encrypt |
| http → https redirect | OK |
| www.kamilobstawski.com redirects to the main address | OK |
| HTML response compression | br |
| Headers leaking technology | server: cloudflare |
| Mixed content (http on https) | OK |
| Check | Result |
|---|---|
| Page title | Kamil Obstawski — full-stack developer, buduję z agentami AI (60 chars) |
| Meta description | 163 chars |
| Canonical URL | https://kamilobstawski.com/pl/ |
| H1 headings | 1 |
| Images without alt text | 6 / 6 |
| Open Graph (social previews) | 10 |
| Structured data (schema.org) | unknown |
| Document language (lang) | pl |
| Viewport (mobile) | OK |
| Favicon | OK |
| robots.txt | OK |
| Sitemap | https://kamilobstawski.com/sitemap.xml → 200 (46 URL) |
Checked 13 links from the home page.
No broken links found.
| Issue | Impact | elements |
|---|---|---|
| Elements must meet minimum color contrast ratio thresholds ↗ | serious | 3 |
| Document should have one main landmark ↗ | moderate | 1 |
| All page content should be contained by landmarks ↗ | moderate | 27 |
| Issue | Impact | elements |
|---|---|---|
| Document should have one main landmark ↗ | moderate | 1 |
| All page content should be contained by landmarks ↗ | moderate | 23 |
| Issue | Impact | elements |
|---|---|---|
| Document should have one main landmark ↗ | moderate | 1 |
| All page content should be contained by landmarks ↗ | moderate | 8 |