Följs praxis enligt Google Lighthouse
Kollar om webbplatsen följer god praxis för webbutveckling, enligt Google Lighthouse kriterier.
Betyg: 5 av 5
- Webbplatsen följer god praxis fullt ut!Webbplats: | muhos.fi |
---|---|
Totalbetyg: | 4.03 av 5 |
Kategori: | Finlands kommuner |
Snittbetyg per kategori |
|
Tillgänglighet: | 4.18 av 5 |
Hastighet: | 4.02 av 5 |
Webbstandard: | 4.33 av 5 |
Integritet & säkerhet: | 3.70 av 5 |
Är något konstigt med dessa värden? Kommentera gärna i vår Slack.
Hoppa till senast genomförda tester för Muhos:
Jämför om Muhos är bättre eller sämre än kategorins genomsnittsbetyg.
Kollar om webbplatsen följer god praxis för webbutveckling, enligt Google Lighthouse kriterier.
Betyg: 5 av 5
- Webbplatsen följer god praxis fullt ut!Ett hastighetstest från Google.
Betyg: 3.60 av 5
- Genomsnittlig hastighet.
- Largest Contentful Paint ( 1.00 betyg )
- First Contentful Paint: 2,2 s ( 3.90 betyg )
- Speed Index: 3,6 s ( 4.35 betyg )
- Time to Interactive: 11,6 s ( 1.00 betyg )
- Föranslut till obligatoriska källor ( 1.00 betyg )
- Minifiera CSS ( 1.00 betyg )
- Reducera CSS som inte används ( 1.00 betyg )
- Reducera JavaScript som inte används ( 1.00 betyg )
- Skicka bilder i modernare bildformat ( 1.00 betyg )
- Se till att all text förblir synlig medan webbteckensnitten läses in: ( 2.50 betyg )
- Alla bildelement har inte `width` och `height`: ( 2.50 betyg )
- Skicka statiska tillgångar med en effektiv cachelagringspolicy: 36 resurser hittades ( 2.50 betyg )
- Minifiera JavaScript: Möjlig databesparing 11 Kibit ( 2.50 betyg )
- Använd bilder med rätt storlek: Möjlig databesparing 673 Kibit ( 2.50 betyg )
- Undvik att skicka äldre JavaScript till moderna webbläsare: Möjlig databesparing 10 Kibit ( 2.50 betyg )
- Undvik ett onödigt stort DOM-träd: 2 480 element ( 2.50 betyg )
- Passiva lyssnare används inte för att förbättra scrollningsprestanda: ( 2.50 betyg )
- Högsta potentiella fördröjning till första inmatningen: 90 ms ( 4.85 betyg )
Är webbplatsen bra på sökmotoroptimering/SEO? Alltså att nå ut via sökmotorer, enligt Google Lighthouse kriterier.
Betyg: 5 av 5
- Webbsidan följer god SEO-praxis fullt ut!
Beta-version av e-postkollen. Utvärderar inställningar som SPF, DNS, MX och mycket mer.
Obs! Detta test ingår inte i totalbetyget, däremot i delbetyget Integritet & säkerhet.
Betyg: 3.74 av 5
- MTA-STS DNS-post hittades inte ( 1.00 betyg )
- MTA-STS TXT hittades inte ( 1.00 betyg )
- SPF DNS-post har otillåtet innehåll ( 1.00 betyg )
- SPF DNS-post använder två mellanslag istället för ett ( 1.50 betyg )
- MTA-STS DNS-post hittades inte ( 1.00 betyg )
- MTA-STS TXT hittades inte ( 1.00 betyg )
- SPF DNS-post använder mjukt misslyckande ( 2.00 betyg )
- SPF-servrar i länder utan adekvat nivå av dataskydd: US, MY, IN, HK, SG, AU, KE ( 1.00 betyg )
- DMARC DNS-post använder 'none' för policy ( 1.00 betyg )
Kontrollerar om webbplatsen stödjer IPv6, säkerhetsstandarden TLS och vilka versioner av HTTP.
Betyg: 3.36 av 5
- Inget stöd för HTTPv3 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- muhos.fi, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- muhos.fi, använder inte CSP ( 1.00 betyg )
- muhos.fi, Subresource Integrity (SRI) krävs ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- consent.cookiebot.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- consent.cookiebot.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- fonts.googleapis.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv2 ( 1.00 betyg )
- www.google.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- www.google.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget stöd för HTTPv2 ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- voiceintuitive.azure-api.net, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- voiceintuitive.azure-api.net, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- www.googletagmanager.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- consentcdn.cookiebot.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- consentcdn.cookiebot.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv2 ( 1.00 betyg )
- fonts.gstatic.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- fonts.gstatic.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- imgsct.cookiebot.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- imgsct.cookiebot.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- www.gstatic.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- www.gstatic.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv2 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- unpkg.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv2 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- static.voiceintuitive.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- taeggie.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget HTTPv1.1 stöd ( 1.00 betyg )
- Inget stöd för HTTPv3 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- mediahost.taeggie.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- muhos.fi, använder 'max-age' på 1 år eller mer för HSTS ( 4.95 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- muhos.fi, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- muhos.fi, använder inte CSP ( 1.00 betyg )
- muhos.fi, Subresource Integrity (SRI) krävs för följande HTML-element ( 1.00 betyg )
- `< script type="text/javascript"
id="Cookiebot"
src="https://consent.cookiebot.com/uc.js"
data-implementation="wp"
data-cbid="ad35a83f-e75a-4fac-a0f4-a56e974dac46"
data-culture="FI"
data-blockingmode="auto"
>`
- `< script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=fi&ver=6.8.1" id="recaptcha-js">`
- `< link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&display=swap" rel="stylesheet">`
- consent.cookiebot.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- consent.cookiebot.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- fonts.googleapis.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- www.google.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- www.google.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- voiceintuitive.azure-api.net, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- voiceintuitive.azure-api.net, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- www.googletagmanager.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- consentcdn.cookiebot.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- consentcdn.cookiebot.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- fonts.gstatic.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- fonts.gstatic.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- imgsct.cookiebot.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- imgsct.cookiebot.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- www.gstatic.com, använder inte HSTS ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- www.gstatic.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- unpkg.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- static.voiceintuitive.com, 'max-age' i HSTS är mindre än 6 månader ( 3.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- static.voiceintuitive.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- taeggie.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
- mediahost.taeggie.com, endast föräldern använder HSTS, även barnet borde använda HSTS ( 4.99 betyg )
- Inget TLSv1.3 stöd ( 1.00 betyg )
- mediahost.taeggie.com, inget stöd för transportlagret: TLSv1.2 ( 1.00 betyg )
Tillgänglighetstest genom Google Lighthouse om webbplatsen är utformad på ett tillgängligt sätt för funktionsvarierade användare. Mäter med en mobilanvändares preferenser.
Betyg: 4.65 av 5
- Webbplatsen kan bli mer tillgänglig, men är ganska ok.
- Kontrasten mellan bakgrundsfärg och förgrundsfärg är inte tillräckligt stor. ( 1.00 betyg )
- Vissa länkar har inte ett igenkännligt namn ( 1.00 betyg )
- Använder ARIA-roller på inkompatibla element ( 1.00 betyg )
Kontrollerar HTML-koden mot W3C för att se om den har rätt syntax och följer webbstandard.
Betyg: 4.10 av 5
- Den testade sidan har 23 st fel i sin HTML-kod. Det är rätt ok ändå.
- #1: Webbsida - Antal (grupperade fel): 8 ( 3.40 betyg )
- #1: Webbsida - Antal fel: 20 ( 3.00 betyg )
- Bad value X for attribute X on element X: Bad CSS number token: Expected a minus sign or a digit but saw X instead at X. (totalt 7 st)
- The text content of element X was not in the required format: The literal did not satisfy the time-datetime format. (totalt 6 st)
- Duplicate attribute X. (totalt 2 st)
- End tag X seen, but there were open elements. (totalt 1 st)
- Unclosed element X. (totalt 1 st)
- Bad value X for attribute X on element X. (totalt 1 st)
- Bad value X for attribute X on element X: Subtype missing. (totalt 1 st)
- Element X not allowed as child of element X in this context. (Suppressing further errors from this subtree.) (totalt 1 st)
Har webbplatsen bra frontendkod och frontend-prestanda enligt Yellow Lab Tools?
Betyg: 3.90 av 5
- Helt ok och ganska genomsnittligt.
- Gzip/Brotli-komprimering ( 2.05 betyg )
- DOM-åtkomst ( 2.00 betyg )
- Antal regler ( 1.00 betyg )
- Total vikt ( 1.95 betyg )
- Gzip/Brotli-komprimering ( 2.05 betyg )
- Filminifiering ( 2.75 betyg )
- Antal anrop ( 4.15 betyg )
- Olika domäner ( 4.45 betyg )
- Below the fold images ( 4.55 betyg )
- Webfonts number ( 1.25 betyg )
- Overweighted webfonts ( 1.00 betyg )
- Caching too short ( 1.00 betyg )
Har webbplatsen bra frontendkod och frontend-prestanda enligt Yellow Lab Tools?
Betyg: 3.90 av 5
- Helt ok och ganska genomsnittligt.
- Gzip/Brotli-komprimering ( 2.05 betyg )
- DOM-åtkomst ( 2.00 betyg )
- Antal regler ( 1.00 betyg )
- Total vikt ( 1.95 betyg )
- Gzip/Brotli-komprimering ( 2.05 betyg )
- Filminifiering ( 2.75 betyg )
- Antal anrop ( 4.15 betyg )
- Olika domäner ( 4.45 betyg )
- Below the fold images ( 4.55 betyg )
- Webfonts number ( 1.25 betyg )
- Overweighted webfonts ( 1.00 betyg )
- Caching too short ( 1.00 betyg )
5 juli-stiftelsens tjänst Webbkoll kollar hur mycket som gjorts för att skydda besökarnas integritet. Betyg och bedömning är Webperfs.
Betyg: 3.56 av 5
- Ok integritet men borde nog bli bättre.
- HTTP Strict Transport Security HSTS är ok, men har 2 fel och 0 varning(ar). ( 4.00 betyg )
- Content Security Policy är dåligt. ( 1.00 betyg )
- Referrer Policy är inte så bra. ( 2.50 betyg )
- Subresource Integrity SRI är dåligt. ( 1.00 betyg )
Följer webbplatsen praxis för felsidan 404?
Betyg: 4.20 av 5
- Saknas text som beskriver att ett fel uppstått (på svenska, eller engelska för engelskspråkig webbplats)? ( 1.00 betyg )
- Saknas text som beskriver att ett fel uppstått (på svenska, eller engelska för engelskspråkig webbplats)? ( 1.00 betyg )
Kontrollerar CSS-koden mot Webperf-communityts egna CSS-test, för att se om det följer modern webbstandard.
Betyg: 5 av 5
- CSS är välbyggd!Kontrollerar HTML-koden mot Webperf-communityts egna HTML-test, för att se om det följer modern webbstandard.
Betyg: 4.80 av 5
- HTML är bra.
- #31: bc-v4.min.html, antal grupperade fel: 2 ( 4.60 betyg )
- #31: bc-v4.min.html, antal fel: 2 ( 4.60 betyg )
- < html> is missing required X attribute (totalt 1 st)
- < html> element must have < head> as content (totalt 1 st)
Alpha-versionen av vårt mjukvaratest. Kontrollerar om det finns utdaterade versioner av mjukvara eller ramverk. Det vill säga potentiella säkerhetsrisker.
Betyg: 4.65 av 5
- Innehållshanteringssystem: wordpressKontrollerar om webbplatsen har tredjeparter och molntjänster utanför EU:s jurisdiktion, och om fingerprint-teknik används eller annat som äventyrar användarens integritet?
Betyg: 4.16 av 5
##### Dataskyddsförordningen och Schrems II-domen ( 1.00 betyg )
Antal olika länder: 5
Sidan skickades från Sverige: Nej
Länder utan adekvat nivå av dataskydd: 1
US, 49 förfrågningar:
- #36: msgpack-2.4.0
- #37: round-play-with
- #38: Voice-controlpa
- #39: Voice-controlpa
- #40: Voice-controlpa
- Fler än 5 förfrågningar hittade, döljer resten
Besökaranalys används:
- #1: Webbsida - Har referens till Google Tag Manager
- #13: gtm.js - Har referens till Google Analytics
- #13: gtm.js - Har referens till Google Tag Manager
##### Annonsörer ( 4.82 betyg )
- #20: configuration.j - Annonsörsförfrågan hittad ( 1.00 betyg )
- #21: cc.js - Annonsörsförfrågan hittad ( 1.00 betyg )
- #31: bc-v4.min.html - Annonsörsförfrågan hittad ( 1.00 betyg )
- Fler än 5 annonsörsförfrågningar hittade, döljer resten ( 1.00 betyg )
- Hittade totalt 6 annonsörsförfrågningar.
Hur mycket koldioxid produceras genom en sidvisning och hur mycket energi går åt jämfört med andra webbplatser på Webperf?
Betyg: 2 av 5
- Webbsidan genererar en hel del koldioxid :/Kontrollerar ifall Javascript-koden är korrekt enligt Webperf-communityts egna Javascript-test. Testet är ett "lint"-test för att avgöra om det är korrekt Javascript och följer webbstandard.
Betyg: 2.31 av 5
- JS är dålig.
- `< script>` in: #1: Webbsida , antal grupperade fel: 1 ( 4.80 betyg )
- `< script>` in: #1: Webbsida , antal fel: 1 ( 4.80 betyg )
- Parsing error: Unexpected token : (totalt 1 st)
- `< script src="...">` in: #1: Webbsida , antal grupperade fel: 4 ( 4.20 betyg )
- `< script src="...">` in: #1: Webbsida , antal fel: 169 ( 1.00 betyg )
- X is defined but never used. (totalt 68 st)
- Unexpected console statement. (totalt 42 st)
- X is not defined. (totalt 38 st)
- X is assigned a value but never used. (totalt 21 st)
- `< script>` in: #31: bc-v4.min.html, antal grupperade fel: 1 ( 4.80 betyg )
- `< script>` in: #31: bc-v4.min.html, antal fel: 1 ( 4.80 betyg )
- X is defined but never used. (totalt 1 st)
- `content-type=".*javascript.*"` in: #13: gtm.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #13: gtm.js, antal fel: 549 ( 1.00 betyg )
- X is defined but never used. (totalt 436 st)
- X is assigned a value but never used. (totalt 84 st)
- X is not defined. (totalt 28 st)
- Unexpected console statement. (totalt 1 st)
- `content-type=".*javascript.*"` in: #20: configuration.j, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #20: configuration.j, antal fel: 558 ( 1.00 betyg )
- X is defined but never used. (totalt 436 st)
- X is assigned a value but never used. (totalt 84 st)
- X is not defined. (totalt 37 st)
- Unexpected console statement. (totalt 1 st)
- `content-type=".*javascript.*"` in: #21: cc.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #21: cc.js, antal fel: 586 ( 1.00 betyg )
- X is defined but never used. (totalt 448 st)
- X is assigned a value but never used. (totalt 90 st)
- X is not defined. (totalt 46 st)
- Unexpected console statement. (totalt 2 st)
- `content-type=".*javascript.*"` in: #34: recaptcha--fi.j, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #34: recaptcha--fi.j, antal fel: 686 ( 1.00 betyg )
- X is defined but never used. (totalt 527 st)
- X is assigned a value but never used. (totalt 91 st)
- X is not defined. (totalt 63 st)
- Unexpected console statement. (totalt 5 st)
- `content-type=".*javascript.*"` in: #35: cfg, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #35: cfg, antal fel: 737 ( 1.00 betyg )
- X is defined but never used. (totalt 530 st)
- X is assigned a value but never used. (totalt 97 st)
- X is not defined. (totalt 74 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #59: muhoksen-feedi., antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #59: muhoksen-feedi., antal fel: 860 ( 1.00 betyg )
- X is defined but never used. (totalt 531 st)
- X is not defined. (totalt 195 st)
- X is assigned a value but never used. (totalt 98 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #60: msgpack.min.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #60: msgpack.min.js, antal fel: 864 ( 1.00 betyg )
- X is defined but never used. (totalt 532 st)
- X is not defined. (totalt 198 st)
- X is assigned a value but never used. (totalt 98 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #68: modernizr.min.j, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #68: modernizr.min.j, antal fel: 867 ( 1.00 betyg )
- X is defined but never used. (totalt 533 st)
- X is not defined. (totalt 200 st)
- X is assigned a value but never used. (totalt 98 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #70: enquire.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #70: enquire.js, antal fel: 867 ( 1.00 betyg )
- X is defined but never used. (totalt 533 st)
- X is not defined. (totalt 200 st)
- X is assigned a value but never used. (totalt 98 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #71: savvior.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #71: savvior.js, antal fel: 870 ( 1.00 betyg )
- X is defined but never used. (totalt 536 st)
- X is not defined. (totalt 200 st)
- X is assigned a value but never used. (totalt 98 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #72: linkify-with-ht, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #72: linkify-with-ht, antal fel: 872 ( 1.00 betyg )
- X is defined but never used. (totalt 536 st)
- X is not defined. (totalt 201 st)
- X is assigned a value but never used. (totalt 99 st)
- Unexpected console statement. (totalt 36 st)
- `content-type=".*javascript.*"` in: #73: timeago.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #73: timeago.js, antal fel: 879 ( 1.00 betyg )
- X is defined but never used. (totalt 536 st)
- X is not defined. (totalt 205 st)
- X is assigned a value but never used. (totalt 99 st)
- Unexpected console statement. (totalt 39 st)
- `< script>` in: #1: Webbsida , antal grupperade fel: 1 ( 4.80 betyg )
- `< script>` in: #1: Webbsida , antal fel: 1 ( 4.80 betyg )
- Parsing error: Unexpected token : (totalt 1 st)
- `< script src="...">` in: #1: Webbsida , antal grupperade fel: 11 ( 2.80 betyg )
- `< script src="...">` in: #1: Webbsida , antal fel: 1274 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 770 st)
- Expected X and instead saw X. (totalt 463 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 7 st)
- Unnecessary escape character: \-. (totalt 4 st)
- Unnecessary X. (totalt 3 st)
- Do not access Object.prototype method X from target object. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Comparing to itself is potentially pointless. (totalt 2 st)
- X is assigned to itself. (totalt 2 st)
- X is not modified in this loop. (totalt 2 st)
- `< script>` in: #31: bc-v4.min.html, antal grupperade fel: 2 ( 4.60 betyg )
- `< script>` in: #31: bc-v4.min.html, antal fel: 2 ( 4.60 betyg )
- Expected X and instead saw X. (totalt 1 st)
- Expected an assignment or function call and instead saw an expression. (totalt 1 st)
- `content-type=".*javascript.*"` in: #13: gtm.js, antal grupperade fel: 10 ( 3.00 betyg )
- `content-type=".*javascript.*"` in: #13: gtm.js, antal fel: 1343 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 958 st)
- Expected X and instead saw X. (totalt 259 st)
- Do not access Object.prototype method X from target object. (totalt 107 st)
- X is not modified in this loop. (totalt 7 st)
- Unnecessary escape character: \/. (totalt 5 st)
- X is assigned to itself. (totalt 3 st)
- eval can be harmful. (totalt 1 st)
- Comparing to itself is potentially pointless. (totalt 1 st)
- Unnecessary X. (totalt 1 st)
- Script URL is a form of eval. (totalt 1 st)
- `content-type=".*javascript.*"` in: #20: configuration.j, antal grupperade fel: 10 ( 3.00 betyg )
- `content-type=".*javascript.*"` in: #20: configuration.j, antal fel: 1343 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 958 st)
- Expected X and instead saw X. (totalt 259 st)
- Do not access Object.prototype method X from target object. (totalt 107 st)
- X is not modified in this loop. (totalt 7 st)
- Unnecessary escape character: \/. (totalt 5 st)
- X is assigned to itself. (totalt 3 st)
- eval can be harmful. (totalt 1 st)
- Comparing to itself is potentially pointless. (totalt 1 st)
- Unnecessary X. (totalt 1 st)
- Script URL is a form of eval. (totalt 1 st)
- `content-type=".*javascript.*"` in: #21: cc.js, antal grupperade fel: 13 ( 2.40 betyg )
- `content-type=".*javascript.*"` in: #21: cc.js, antal fel: 1691 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 1265 st)
- Expected X and instead saw X. (totalt 295 st)
- Do not access Object.prototype method X from target object. (totalt 107 st)
- X is not modified in this loop. (totalt 7 st)
- Unnecessary escape character: \/. (totalt 5 st)
- X is assigned to itself. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- eval can be harmful. (totalt 1 st)
- Comparing to itself is potentially pointless. (totalt 1 st)
- Unnecessary X. (totalt 1 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \[. (totalt 1 st)
- `content-type=".*javascript.*"` in: #34: recaptcha--fi.j, antal grupperade fel: 21 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #34: recaptcha--fi.j, antal fel: 4110 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2040 st)
- Expected an assignment or function call and instead saw an expression. (totalt 1889 st)
- Do not access Object.prototype method X from target object. (totalt 111 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 4 st)
- eval can be harmful. (totalt 3 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Unnecessary X. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \.. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- `content-type=".*javascript.*"` in: #35: cfg, antal grupperade fel: 22 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #35: cfg, antal fel: 4131 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2045 st)
- Expected an assignment or function call and instead saw an expression. (totalt 1889 st)
- Do not access Object.prototype method X from target object. (totalt 111 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 4 st)
- eval can be harmful. (totalt 3 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Unnecessary X. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \.. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- `content-type=".*javascript.*"` in: #59: muhoksen-feedi., antal grupperade fel: 26 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #59: muhoksen-feedi., antal fel: 4176 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2063 st)
- Expected an assignment or function call and instead saw an expression. (totalt 1906 st)
- Do not access Object.prototype method X from target object. (totalt 111 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Unnecessary X. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \:. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
- `content-type=".*javascript.*"` in: #60: msgpack.min.js, antal grupperade fel: 27 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #60: msgpack.min.js, antal fel: 4357 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2112 st)
- Expected an assignment or function call and instead saw an expression. (totalt 2033 st)
- Do not access Object.prototype method X from target object. (totalt 111 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- Unsafe usage of ThrowStatement. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Unnecessary X. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \:. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
- `content-type=".*javascript.*"` in: #68: modernizr.min.j, antal grupperade fel: 27 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #68: modernizr.min.j, antal fel: 4377 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2119 st)
- Expected an assignment or function call and instead saw an expression. (totalt 2043 st)
- Do not access Object.prototype method X from target object. (totalt 112 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary X. (totalt 5 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- Unsafe usage of ThrowStatement. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \:. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
- `content-type=".*javascript.*"` in: #70: enquire.js, antal grupperade fel: 27 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #70: enquire.js, antal fel: 4383 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2119 st)
- Expected an assignment or function call and instead saw an expression. (totalt 2049 st)
- Do not access Object.prototype method X from target object. (totalt 112 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary X. (totalt 5 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- Unsafe usage of ThrowStatement. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \:. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
- `content-type=".*javascript.*"` in: #71: savvior.js, antal grupperade fel: 27 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #71: savvior.js, antal fel: 4392 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2119 st)
- Expected an assignment or function call and instead saw an expression. (totalt 2058 st)
- Do not access Object.prototype method X from target object. (totalt 112 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary X. (totalt 5 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- Unsafe usage of ThrowStatement. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \:. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
- `content-type=".*javascript.*"` in: #72: linkify-with-ht, antal grupperade fel: 27 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #72: linkify-with-ht, antal fel: 4465 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2125 st)
- Expected an assignment or function call and instead saw an expression. (totalt 2125 st)
- Do not access Object.prototype method X from target object. (totalt 112 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary X. (totalt 5 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- Unsafe usage of ThrowStatement. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \-. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \+. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \:. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
- `content-type=".*javascript.*"` in: #73: timeago.js, antal grupperade fel: 27 ( 1.00 betyg )
- `content-type=".*javascript.*"` in: #73: timeago.js, antal fel: 4470 ( 1.00 betyg )
- Expected X and instead saw X. (totalt 2125 st)
- Expected an assignment or function call and instead saw an expression. (totalt 2125 st)
- Do not access Object.prototype method X from target object. (totalt 112 st)
- Unnecessary escape character: \". (totalt 16 st)
- Unnecessary escape character: \/. (totalt 14 st)
- X is not modified in this loop. (totalt 9 st)
- X is assigned to itself. (totalt 9 st)
- Unnecessary X. (totalt 5 st)
- Unnecessary escape character: \). (totalt 5 st)
- Unnecessary escape character: \-. (totalt 5 st)
- Unnecessary escape character: \?. (totalt 5 st)
- Unsafe usage of ThrowStatement. (totalt 5 st)
- eval can be harmful. (totalt 4 st)
- Unnecessary escape character: \.. (totalt 4 st)
- Unexpected string concatenation of literals. (totalt 4 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Script URL is a form of eval. (totalt 3 st)
- Unnecessary escape character: \^. (totalt 3 st)
- Unnecessary escape character: \+. (totalt 3 st)
- Unnecessary escape character: \[. (totalt 2 st)
- Unnecessary escape character: \(. (totalt 2 st)
- Unnecessary escape character: \:. (totalt 2 st)
- Unnecessary escape character: \< . (totalt 1 st)
- Unnecessary escape character: \>. (totalt 1 st)
- Unnecessary escape character: \{. (totalt 1 st)
- Unnecessary escape character: \,. (totalt 1 st)
- Unnecessary escape character: \!. (totalt 1 st)
Kontroll av hur snabb webbplatsen är, genom opensource-verktyget Sitespeed.io.
Betyg: 4.60 av 5
- [mobile] LCP (Largest Contentful Paint): 2526.67ms, ±423.33ms ( 1.00 betyg )
- [mobile] firstPaint: 762.67ms, ±327.33ms
- [mobile] LastVisualChange: 1215.00ms, ±315.00ms
Tillgänglighetstest av webbplatsen för att kolla upp följsamhet till tillgänglighetsriktlinjerna WCAG (Web Content Accessibility Guidelines). Pa11y testar upp till och med nivå AAA av WCAG, vilket är högre än kravet i DOS-lagen.
Betyg: 3.10 av 5
- Väldigt dålig tillgänglighet!
- Antal grupperade fel: 10 ( 3.00 betyg )
- Antal fel: 18 ( 3.20 betyg )
##### Problem:
- A textinput element does not have a name available to an accessibility API. Valid names are: label element, title undefined, aria-label undefined, aria-labelledby undefined.
- A form field should be labelled in some way. Use the label element (either with a "for" attribute or wrapped around the form field), or "title", "aria-label" or "aria-labelledby" attributes as appropriate.
- A form does not contain a submit button, which creates issues for those who cannot submit the form using the keyboard. Submit buttons are INPUT elements with type attribute "submit" or "image", or BUTTON elements with type "submit" or omitted/invalid.
- A button element does not have a name available to an accessibility API. Valid names are: title undefined, element content, aria-label undefined, aria-labelledby undefined.
- A element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 2:1. Recommendation: change text colour to #008484.
- Img element is the only content of the link, but is missing alt text. The alt text should describe the purpose of the link.
- Heading tag found with no content. Text that is not intended as a heading should not be marked up with heading tags.
- A element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 3:1, but text in this element has a contrast ratio of 1:1. Recommendation: change text colour to #949494.
- A element has insufficient contrast at this conformance level. Expected a contrast ratio of at least 4.5:1, but text in this element has a contrast ratio of 2.78:1. Recommendation: change background to #b75f00.
- Iframe element requires a non-empty title attribute that identifies the frame.
- Info: För många unika problem för att lista alla.
Letar efter standardfiler som robots.txt, security.txt, sitemaps och RSS-prenumerationer
Betyg: 3.96 av 5
- Sitemap är bra. ( 4.86 betyg )
- security.txt har inte förväntat innehåll. ( 1.00 betyg )
- security.txt har inte förväntat innehåll. ( 1.00 betyg )
Kontrollerar CSS-koden mot W3C för att se om den har rätt syntax och följer webbstandard.
Betyg: 4.76 av 5
- CSS är välbyggd!
- `< style>` in: #1: Webbsida , antal grupperade fel: 2 ( 4.60 betyg )
- `< style>` in: #1: Webbsida , antal fel: 2 ( 4.80 betyg )
- CSS: X: Property X doesn't exist. (totalt 1 st)
- CSS: Parse Error. (totalt 1 st)
- `< link rel="stylesheet">` in: #1: Webbsida , antal grupperade fel: 6 ( 3.80 betyg )
- `< link rel="stylesheet">` in: #1: Webbsida , antal fel: 25 ( 2.50 betyg )
- CSS: X: X is not a X value. (totalt 9 st)
- CSS: Parse Error. (totalt 5 st)
- CSS: X: Property X doesn't exist. (totalt 5 st)
- CSS: X: X is not a valid HSL color. (totalt 3 st)
- CSS: X: Parse Error. (totalt 2 st)
- CSS: X: The types are incompatible. (totalt 1 st)
Har du sett hur muhos.fi såg ut förr?
Nya tillgänglighetslagen har inte så mycket praxis ännu, men desto fler frågor. Dock finns ett antal svar från praktiker inom tillgänglighet.
Nyhetsbrevet Webperf #61 – skickat 27:e juni. På lördag aktiveras tillgänglighetsdirektivet, 12 principer om tillgänglighet och vilka som var bäst i juni.
Många tycks underskatta betydelsen av en robots.txt-fil. Det här kan verka som en teknisk detalj, men sanningen är att denna lilla textfil spelar en avgörande roll för hur sökmotorer och andra automatiserade verktyg interagerar med din webbplats.
När Google för några veckor sedan introducerade AI-översikter även i Sverige väcktes förståeligt nog diskussioner om huruvida detta skulle förändra SEO-landskapet för alltid.
Nyhetsbrevet Webperf #60 – skickat 27:e maj. AI-översikter nu på svenska Google, PTS strategi för tillsyn av EAA, och vem som var bäst i maj.
Nyhetsbrevet skickas en gång i månaden. Innehållet är intressanta nyheter inom webbutveckling och tips för att bygga bra webbplatser.
Prenumerera på Webperfs nyhetsbrev