# Base64-kooderi ja -dekooderi

> Koodaa/dekoodaa tekstiä Base64:ksi verkossa. Tukee UTF-8-merkkejä ja URL-turvallista muotoa. Selittää koodauksen. Tehokas ja ilmainen työkalu.

URL: https://acrafto.com/fi/base64-kooderi-dekooderi/

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

Tarvitsetko luettavan tekstin muuntamista Base64-muotoon käytettäväksi HTTP-otsakkeissa, tai päinvastoin purkaa API-tokenin sisältöä? Meidän **Base64-tekstin kooderi ja dekooderi** on erikoistunut työkalu tekstimerkkijonojen käsittelyyn, joka selviää hankalistakin asioista, kuten diakriittisista merkeistä tai erikoismerkeistä.

> **Käsitteletkö kuvia?**  
> Jos koodisi alkaa `data:image/png...` tai haluat muuntaa tiedoston tekstiksi, tämä työkalu näyttää sinulle vain merkityksettömiä merkkejä. Käytä erikoistunutta työkalua kuvien muuntamiseen.

## Miten Base64-muoto toimii?

Monet käyttävät Base64:ää päivittäin, mutta harva tietää, miten se toimii “konepellin alla”. Kyse ei ole taikuudesta, vaan yksinkertaisesta bittimatematiikasta.

Tavallinen teksti tietokoneessa tallennetaan 8 bitin (1 tavun) paloina. Base64 käyttää kuitenkin “aakkostoa”, jossa on 64 merkkiä (`A-Z`, `a-z`, `0-9`, `+`, `/`). Koska `2^6 = 64`, yksi Base64-merkki edustaa tarkalleen **6 bittiä** tietoa.

**Muunnosprosessi (Algoritmi):**

1. Otetaan kolme merkkiä tekstistäsi (3 × 8 bittiä = 24 bittiä).
2. Nämä 24 bittiä jaetaan neljään 6 bitin ryhmään.
3. Jokaiselle ryhmälle määritetään merkki Base64-taulukosta.

**Seuraus:** Koska kolmesta merkistä tehdään neljä merkkiä, tuloksena oleva Base64-merkkijono on aina noin **33 % pidempi** kuin alkuperäinen teksti.

## Merkistöongelma: Miksi tavalliset Base64-muuntimet tuhoavat erikoismerkkejä?

Jos olet joskus yrittänyt koodata sanan “Kůň” selaimen konsolissa käyttämällä funktiota `btoa('Kůň')`, olet todennäköisesti saanut virheilmoituksen: *String contains characters outside of the Latin1 range.*

Base64 suunniteltiin alun perin 7-bittisille ASCII-merkeille. Suomen kielen ääkköset, emojit ja muut erikoissymbolit (UTF-8) vievät kuitenkin muistissa useampia tavuja (monitavuiset merkit).

- Kirjain `a` = 1 tavu.
- Kirjain `ö` = 2 tavua.
- Emoji 🚀 = 4 tavua.

Työkalumme ratkaisee tämän ongelman. Ennen Base64-koodausta teksti muunnetaan oikein UTF-8-tavujonoksi. Tämän ansiosta voit koodata JSON-objekteja, suomenkielisiä tekstejä ja moderneja symboleja turvallisesti ilman tietojen vaurioitumisen riskiä.

## Missä Base64-tekstin koodausta käytetään?

Vaikka Base64-kuvia käytetään pääasiassa upottamiseen CSS:ään/HTML:ään, teksti-Base64:lla on täysin erilaisia käyttökohteita taustajärjestelmissä:

### 1\. HTTP Basic Authentication

Kun kirjaudut API:in, otsake näyttää usein tältä: `Authorization: Basic a8OkeXR0w6Rqw6Q6c2FsYXNhbmE=` Tämän koodin takana piilee yksinkertaisesti yhdistetty käyttäjätunnus ja salasana muodossa `käyttäjä:salasana`. Työkalumme avulla voit helposti luoda tai tarkistaa näitä otsakkeita.

### 2\. JSON Web Tokens (JWT)

