https://kamilobstawski.com/pl/ · Raport wygenerowany 5.11.2026
Strona jest w bardzo dobrej kondycji technicznej: szybka, bezpieczna (HTTPS, nowoczesny TLS, kompresja) i dobrze ustawiona pod kątem SEO. Najważniejsza rzecz do poprawy to brak opisów alternatywnych (alt) przy wszystkich 6 obrazkach, co szkodzi dostępności i widoczności w Google Grafika. Poza tym warto uporządkować kilka drobiazgów w dostępności, nagłówkach bezpieczeństwa i wydajności na telefonach.
Wszystkie 6 obrazków na stronie głównej nie ma atrybutu alt. Osoby korzystające z czytników ekranu nie wiedzą, co przedstawiają, a Google nie może ich poprawnie zindeksować.
Jak to zrobić: Dla każdego obrazka dodaj krótki, rzeczowy opis w atrybucie alt, np. alt="Kamil Obstawski przy pracy nad projektem". Jeśli obrazek jest czysto dekoracyjny, ustaw pusty alt="". Poproś developera o przejrzenie szablonów strony, bo to zwykle kwestia kilku linijek.
Test dostępności wykrył 3 miejsca na stronie głównej, gdzie tekst jest zbyt słabo widoczny na tle. Utrudnia to czytanie osobom słabowidzącym, a także każdemu na telefonie w słońcu.
Jak to zrobić: Poproś developera o sprawdzenie 3 elementów wskazanych w raporcie (reguła color-contrast) i przyciemnienie koloru tekstu lub rozjaśnienie tła. Wymagany stosunek kontrastu to co najmniej 4,5:1 dla zwykłego tekstu. Możesz to sprawdzić w darmowym narzędziu WebAIM Contrast Checker.
Na telefonie wynik wydajności to 84/100, a czas blokowania strony (TBT) wynosi 629 ms. Strona może przez chwilę wolniej reagować na dotyk, co zniechęca odwiedzających z urządzeń mobilnych.
Jak to zrobić: Poproś developera o przejrzenie 4 skryptów ładowanych na stronie: te niekrytyczne oznaczyć atrybutem defer lub async albo ładować po wczytaniu strony. Dodatkowo warto zminifikować CSS i usunąć nieużywane reguły CSS, co według raportu oszczędzi ok. 20 KB i około 150 ms.
Na stronie głównej, w blogu i w kontakcie brakuje głównego obszaru treści (znacznika main), a część treści leży poza wyznaczonymi sekcjami. Czytniki ekranu mają przez to trudniej z nawigacją po stronie.
Jak to zrobić: Poproś developera, aby w szablonie głównym owinął główną treść w znacznik <main>, a nagłówek i stopkę w <header> i <footer>. Jedna zmiana w szablonie naprawi wszystkie podstrony naraz.
Strona nie ma polityki CSP, która ogranicza, skąd mogą się ładować skrypty. Zmniejsza to ochronę przed wstrzyknięciem złośliwego kodu.
Jak to zrobić: Strona jest za Cloudflare, więc nagłówek można dodać w panelu (Rules > Transform Rules > Modify Response Header) lub w konfiguracji serwera. Zacznij od trybu Content-Security-Policy-Report-Only, żeby nic nie zepsuć, a po sprawdzeniu przełącz na tryb wymuszający. Najlepiej zrobić to z developerem.
Brak tego nagłówka oznacza, że przeglądarka nie dostaje jasnej informacji, z których funkcji (kamera, mikrofon, lokalizacja) strona nie korzysta. To drobna luka w zabezpieczeniach.
Jak to zrobić: Dodaj nagłówek np. Permissions-Policy: camera=(), microphone=(), geolocation=() w ustawieniach Cloudflare (Transform Rules) lub serwera. Zajmuje to kilka minut i nie wpływa na wygląd strony.
Wykryte dane strukturalne mają nieokreślony typ („unknown”), więc Google może ich nie wykorzystać do wyróżnienia strony w wynikach wyszukiwania.
Jak to zrobić: Poproś developera o sprawdzenie strony w narzędziu Google Rich Results Test i dopasowanie typu, np. Person lub WebSite dla strony głównej oraz Article dla wpisów na blogu. Poprawne dane pomagają Google lepiej zrozumieć, kim jesteś.
Certyfikat HTTPS wygasa za 60 dni. Zwykle odnawia się sam, ale jeśli automatyczne odnowienie zawiedzie, odwiedzający zobaczą ostrzeżenie o niebezpiecznej stronie.
Jak to zrobić: Upewnij się, że odnawianie jest automatyczne (przy Cloudflare zwykle jest domyślnie). Ustaw sobie przypomnienie w kalendarzu na ok. 14 dni przed wygaśnięciem, żeby sprawdzić, czy certyfikat się odnowił.
| Metryka | Wartość | Ocena |
|---|---|---|
| Largest Contentful Paint (LCP) | 1.3 s | dobrze |
| Cumulative Layout Shift (CLS) | 0.000 | dobrze |
| Total Blocking Time (TBT) | 0.6 s | słabo |
| First Contentful Paint (FCP) | 1.3 s | dobrze |
| Speed Index (SI) | 1.6 s | dobrze |
| Rozmiar strony | 0.4 MB | |
| Liczba żądań | 18 |
Nagłówki HTTP chroniące użytkowników strony:
| Sprawdzenie | Wynik |
|---|---|
strict-transport-security | OK |
content-security-policy | brak |
x-content-type-options | OK |
x-frame-options | OK |
referrer-policy | OK |
permissions-policy | brak |
| Certyfikat TLS | OK · ważny jeszcze 60 dni · wystawca: Let's Encrypt |
| Przekierowanie http → https | OK |
| Wariant www.kamilobstawski.com przekierowuje na adres główny | OK |
| Kompresja odpowiedzi HTML | br |
| Nagłówki zdradzające technologię | server: cloudflare |
| Mixed content (http w https) | OK |
| Sprawdzenie | Wynik |
|---|---|
| Tytuł strony (title) | Kamil Obstawski — full-stack developer, buduję z agentami AI (60 znaków) |
| Opis (meta description) | 163 znaków |
| Adres kanoniczny | https://kamilobstawski.com/pl/ |
| Nagłówki H1 | 1 |
| Obrazy bez tekstu alternatywnego | 6 / 6 |
| Open Graph (podgląd w social media) | 10 |
| Dane strukturalne (schema.org) | unknown |
| Język dokumentu (lang) | pl |
| Viewport (mobile) | OK |
| Favicon | OK |
| robots.txt | OK |
| Mapa strony (sitemap) | https://kamilobstawski.com/sitemap.xml → 200 (46 URL) |
Sprawdzono 13 linków ze strony głównej.
Nie znaleziono uszkodzonych linków.
| Problem | Wpływ | elementów |
|---|---|---|
| Za niski kontrast tekstu względem tła (wymagane 4,5:1) ↗ | poważny | 3 |
| Brak głównego obszaru treści (<main>) ↗ | umiarkowany | 1 |
| Treść poza obszarami nawigacyjnymi (header/main/footer) ↗ | umiarkowany | 27 |
| Problem | Wpływ | elementów |
|---|---|---|
| Brak głównego obszaru treści (<main>) ↗ | umiarkowany | 1 |
| Treść poza obszarami nawigacyjnymi (header/main/footer) ↗ | umiarkowany | 23 |
| Problem | Wpływ | elementów |
|---|---|---|
| Brak głównego obszaru treści (<main>) ↗ | umiarkowany | 1 |
| Treść poza obszarami nawigacyjnymi (header/main/footer) ↗ | umiarkowany | 8 |