Black Friday -viikot: kaikki tilaukset 40 % halvemmalla! 40 % alennus kaikista maksullisista paketeista · voimassa 30.11.2026 asti Katso hinnat →
Logo

Miten QR-koodi oikeasti toimii? Tekniikka pikselimosaiikin takana

29.08.2026 7 min Lukuaika
Miten QR-koodi oikeasti toimii? Tekniikka pikselimosaiikin takana

Nopea skannaus älypuhelimen kameralla riittää – ja verkkosivu aukeaa, wifi yhdistyy tai vCard tallentuu osoitekirjaan. Se, mikä arjessa tuntuu taikuudelta, on todellisuudessa äärimmäisen hienostunut yhdistelmä tietojenkäsittelytiedettä, matematiikkaa ja optiikkaa.

Mutta miten pitkä verkko-osoite tai tekstinpätkä oikeastaan muuttuu tuoksi tunnusomaiseksi mustavalkoiseksi kuvioksi? Missä data koodissa piilee, ja miksi kamera tunnistaa sisällön, vaikka QR-koodi olisi vinossa tai hieman vaurioitunut?

Tässä artikkelissa käymme vaihe vaiheelta läpi, miten Quick Response (QR) -koodi toimii.

1. Perusperiaate on yksinkertainen: merkit muutetaan nolliksi ja ykkösiksi.

Tietokoneet puhuvat binäärikieltä eli ymmärtävät vain nollia ja ykkösiä. Ennen kuin tieto voidaan esittää QR-koodissa kuviona, se täytyy siis ensin muuttaa biteiksi. Tallennustilan säästämiseksi QR-ohjelmisto käyttää eri koodaustiloja:

  1. Numeerinen tila: vain numeroille (0–9). Erittäin tehokas, koska kolme numeroa yhdistetään kymmeneksi bitiksi.
  2. Aakkosnumeerinen tila: numeroille, isoille kirjaimille ja valituille erikoismerkeille.
  3. Tavutila: yleiselle tekstille, pienille kirjaimille, ääkkösille (UTF-8) ja URL-osoitteille.
  4. Kanji-tila: erityisesti pakattu japanilaisille merkeille.

Kurkistus kulissien taakse näyttää, miten ”QR”:stä tulee binäärikoodia.

Ymmärtääksemme, kuinka tilatehokas QR-koodi on, tarkastellaan aakkosnumeerista tilaa. Siinä jokaiselle merkille annetaan kiinteä numeroarvo (A = 10, B = 11, ..., Q = 26, R = 27).

Jotta jokaista kirjainta ei tarvitsisi tallentaa erikseen, algoritmi yhdistää aina kaksi merkkiä.

  1. Merkkien Q (26) ja R (27) arvoista lasketaan: $26 \times 45 + 27 = 1197$.
  2. Luku 1197 esitetään 11-bittisenä binäärilukuna: 10010101101.

Kaksi kirjainta QR tuottavat siis tasan 11 bittiä nollia ja ykkösiä. Jos merkkijonon loppuun jää yksittäinen kirjain, se koodataan 6 bitillä (esim. $Q \rightarrow 26 \rightarrow 011010$).

2. Tie binäärikoodista valmiiseen kuviokuvaan

Kun tekstisi on käännetty nollien ja ykkösten jonoksi, se käy läpi useita teknisiä käsittelyvaiheita:

[ Syötteesi ] (esim. ”https://qrown.io”)
│
▼
[ Tila-analyysi & binäärikoodaus ] (Merkit muutetaan nolliksi ja ykkösiksi)
│
▼
[ Otsake & metatiedot ] (Tiedot datan pituudesta ja tilasta lisätään)
│
▼
[ Virheenkorjauksen laskenta ] (Reed-Solomon-koodit luodaan)
│
▼
[ Sijoittelu ruudukkoon ] (Bitit jaetaan oikeasta alakulmasta ylöspäin)
│
▼
[ Maskaus ] (Matemaattinen suodatin estää häiritsevät kuviot)
│
▼
[ Valmis QR-koodi ] (Musta = 1, valkoinen = 0)

Vaihe A: Lisää teknistä dataa ja virheenkorjaus

Sisältösi sisältävä nollien ja ykkösten jono ei ole koodin ainoa osa. Hyötykuorman eteen lisätään otsake. Se kertoo skannerille: ”Huomio, tässä tulee tavutilassa oleva teksti, jonka pituus on 25 merkkiä!”

Seuraavaksi matemaattinen menetelmä – niin sanottu Reed-Solomon-virheenkorjaus – laskee ylimääräisiä pariteettibittejä. Ne varmistavat, että koodi on luettavissa, vaikka jopa noin 30 % datasta (taso H) olisi peitossa tai vaurioitunut (esim. keskelle sijoitetun yrityslogon vuoksi).

Vaihe B: Jako ruudukkoon (moduulit)

QR-koodin yksittäisiä ruutuja kutsutaan moduuleiksi. Pääsääntöisesti:

  1. 0 = valkoinen moduuli
  2. 1 = musta moduuli

Bittejä ei kuitenkaan kirjoiteta yksinkertaisesti rivi riviltä vasemmasta yläkulmasta oikeaan alakulmaan. Datan koodaus alkaa oikeasta alakulmasta ja mutkittelee ruudukon läpi kahden moduulin kapeina sarakkeina vuorotellen ylös ja alas. Varatut toiminnalliset alueet (kuten kulmat) ohitetaan automaattisesti.

Siksi valmiista QR-koodista ei voi koskaan osoittaa yksittäistä mustaa ruutua ja sanoa: ”Tämä on verkko-osoitteen h-kirjain.”

Vaihe C: Maskauskikka (miksi 1 ei ole aina musta)

Jos bitit piirrettäisiin suoraan, sattumalta voisi syntyä isoja mustia lohkoja, pitkiä valkoisia raitoja tai harhaanjohtavia kuvioita, jotka hämäisivät kameraa.

Siksi ohjelmisto asettaa matriisin päälle maskikuvion. Standardoituja maskeja on yhteensä kahdeksan. Matemaattisen XOR-operaation avulla maski kääntää tietyt bitit:

  1. 0:sta tulee 1 (valkoisesta tulee musta)
  2. 1:stä tulee 0 (mustasta tulee valkoinen)

Skanneri päättelee kulmaneliöiden vieressä olevasta formaattitiedosta, mitä maskia käytettiin, ja kumoaa tämän vaiheen dekoodauksessa sekunnin murto-osassa.

3. QR-koodin anatomia: mitä yksittäiset kuviot tarkoittavat?

Kun katsot QR-koodia tarkemmin, se näyttää satunnaiselta mosaiikilta. Todellisuudessa jokainen elementti on kuitenkin sijoitettu tiukasti ISO-standardin mukaan. Rakennetta voi verrata kasvojen anatomiaan. Tietyt piirteet ovat aina samassa paikassa, jotta älypuhelin tunnistaa koodin yhdellä silmäyksellä.

Klassinen QR-koodi jakautuu seuraaviin päävyöhykkeisiin:

1. Kolme isoa kulmaneliötä (paikannuskuviot / finder patterns)

  1. Ne sijaitsevat vasemmassa yläkulmassa, oikeassa yläkulmassa ja vasemmassa alakulmassa.
  2. Mitä ne tekevät: Ne ovat QR-koodin silmiinpistävin piirre. Nämä kolme ankkuripistettä kertovat kameralle heti: ”Huomio, tässä on QR-koodi!” Ne ilmoittavat ohjelmistolle välittömästi sijainnin, koon ja kallistuskulman, joten kamera tunnistaa, pidetäänkö älypuhelinta suorassa vai vinossa.

2. Pisteviivat (ajoituskuviot / timing patterns)

  1. Ne kulkevat kolmen kulmaneliön välissä – vaakasuunnassa vasemman ja oikean yläkulman välillä, pystysuunnassa vasemman ylä- ja alakulman välillä. Ne määrittävät ruudukon (moduulikoon); suunta saadaan kolmesta kulmaneliöstä.
  2. Mitä ne tekevät: Nämä viivat koostuvat vuorottelevista mustista ja valkoisista moduuleista. Ne toimivat skannerille kuin viivoitin: näiden pisteiden avulla ohjelmisto laskee ruudukon koon (versiosta 1, jossa on 21 × 21 ruutua, versioon 40, jossa on 177 × 177 ruutua).

3. Pienet sisäneliöt (kohdistuskuviot / alignment patterns)

  1. Ne sijaitsevat oikealla alhaalla ja monimutkaisemmissa koodeissa koko kuvion alueella.
  2. Mitä ne tekevät: Nämä pienemmät neliöt toimivat digitaalisena tähtäimenä. Ne auttavat skanneria korjaamaan vääristymiä esimerkiksi silloin, kun QR-koodi on painettu kaarevaan limsatölkkiin tai esite on rypistynyt.

4. Ohjausvyöhyke (formaattitieto)

  1. Se sijaitsee suoraan kolmen ison kulmaneliön vieressä.
  2. Mitä se tekee: Tänne on tallennettu skannerin tekniset ohjeet. Näihin muutamaan pikseliin on koodattu kaksi ratkaisevaa tietoa: 1. mitä virheenkorjaustasoa (L, M, Q tai H) käytetään ja mitä maskikuviota dataan on sovellettu.

5. Näkymätön suojareunus (quiet zone)

  1. Tämä on koko QR-koodia ympäröivä täysin valkoinen, painamaton reunus.
  2. Tehtävä: Jotta kamera voi tunnistaa koodin ulkoreunat tarkasti, se tarvitsee turvaetäisyyden tekstiin, kuviin tai taustagrafiikkaan. Reunuksen täytyy olla vähintään neljän moduulin (pikselin leveyden) levyinen. Jos suoja-alue puuttuu, kamera kieltäytyy usein skannaamasta.

4. Mitä tapahtuu, kun skannaat QR-koodin älypuhelimella?

Kun osoitat kameralla QR-koodia, taustalla tapahtuvat seuraavat vaiheet:

  1. Haku: Kamera etsii videokuvasta kolmea isoa paikannuskuviota.
  2. Muunnos: Ohjelmisto laskee perspektiivin ja ”oikaisee” digitaalisesti vinosta kuvatun kuvan.
  3. Maskin poisto: Ruudukkojärjestelmä lukee formaattitiedon, tunnistaa maskikuvion ja poistaa maskin.
  4. Virheenkorjauksen soveltaminen: Naarmut, epätarkkuudet ja peittymät korjataan matemaattisesti.
  5. Dekoodaus: Nollat ja ykköset muutetaan tilasääntöjen mukaan takaisin luettavaksi tekstiksi, numeroiksi tai ohjauskomennoiksi.
  6. Toiminnon suoritus: Älypuhelin tunnistaa datatyypin (esim. https:// URL-osoitteelle, WIFI: kirjautumistiedoille tai BEGIN:VCARD yhteystiedoille) ja ehdottaa sopivaa sovellusta.

Tekninen syväsukellus: tärkeimmät kysymykset selitettyinä

Tarvitaanko QR-koodin skannaamiseen internetyhteys?

Ei itse skannaukseen. Pikselien muuntaminen tekstiksi tapahtuu paikallisesti älypuhelimessasi. Jos sisältö on pelkkää tekstiä, vCard tai wifi-kirjautumistiedot, kaikki toimii täysin offline-tilassa. Datayhteyttä tarvitset vasta, kun koodi sisältää verkko-osoitteen (URL) ja haluat avata sen.

Onko QR-koodi salattu?

Ei. QR-koodi on vain koodattu, ei salattu. Mikä tahansa yleinen QR-koodiskanneri voi lukea sen sisältämän datan. Luottamuksellisia tietoja, kuten salasanoja, pankkitietoja tai henkilökohtaisia PIN-koodeja, ei siksi pidä koskaan tallentaa suojaamattomina tavalliseen QR-koodiin.

Miksi jotkin QR-koodit näyttävät paljon hienojakoisemmilta ja tiheämmiltä kuin toiset?

Mitä enemmän dataa tallennetaan suoraan koodiin – esimerkiksi pitkä teksti lyhyen linkin sijaan – sitä enemmän moduuleja tarvitaan. Koodi siirtyy silloin suurempaan versioon (versiosta 1, jossa on 21 × 21 moduulia, versioon 40, jossa on 177 × 177 moduulia).

Staattinen vs. dynaaminen: miksi dynaamiset koodit pysyvät kompakteina

  1. Staattiset QR-koodit: Tallentavat lopullisen kohteen (esim. 150 merkin pituisen URL-osoitteen) suoraan. Kuviosta tulee hyvin tiheä ja vaikeampi skannata.
  2. Dynaamiset QR-koodit: Tallentavat vain erittäin lyhyen uudelleenohjauslinkin (esim. qron.ch/12da7). Koodi pysyy visuaalisesti hyvin yksinkertaisena ja helposti skannattavana, ja varsinaisen kohteen voi muuttaa palvelimella milloin tahansa ilman, että koodia tarvitsee painaa uudelleen.

Tarkistuslista toimiville QR-koodeille

Jos luot QR-koodeja itse tai teetät niiden suunnittelun, pidä mielessä seuraavat perusasiat:

  1. Käytä lyhytlinkkejä: Käytä dynaamisia QR-koodeja, jotta moduulitiheys pysyy pienenä.
  2. Säilytä kontrasti: Valitse tumma kuvio vaalealle taustalle (käänteiset koodit voivat tuottaa ongelmia joillekin vanhemmille kameroille).
  3. Huomioi reuna-alue: Jätä vähintään 4 moduulin marginaali tekstiin, leikkausreunoihin tai grafiikkaan.
  4. Säädä virheenkorjaus: Logo kuluttaa virheenkorjauksen varaa – mitä isompi logo, sitä korkeampi tason pitäisi olla. Dynaamisissa koodeissa QRown asettaa tason itse ja tarkistaa skannattavuuden, kun olet muotoillut koodin.

Usein kysytyt kysymykset (UKK)

Kuinka monesta moduulista QR-koodi koostuu?

Pienimmät QR-koodit (versio 1) koostuvat 21 × 21 moduulista eli 441 ruudusta. Suurimmassa versiossa (versio 40) on 177 × 177 moduulin ruudukko eli 31 329 ruutua.

Voiko QR-koodi sisältää viruksia tai haittaohjelmia?

QR-koodi itsessään sisältää vain tekstiä eikä voi suoraan suorittaa haitallista ohjelmakoodia. Se voi kuitenkin johtaa huijaavalle tietojenkalastelusivulle tai haitalliseen lataukseen. Tarkista siksi aina verkkotunnuksen esikatselu älypuhelimellasi ennen avaamista!

Mikä tila säästää eniten tilaa QR-koodissa?

Tehokkain on numeerinen tila (vain numerot), seuraavana aakkosnumeerinen tila. Tavutila (yleisille URL-osoitteille ja erikoismerkeille) puolestaan vaatii eniten tallennustilaa merkkiä kohden.

Lisää artikkeleita