Nykyaikaiset verkkosovellukset käyttävät kirjautumiseen ns. JWT:tä. Tällainen tokeni näyttää kolmelta pitkältä, pisteellä erotetulta merkkijonolta. Tietoja sisältävä osa (Payload) on tavallinen Base64-koodattu JSON-objekti.

- **Vinkki:** Kokeile liittää tähän JWT-tokenisi keskiosa ja dekoodaa se. Näet tarkalleen, mitä tietoja sovellus sinusta tallentaa (esim. käyttäjätunnus, vanhenemisaika).

### 3\. Konfiguraatiotiedostot (Kubernetes Secrets)

Alustat kuten Kubernetes tallentavat salaiset tiedot (Secrets) konfiguraatio-YAML-tiedostoihin Base64-muodossa. Tämä ei ole salausta, vaan tapa tallentaa binääridataa tai tekstiä ongelmallisilla merkeillä (rivinvaihdot, lainausmerkit) tekstitiedostoon.

## Mitä on “URL-turvallinen Base64-koodaus” ja miksi se on tärkeää?

Standardi Base64-aakkosto sisältää merkit `+` (plus) ja `/` (vinoviiva). Molemmilla näillä merkeillä on erityinen merkitys URL-osoitteissa:

- `/` erottaa hakemistoja.
- `+` tulkitaan usein välilyönniksi.

Jos lähettäisit standardin Base64:n URL-parametrina (esim. `site.com?token=ab/cd+ef`), palvelin saattaisi lukea datan väärin.

**Ratkaisu (URL-turvallinen tila):** Kytkimemme aktivoi **Base64URL**\-variantin (RFC 4648 mukaan), joka suorittaa seuraavat muutokset:

- `+` muuttuu merkiksi `-` (viiva).
- `/` muuttuu merkiksi `_` (alaviiva).
- Lopusta poistetaan merkit `=` (täyte), joita ei tarvita URL-osoitteissa.

---

## Myytti: Base64 ei ole salausta!

On tärkeää ymmärtää perustavanlaatuinen ero, jonka aloittelijat usein sekoittavat:

1. **Koodaus (Encoding - Base64):** Käytetään tiedonsiirtoon. Se on kuin pakattaisiin tavara matkalaukkuun, jotta se ei rikkoudu matkalla. Kuka tahansa löytää laukun, voi avata sen (dekoodata) ja nähdä sisällön. **Se ei ole turvallista luottamuksellisille tiedoille.**
2. **Salaus (Encryption - AES, RSA):** Lukitsee tiedot avaimella. Ilman avainta et pääse käsiksi sisältöön.
3. **Hajautus (Hashing - SHA, MD5):** Yksisuuntainen prosessi (esim. salasanojen tallentamiseen). Tuloksesta ei voi saada alkuperäistä tekstiä.

*Jos sinun on lähetettävä salasana tai arkaluontoinen tieto, pelkkä Base64 ei riitä. Sinun on käytettävä HTTPS:ää (SSL/TLS), joka salaa tiedonsiirron.*

---

## Usein kysytyt kysymykset (UKK)

### Mitä "=" -merkit merkkijonon lopussa tarkoittavat?

