Tekninen hakukoneoptimointi on se osa hakukoneoptimointia, joka varmistaa, että Google pystyy löytämään sivustosi, lukemaan sen sisällön ja lisäämään sen hakutulostietokantaansa. Ilman toimivaa teknistä perustaa edes paras sisältö jää näkymättömiin.
Tässä artikkelissa käyn läpi teknisen SEOn osa-alueet käytännössä: mitä tarkistaa, miten korjata ja millä työkaluilla. Ei teoriaa teorian vuoksi, vaan priorisoitu tarkistuslista.
Mitä tekninen hakukoneoptimointi tarkoittaa?
Tekninen SEO käsittelee kolmea peruskysymystä:
- Löytääkö Google sivusi? (crawlaus)
- Ymmärtääkö Google sivusi sisällön? (renderöinti ja rakennedata)
- Tarjoaako sivusi hyvän käyttäjäkokemuksen? (nopeus, mobiili, turvallisuus)
Tekninen SEO ei tarkoita sisällön kirjoittamista tai linkkien rakentamista. Se tarkoittaa infrastruktuuria: samaa kuin sähköt ja vesijohto talossa. Kukaan ei muuta taloon sähköjen takia, mutta ilman niitä mikään muu ei toimi.
Crawlaus ja indeksointi
Googlen crawler (Googlebot) käy läpi sivustosi seuraamalla linkkejä sivulta toiselle. Se ei automaattisesti löydä kaikkia sivuja. Sinun tehtäväsi on varmistaa, että Googlebot löytää oikeat sivut ja jättää turhat rauhaan.
Robots.txt
Robots.txt on tekstitiedosto sivuston juuressa, joka kertoo hakukoneille mihin niillä on pääsy. Se ei ole turvamekanismi (Google voi silti indeksoida estetyn sivun, jos siihen linkitetään muualta), vaan crawlauksen ohjaustyökalu.
Tärkeimmät säännöt:
- Allow: / sallii kaiken crawlauksen (oletus useimmilla sivustoilla)
- Disallow: /admin/ estää hallintapaneelin crawlauksen
- Sitemap: rivi kertoo hakukoneille missä sivukartta on
Yleinen virhe: robots.txt estää CSS- tai JavaScript-tiedostoja, jolloin Google ei pysty renderöimään sivua oikein. Tarkista Google Search Consolen URL Inspection -työkalulla, näkeekö Google sivun samalla tavalla kuin käyttäjä.
XML-sitemap
Sitemap on lista kaikista sivuista, jotka haluat Googlen indeksoivan. Se ei takaa indeksointia, mutta nopeuttaa uusien sivujen löytämistä ja auttaa Googlea ymmärtämään sivuston rakenteen.
Hyvän sitemapin ominaisuudet:
- Sisältää vain indeksoitavat sivut (ei noindex-sivuja, ei uudelleenohjauskohteita)
- Lastmod-päivämäärä on oikea (ei päivity automaattisesti joka build, vaan sisällön muuttuessa)
- Viittaus robots.txt:ssä:
Sitemap: https://domain.fi/sitemap.xml - Lähetetty Google Search Consoleen
Indeksointiongelmat
Google Search Consolen Coverage-raportti kertoo, mitkä sivut on indeksoitu ja mitkä ei.
Yleisimmät syyt siihen, ettei sivua indeksoida:
| Syy | Ratkaisu |
|---|---|
| Noindex-merkintä | Poista meta robots noindex, jos sivu pitäisi indeksoida |
| Canonical osoittaa toiseen sivuun | Tarkista, onko canonical oikein |
| Soft 404 | Sivu palauttaa 200 mutta sisältö on tyhjä tai virhesivu |
| Crawlausvirhe | Palvelin palauttaa 5xx tai timeout |
| Ohut sisältö | Google ei pidä sivua riittävän arvokkaana indeksoitavaksi |
Canonical-tagit
Canonical-tagi kertoo Googlelle, mikä on sivun ensisijainen versio. Tämä on kriittistä, koska sama sisältö voi olla saatavilla useasta osoitteesta:
https://domain.fi/sivujahttps://domain.fi/sivu/(trailing slash)http://jahttps://www.ja ilman- URL-parametrien kanssa:
?ref=email,?utm_source=linkedin
Ilman canonicalia Google saattaa jakaa sivun “arvovallan” (link equity) näiden kaikkien versioiden kesken sen sijaan, että keskittäisi sen yhteen.
Oikea toteutus
Jokainen sivu sisältää self-referencing canonicalin:
<link rel="canonical" href="https://domain.fi/blogi/artikkeli/" />
Self-referencing tarkoittaa, että sivu osoittaa itseensä. Tämä on suositeltu käytäntö myös sivuille, joilla ei ole duplikaatteja, koska se poistaa epävarmuuden.
Yleiset virheet
- Suhteellinen canonical (
<link rel="canonical" href="/">): toimii, mutta absoluuttinen URL on varmempi - Canonical osoittaa noindex-sivuun: Google saa ristiriitaisen signaalin
- Canonical osoittaa eri sisältöön: Google voi ohittaa sen kokonaan
- Canonical puuttuu: Google arvaa itse, mikä on ensisijainen versio
Core Web Vitals
Core Web Vitals on Googlen mittaristo käyttäjäkokemukselle. Se koostuu kolmesta mittarista, jotka kaikki vaikuttavat hakutulossijoituksiin:
LCP (Largest Contentful Paint)
Mittaa kuinka nopeasti sivun suurin näkyvä elementti (yleensä hero-kuva tai otsikko) latautuu.
Tavoite: alle 2,5 sekuntia mobiililla.
Yleisimmät LCP-ongelmat ja ratkaisut:
| Ongelma | Ratkaisu |
|---|---|
| Suuret kuvat | WebP-muoto, srcset eri kokoisille näytöille, lazy load (paitsi hero) |
| Hidas palvelin (TTFB) | CDN, staattinen generointi, edge caching |
| Render-blocking CSS/JS | Inline kriittinen CSS, defer JavaScript |
| Web-fontit | font-display: swap tai optional, preload-vihje |
| Kolmannen osapuolen skriptit | Lataa GTM, analytiikka ja mainokset asynkronisesti |
INP (Interaction to Next Paint)
Mittaa kuinka nopeasti sivu reagoi käyttäjän toimintaan (klikkaus, näppäinpainallus, kosketustoiminto). Korvasi FID:n (First Input Delay) maaliskuussa 2024.
Tavoite: alle 200 millisekuntia.
INP on yleensä ongelma sivustoilla, joilla on raskas client-side JavaScript (React, Vue, Angular SPA:t). Staattisilla sivustoilla (Astro, Hugo, plain HTML) INP on harvoin ongelma. (Googlen INP-dokumentaatio)
CLS (Cumulative Layout Shift)
Mittaa kuinka paljon sivun elementit hyppivät latauksen aikana. Jos mainos latautuu ja työntää tekstiä alaspäin, tai kuva latautuu ilman varattua tilaa, se aiheuttaa layout shiftejä.
Tavoite: alle 0,1.
Ratkaisut:
- Kaikilla kuvilla width ja height -attribuutit (tai CSS aspect-ratio)
- Mainospaikoille kiinteä tila varattu CSS:llä (min-height)
- Fontit: font-display: optional tai swap + preload (estää FOIT/FOUT -hyppyjä)
- Dynaamisesti ladattava sisältö: varaa tila etukäteen
Käytännön esimerkki: jondillemuth.fi
Tämä sivusto on rakennettu Astro-frameworkilla (staattinen HTML, ei client-side frameworkia). Lähtötilanne julkaisun jälkeen oli mobiililla 93/100 ja desktopilla 99/100:
Optimoinnin jälkeen tulos on 100/100 molemmilla:
| Mittari | Lähtötilanne (mobiili) | Nykytilanne (mobiili) |
|---|---|---|
| Performance | 93/100 | 100/100 |
| LCP | 1,2 s | 0,8 s |
| CLS | 0 | 0 |
| TBT | 10 ms | 0 ms |
Mitä tehtiin 93 → 100:
- Fontin latausstrategia: vaihdettiin
font-display: swap→optionalja lisättiinpreload. Poisti FOUT-hyppyn (flash of unstyled text) ja paransi LCP:tä. - Inline CSS: kaikki tyylitiedostot inline HTML:ään (
inlineStylesheets: "always"). Poisti viimeisen render-blocking-resurssin. - Speculation Rules: lisättiin prefetch navigaatioille, jolloin seuraava sivu latautuu taustalla ennen kuin käyttäjä klikkaa.
- Kuvaoptimointi: hero-kuvalle
fetchpriority="high", muilleloading="lazy". Srcset kolmella leveydellä.
Jokainen yksittäinen muutos paransi tulosta 1-3 pistettä. Yhdessä ne veivät 93:sta sataan. (Tarkista nykytilanne PageSpeed Insightsilla)
Mobiili-first-indeksointi
Google käyttää sivuston mobiiliversiota indeksoinnin ja sijoitusten perustana (Googlen mobile-first-dokumentaatio). Tämä tarkoittaa:
- Jos mobiiliversiosta puuttuu sisältöä joka on desktopversiossa, Google ei näe sitä
- Jos mobiilisivusto on hidas, se vaikuttaa sijoituksiin myös desktophaussa
- Meta-tagit (title, description, canonical) pitää olla samat mobiili- ja desktopversiossa
Responsive design (yksi HTML, CSS mukauttaa näkymän) on suositeltavin ratkaisu. Erillinen mobiilisivusto (m.domain.fi) vaatii hreflang- ja canonical-konfiguraation ja on altis virheille.
HTTPS ja tietoturvaheaderit
HTTPS (SSL-sertifikaatti) on ollut Googlen rankkaussignaali vuodesta 2014. Vuonna 2026 se on käytännössä pakollinen: selaimet näyttävät varoituksen HTTP-sivustoista.
Perustaso
- SSL-sertifikaatti: Let’s Encrypt tarjoaa ilmaiseksi, useimmat hostingit asentavat automaattisesti
- HTTP→HTTPS redirect: 301-uudelleenohjaus kaikesta HTTP-liikenteestä HTTPS:ään
- HSTS: pakottaa selaimen käyttämään HTTPS:ää (includeSubDomains + preload suositeltuja)
Lisäheaderit (eivät vaikuta suoraan sijoituksiin, mutta parantavat turvallisuutta)
| Header | Mitä tekee |
|---|---|
| Content-Security-Policy | Rajoittaa mistä sivusto voi ladata resursseja (estää XSS-hyökkäyksiä) |
| X-Content-Type-Options: nosniff | Estää MIME-type-sniffauksen |
| X-Frame-Options: SAMEORIGIN | Estää sivun upottamisen iframeen toisella sivustolla |
| Referrer-Policy | Kontrolloi mitä tietoa lähetetään kun käyttäjä klikkaa linkkiä |
Sähköpostitodennus
SPF, DKIM ja DMARC eivät ole teknistä SEO:ta perinteisessä mielessä, mutta ne vaikuttavat E-E-A-T-luotettavuuteen. Jos yrityksesi domain lähettää sähköpostia (tarjoukset, uutiskirjeet, raportit), näiden pitää olla kunnossa.
Rakennedata (Schema Markup)
Rakennedata kertoo Googlelle sivun sisällöstä koneluettavassa muodossa. Se ei suoraan nosta sijoituksia, mutta mahdollistaa rich resultit hakutuloksissa: FAQ-laatikot, tähtiarvostelut, HowTo-ohjeet, breadcrumbit.
Tärkeimmät schema-tyypit yrityksille
| Tyyppi | Käyttökohde | Rich result |
|---|---|---|
| Organization | Etusivu: yrityksen nimi, logo, yhteystiedot | Knowledge Panel |
| LocalBusiness | Paikalliset yritykset: osoite, aukioloajat, palvelualue | Google Maps, Local Pack |
| FAQPage | Sivut joilla on kysymys-vastaus-osio | FAQ-laajennus hakutuloksessa |
| Article / BlogPosting | Blogiartikkelit: kirjoittaja, julkaisuaika, kuva | Artikkelin metatiedot |
| HowTo | Vaiheittaiset ohjeet | Visuaalinen HowTo-kortti |
| BreadcrumbList | Navigaatiopolku | Breadcrumb hakutuloksessa |
| Service | Palvelusivut: palvelun tyyppi, hinta, alue | Palvelun tiedot |
Toteutus
Rakennedata lisätään JSON-LD-muodossa sivun <head>-osioon. Tämä on Googlen suosittelema tapa (Microdata ja RDFa toimivat myös, mutta JSON-LD on selkein).
Validoi aina: Google Rich Results Test tai Schema Markup Validator.
Käytännön esimerkki: tämän sivuston etusivulla on 6 schema-tyyppiä (Organization, WebSite, WebPage, BreadcrumbList, Person, LocalBusiness) ja jokaisella artikkelilla BlogPosting + FAQPage. Toteutuksen voi tarkistaa auditointiraportista.
Sivuarkkitehtuuri ja sisäinen linkitys
Sivuarkkitehtuuri tarkoittaa miten sivut on järjestetty ja miten ne linkittävät toisiinsa. Hyvä arkkitehtuuri palvelee sekä käyttäjiä (löytävät etsimänsä) että Googlebotia (crawlaa tehokkaasti).
Crawl depth
Crawl depth kertoo, kuinka monta klikkausta etusivulta vaaditaan tietylle sivulle pääsemiseksi. Yleissääntö: tärkeät sivut pitäisi olla saavutettavissa enintään kolmella klikkauksella.
Sisäinen linkitys
Sisäiset linkit jakavat link equityä (sivun “arvovaltaa”) sivulta toiselle. Käytännön periaatteet:
- Jokaisella sivulla vähintään yksi sisäinen linkki (ei orphan-sivuja)
- Ankkuriteksti on kuvaava: “lue lisää hakukoneoptimoinnista” on parempi kuin “klikkaa tästä”
- Linkitä aiheenmukaisesti: SEO-artikkeli linkittää toisiin SEO-artikkeleihin ja SEO-palvelusivulle
- Navigaatio on johdonmukainen: header, footer ja breadcrumbit muodostavat sivuston rungon
Pillar-cluster-malli
Tehokas tapa järjestää sisältö on pillar-cluster-malli:
- Pillar-sivu kattaa laajan aiheen kokonaisuutena
- Klusterisivut syventävät yksittäisiä osa-alueita
- Pillar linkittää kaikkiin klustereihin, klusterit linkittävät takaisin pillariin
- Palvelusivu on konversion kohde, johon sekä pillar että klusterit ohjaavat
Tämä rakenne osoittaa Googlelle, että sivusto on aiheensa asiantuntija (topical authority).
JavaScript-renderöinti
Google pystyy renderöimään JavaScriptiä (eli suorittamaan sivuston JS-koodin ja näkemään lopputuloksen), mutta se tekee sen viiveellä. JavaScript-sisältö saattaa indeksoitua päiviä tai viikkoja myöhemmin kuin staattinen HTML.
Käytännön vaikutukset
- Client-side rendering (CSR): React SPA, jossa sisältö renderöidään selaimessa. Google näkee sen, mutta viiveellä. Huonoin vaihtoehto SEO:lle.
- Server-side rendering (SSR): Palvelin tuottaa valmiin HTML:n jokaisella pyynnöllä. Google näkee sisällön heti.
- Static site generation (SSG): Build-vaiheessa tuotettu valmis HTML. Paras vaihtoehto SEO:lle. Astro, Hugo, Next.js (static export).
Jos sivustosi käyttää Reactia, Vueta tai Angularia, varmista SSR tai SSG. Puhdas CSR on SEO-riski.
Tarkistus
Google Search Consolen URL Inspection > “View Tested Page” näyttää, mitä Google näkee renderöinnin jälkeen. Vertaa tätä selaimen DevToolsin JavaScript-poistotilaan (Chrome: Settings > Debugger > Disable JavaScript).
Hreflang ja monikielisyys
Jos sivustolla on useita kieliversioita, hreflang-tagit kertovat Googlelle mikä sivu on millä kielellä ja mitkä sivut ovat toistensa käännöksiä.
<link rel="alternate" hreflang="fi" href="https://domain.fi/sivu/" />
<link rel="alternate" hreflang="en" href="https://domain.fi/en/page/" />
<link rel="alternate" hreflang="x-default" href="https://domain.fi/sivu/" />
Ilman hreflangia Google saattaa näyttää väärän kieliversion hakijalle. X-default kertoo, mikä versio näytetään käyttäjille joille mikään spesifi kieliversio ei sovi.
Yksikielisellä sivustolla hreflang ei ole välttämätön, mutta sen lisääminen valmiiksi helpottaa tulevaa laajennusta.
Redirect-hallinta
Uudelleenohjaukset ovat väistämättömiä: URL-rakenne muuttuu, sivuja poistetaan, sisältöä yhdistetään. Oikein tehtyinä ne eivät aiheuta ongelmia.
| Tyyppi | Milloin käytetään |
|---|---|
| 301 (pysyvä) | Sisältö on siirtynyt pysyvästi. Siirtää link equityn kohteeseen. |
| 302 (väliaikainen) | Sisältö on väliaikaisesti toisessa osoitteessa. Ei siirrä link equityä. |
| Redirect-ketju | A → B → C. Jokainen hyppy menettää pienen osan link equityä. Lyhennä: A → C. |
| Redirect-looppi | A → B → A. Google lopettaa crawlauksen. Rikkoo sivun indeksoinnin. |
Tarkista redirect-tilanne Screaming Frogilla: Response Codes > Internal Redirection (3xx).
Teknisen SEOn tarkistuslista
Priorisoitu lista jokaisen sivuston omistajan tarkistettavaksi:
Kriittinen (tarkista heti)
- Google Search Console on käytössä ja vahvistettu
- Sivut indeksoituvat (GSC Coverage-raportti)
- HTTPS toimii ja HTTP ohjaa 301:llä HTTPS:ään
- Robots.txt ei estä tärkeitä sivuja
- XML-sitemap on olemassa ja lähetetty GSC:hen
- Ei 404-virheitä sisäisissä linkeissä
Tärkeä (tarkista kuukausittain)
- Core Web Vitals vihreällä (LCP < 2,5s, INP < 200ms, CLS < 0,1)
- Kaikilla sivuilla on self-referencing canonical
- Kaikilla sivuilla on title, H1 ja meta description
- Kuvilla on alt-teksti ja width/height
- Ei redirect-ketjuja tai -looppeja
- Schema validoitu ilman virheitä
Hyvä tietää (tarkista kvartaaleittain)
- Tietoturvaheaderit (HSTS, CSP, X-Content-Type-Options)
- SPF ja DMARC DNS-tietueissa
- Orphan-sivuja ei ole (jokainen sivu saa vähintään yhden sisäisen linkin)
- Crawl depth alle 4 tärkeille sivuille
- Hreflang oikein (jos monikielinen)
Työkalut
| Työkalu | Mitä tekee | Hinta |
|---|---|---|
| Google Search Console | Indeksointi, kyselyt, CWV kenttädata, URL Inspection | Ilmainen |
| PageSpeed Insights | CWV lab-mittaukset, optimointiehdotukset | Ilmainen |
| Screaming Frog | Sivuston crawlaus: linkit, canonicalit, schemat, statuskoodit | Ilmainen (500 URL), Pro 279 $/v |
| Google Rich Results Test | Schema-validointi ja rich result -esikatselu | Ilmainen |
| Ahrefs Site Audit | Automaattinen tekninen auditointi | Alkaen 29 $/kk (Starter) |
| Chrome DevTools | Lighthouse, Network-analyysi, JS-debuggaus | Ilmainen |
Useimmille pk-yrityksille riittävät ilmaiset työkalut: GSC + PageSpeed Insights + Screaming Frog (500 URL:n ilmaisversio).
Tämä artikkeli on osa hakukoneoptimoinnin opasta. Lue myös: Avainsanatutkimus: käytännön opas ja Backlink-strategiat 2026.
Ilmainen kartoitus