Se on ns. "täyte" (padding). Koska Base64 koodaa dataa 3 merkin ryhmissä, alkuperäisen tekstin pituus ei välttämättä ole jaollinen kolmella. \`=\` -merkit lisätään loppuun, jotta dekooderi tietää, kuinka monta bittiä sen tulee jättää huomiotta lopusta.

### Miksi dekoodattu teksti näyttää "sekasotkulta"?

Todenäköisesti yrität dekoodata dataa, joka ei ole tekstiä. Jos Base64-merkkijono edustaa pakattua tiedostoa (ZIP), kuvaa tai salattuja tietoja, muuntaminen tekstiksi (UTF-8) ei ole järkevää. Yritä selvittää datan alkuperä.

### Toimiiko työkalu offline-tilassa?

Kyllä. Kaikki muunnoslogiikka on kirjoitettu JavaScriptillä ja se toimii suoraan selaimessasi. Kun sivu on latautunut, voit katkaista internet-yhteyden ja työkalu toimii edelleen. Tietojasi ei lähetetä mihinkään.

## Other languages

- Čeština (cs): [Base64 Encoder a Decoder](https://acrafto.com/cs/base64-decoder-encoder/) ([Markdown](https://acrafto.com/cs/base64-decoder-encoder/index.md))
- Slovenčina (sk): [Base64 kódovač a dekódovač](https://acrafto.com/sk/base64-kodovac-dekodovac-online/) ([Markdown](https://acrafto.com/sk/base64-kodovac-dekodovac-online/index.md))
- English (en): [Base64 Encoder and Decoder](https://acrafto.com/en/base64-encoder-decoder/) ([Markdown](https://acrafto.com/en/base64-encoder-decoder/index.md))
- Deutsch (de): [Base64 Encoder und Decoder](https://acrafto.com/de/base64-encoder-decoder-online/) ([Markdown](https://acrafto.com/de/base64-encoder-decoder-online/index.md))
- Français (fr): [Encodeur et décodeur Base64](https://acrafto.com/fr/encodeur-decodeur-base64/) ([Markdown](https://acrafto.com/fr/encodeur-decodeur-base64/index.md))
- Español (es): [Codificador y decodificador Base64](https://acrafto.com/es/codificador-base64-decodificador-online/) ([Markdown](https://acrafto.com/es/codificador-base64-decodificador-online/index.md))
- Italiano (it): [Encoder e decoder Base64](https://acrafto.com/it/encoder-decoder-base64-online/) ([Markdown](https://acrafto.com/it/encoder-decoder-base64-online/index.md))
- Português (pt): [Codificador e decodificador Base64](https://acrafto.com/pt/encoder-decoder-base64-online/) ([Markdown](https://acrafto.com/pt/encoder-decoder-base64-online/index.md))
- Nederlands (nl): [Base64 encoder en decoder](https://acrafto.com/nl/base64-encoder-decoder/) ([Markdown](https://acrafto.com/nl/base64-encoder-decoder/index.md))
- Polski (pl): [Koder i dekoder Base64](https://acrafto.com/pl/koder-dekoder-base64-online/) ([Markdown](https://acrafto.com/pl/koder-dekoder-base64-online/index.md))
- Română (ro): [Base64 encoder și decoder](https://acrafto.com/ro/codor-decodor-base64/) ([Markdown](https://acrafto.com/ro/codor-decodor-base64/index.md))
- Magyar (hu): [Base64 kódoló és dekódoló](https://acrafto.com/hu/base64-kodolo-dekodolo-online/) ([Markdown](https://acrafto.com/hu/base64-kodolo-dekodolo-online/index.md))
- Ελληνικά (el): [Κωδικοποίηση και αποκωδικοποίηση Base64](https://acrafto.com/el/base64-encoder-decoder/) ([Markdown](https://acrafto.com/el/base64-encoder-decoder/index.md))
- Български (bg): [Base64 енкодер и декодер](https://acrafto.com/bg/base64-enkoder-dekoder-onlain/) ([Markdown](https://acrafto.com/bg/base64-enkoder-dekoder-onlain/index.md))
- Hrvatski (hr): [Base64 koder i dekoder](https://acrafto.com/hr/base64-koder-dekoder/) ([Markdown](https://acrafto.com/hr/base64-koder-dekoder/index.md))
- Slovenščina (sl): [Base64 kodirnik in dekodirnik](https://acrafto.com/sl/base64-kodirnik-dekodirnik/) ([Markdown](https://acrafto.com/sl/base64-kodirnik-dekodirnik/index.md))
- Eesti (et): [Base64 kodeerija ja dekodeerija](https://acrafto.com/et/base64-teisendaja/) ([Markdown](https://acrafto.com/et/base64-teisendaja/index.md))
- Latviešu (lv): [Base64 kodētājs un dekodētājs](https://acrafto.com/lv/base64-kodetajs-dekodetajs/) ([Markdown](https://acrafto.com/lv/base64-kodetajs-dekodetajs/index.md))
- Lietuvių (lt): [Base64 koduotuvas ir dekoduotuvas](https://acrafto.com/lt/base64-koduotuvas-dekoduotuvas/) ([Markdown](https://acrafto.com/lt/base64-koduotuvas-dekoduotuvas/index.md))
- Svenska (sv): [Base64 encode och decode](https://acrafto.com/sv/base64-kodare-avkodare-online/) ([Markdown](https://acrafto.com/sv/base64-kodare-avkodare-online/index.md))
- Dansk (da): [Base64 encoder og dekoder](https://acrafto.com/da/base64-encoder-dekoder-online/) ([Markdown](https://acrafto.com/da/base64-encoder-dekoder-online/index.md))
- Norsk (no): [Base64-enkoder og -dekoder](https://acrafto.com/no/base64-enkoder-dekoder/) ([Markdown](https://acrafto.com/no/base64-enkoder-dekoder/index.md))
- Українська (uk): [Base64 кодер і декодер](https://acrafto.com/uk/base64-koder-dekoder-onlajn/) ([Markdown](https://acrafto.com/uk/base64-koder-dekoder-onlajn/index.md))
- Русский (ru): [Base64 кодировщик и декодировщик](https://acrafto.com/ru/base64-koder-dekoder/) ([Markdown](https://acrafto.com/ru/base64-koder-dekoder/index.md))
- Српски (sr): [Base64 enkoder i dekoder](https://acrafto.com/sr/base64-enkoder-dekoder-online/) ([Markdown](https://acrafto.com/sr/base64-enkoder-dekoder-online/index.md))
- Македонски (mk): [Base64 енкодер и декодер](https://acrafto.com/mk/base64-converter/) ([Markdown](https://acrafto.com/mk/base64-converter/index.md))
- Bosanski (bs): [Base64 koder i dekoder](https://acrafto.com/bs/base64-koder-dekoder/) ([Markdown](https://acrafto.com/bs/base64-koder-dekoder/index.md))
- Shqip (sq): [Base64 kodues dhe dekodues](https://acrafto.com/sq/kodues-dekodues-base64-online/) ([Markdown](https://acrafto.com/sq/kodues-dekodues-base64-online/index.md))
- Türkçe (tr): [Base64 kodlayıcı ve çözücü](https://acrafto.com/tr/base64-kodlayici-cozucu-online/) ([Markdown](https://acrafto.com/tr/base64-kodlayici-cozucu-online/index.md))
- 日本語 (ja): [Base64エンコード・デコード](https://acrafto.com/ja/base64-encoder-decoder/) ([Markdown](https://acrafto.com/ja/base64-encoder-decoder/index.md))
- 한국어 (ko): [Base64 인코딩 디코딩](https://acrafto.com/ko/base64-encoder-decoder/) ([Markdown](https://acrafto.com/ko/base64-encoder-decoder/index.md))
- العربية (ar): [ترميز وفك ترميز Base64](https://acrafto.com/ar/base64-encoder-decoder/) ([Markdown](https://acrafto.com/ar/base64-encoder-decoder/index.md))
- हिन्दी (hi): [Base64 एन्कोडर और डिकोडर](https://acrafto.com/hi/base64-encoder-decoder-online/) ([Markdown](https://acrafto.com/hi/base64-encoder-decoder-online/index.md))
- Bahasa Indonesia (id): [Base64 encode dan decode](https://acrafto.com/id/konverter-base64-online/) ([Markdown](https://acrafto.com/id/konverter-base64-online/index.md))
- Tiếng Việt (vi): [Mã hóa và giải mã Base64](https://acrafto.com/vi/base64-ma-hoa-giai-ma-online/) ([Markdown](https://acrafto.com/vi/base64-ma-hoa-giai-ma-online/index.md))
- ไทย (th): [เข้ารหัสและถอดรหัส Base64](https://acrafto.com/th/base64-encoder-decoder/) ([Markdown](https://acrafto.com/th/base64-encoder-decoder/index.md))
- עברית (he): [קידוד ופענוח Base64](https://acrafto.com/he/base64-encoder-decoder/) ([Markdown](https://acrafto.com/he/base64-encoder-decoder/index.md))
