Elder Futhark Rune Keyboard – Write in Runes with Meanings & Phonetics
Looking for a way to write in runes or explore the Elder Futhark alphabet?
This virtual rune keyboard lets you click and build words or phrases using the ancient runes themselves. Each symbol reveals its phonetic sound and traditional meaning—perfect for learning, crafting bindrunes, or simply appreciating the language of our ancestors.
Rune Keyboard – The Wicked Griffin
🔮 Your 3-Rune Daily Reading
Interpret My Runes
Elder Futhark Rune Keyboard
Type in runes, convert Latin text, or learn the meanings of each ancient symbol below.
Latin Text
Clear Convert to Runes Copy
Runic Text
Clear Convert to Latin Copy
Virtual Rune Keyboard
Selected Rune Information
Select a rune to see its details.
[tcb-script] const runes = [ { char: ‘ᚠ’, name: ‘Fehu’, latin: ‘F’, meaning: ‘Wealth, cattle, abundance’, pronunciation: ‘fay-who’ }, { char: ‘ᚢ’, name: ‘Uruz’, latin: ‘U’, meaning: ‘Strength, wild ox, endurance’, pronunciation: ‘oo-rooz’ }, { char: ‘ᚦ’, name: ‘Thurisaz’, latin: ‘TH’, meaning: ‘Giant, thorn, conflict’, pronunciation: ‘thoor-ee-saz’ }, { char: ‘ᚨ’, name: ‘Ansuz’, latin: ‘A’, meaning: ‘God, communication, wisdom’, pronunciation: ‘ahn-sooz’ }, { char: ‘ᚱ’, name: ‘Raidho’, latin: ‘R’, meaning: ‘Journey, travel, rhythm’, pronunciation: ‘rye-tho’ }, { char: ‘ᚲ’, name: ‘Kenaz’, latin: ‘K’, meaning: ‘Torch, fire, knowledge’, pronunciation: ‘ken-ahz’ }, { char: ‘ᚷ’, name: ‘Gebo’, latin: ‘G’, meaning: ‘Gift, exchange, partnership’, pronunciation: ‘gay-bo’ }, { char: ‘ᚹ’, name: ‘Wunjo’, latin: ‘W’, meaning: ‘Joy, pleasure, comfort’, pronunciation: ‘woon-yo’ }, { char: ‘ᚺ’, name: ‘Hagalaz’, latin: ‘H’, meaning: ‘Hail, disruption, change’, pronunciation: ‘hah-gah-lahz’ }, { char: ‘ᚾ’, name: ‘Nauthiz’, latin: ‘N’, meaning: ‘Need, constraint, friction’, pronunciation: ‘now-these’ }, { char: ‘ᛁ’, name: ‘Isa’, latin: ‘I’, meaning: ‘Ice, stillness, clarity’, pronunciation: ‘ee-sah’ }, { char: ‘ᛃ’, name: ‘Jera’, latin: ‘J’, meaning: ‘Year, harvest, cycle’, pronunciation: ‘yehr-ah’ }, { char: ‘ᛇ’, name: ‘Eihwaz’, latin: ‘EI’, meaning: ‘Yew tree, resilience, death’, pronunciation: ‘eye-wahz’ }, { char: ‘ᛈ’, name: ‘Perthro’, latin: ‘P’, meaning: ‘Mystery, chance, secrets’, pronunciation: ‘perth-row’ }, { char: ‘ᛉ’, name: ‘Algiz’, latin: ‘Z’, meaning: ‘Protection, elk, defense’, pronunciation: ‘all-geez’ }, { char: ‘ᛋ’, name: ‘Sowilo’, latin: ‘S’, meaning: ‘Sun, success, energy’, pronunciation: ‘soh-wee-lo’ }, { char: ‘ᛏ’, name: ‘Tiwaz’, latin: ‘T’, meaning: ‘Warrior, justice, honor’, pronunciation: ‘tee-wahz’ }, { char: ‘ᛒ’, name: ‘Berkano’, latin: ‘B’, meaning: ‘Birch, birth, femininity’, pronunciation: ‘ber-kah-no’ }, { char: ‘ᛖ’, name: ‘Ehwaz’, latin: ‘E’, meaning: ‘Horse, trust, loyalty’, pronunciation: ‘ay-wahz’ }, { char: ‘ᛗ’, name: ‘Mannaz’, latin: ‘M’, meaning: ‘Man, self, humanity’, pronunciation: ‘mahn-ahz’ }, { char: ‘ᛚ’, name: ‘Laguz’, latin: ‘L’, meaning: ‘Water, flow, intuition’, pronunciation: ‘lah-gooz’ }, { char: ‘ᛜ’, name: ‘Inguz’, latin: ‘NG’, meaning: ‘Fertility, gestation, potential’, pronunciation: ‘ing-wahz’ }, { char: ‘ᛞ’, name: ‘Dagaz’, latin: ‘D’, meaning: ‘Day, breakthrough, awakening’, pronunciation: ‘dah-gahz’ }, { char: ‘ᛟ’, name: ‘Othala’, latin: ‘O’, meaning: ‘Heritage, inheritance, homeland’, pronunciation: ‘oh-tha-la’ } ]; const keyboard = document.getElementById(‘keyboard’); const runeInfo = document.getElementById(‘runeInfo’); runes.forEach(rune => { const key = document.createElement(‘div’); key.className = ‘rune-key’; key.textContent = rune.char; key.title = `${rune.name}: ${rune.meaning}`; key.onclick = () => { document.getElementById(‘runicInput’).value += rune.char; runeInfo.innerHTML = ` <h2>${rune.char} – ${rune.name}</h2> <p><strong>Latin:</strong> ${rune.latin}</p> <p><strong>Meaning:</strong> ${rune.meaning}</p> <p><strong>Pronunciation:</strong> ${rune.pronunciation}</p> <p><a href=”https://thewickedgriffin.com/${rune.name.toLowerCase()}-rune-meaning” target=”_blank”>What does this mean?</a></p> `; }; keyboard.appendChild(key); }); function clearText(id) { document.getElementById(id).value = ”; } function copyText(id) { const el = document.getElementById(id); el.select(); document.execCommand(‘copy’); } function convertToRunes() { let text = document.getElementById(‘latinInput’).value.toUpperCase(); runes.forEach(r => { const pattern = new RegExp(r.latin, ‘g’); text = text.replace(pattern, r.char); }); document.getElementById(‘runicInput’).value = text; } function convertToLatin() { let runic = document.getElementById(‘runicInput’).value; runes.forEach(r => { const pattern = new RegExp(r.char, ‘g’); runic = runic.replace(pattern, r.latin); }); document.getElementById(‘latinInput’).value = runic; } function getThreeDailyRunes() { const today = new Date(); const seed = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate(); const rng = mulberry32(seed); const picked = []; while (picked.length < 3) { const index = Math.floor(rng() * runes.length); if (!picked.includes(index)) picked.push(index); } return picked.map(i => runes[i]); } function displayThreeRuneReading() { const labels = [‘Past’, ‘Present’, ‘Future’]; const runesPulled = getThreeDailyRunes(); const container = document.getElementById(‘threeRunePull’); container.innerHTML = ”; runesPulled.forEach((rune, i) => { const div = document.createElement(‘div’); div.className = ‘rune-card’; div.innerHTML = ` <div style=”font-size: 2.5em;”>${rune.char}</div> <div style=”font-weight: bold; font-family: ‘Cinzel’, serif;”>${labels[i]}</div> <div><strong>${rune.name}</strong></div> <div><em>${rune.pronunciation}</em></div> <div style=”font-size: 0.9em;”>${rune.meaning}</div> <a href=”https://thewickedgriffin.com/${rune.name.toLowerCase()}-rune-meaning” target=”_blank”>What does this mean?</a> `; container.appendChild(div); }); } function mulberry32(seed) { return function () { var t = seed += 0x6D2B79F5; t = Math.imul(t ^ t >>> 15, t | 1); t ^= t + Math.imul(t ^ t >>> 7, t | 61); return ((t ^ t >>> 14) >>> 0) / 4294967296; }; }function interpretRunes() { const runes = getThreeDailyRunes(); const labels = [‘Past’, ‘Present’, ‘Future’]; const message = runes.map((r, i) => `${labels[i]}: ${r.name} (${r.meaning})`).join(‘, ‘); const fullPrompt = `Interpret this Elder Futhark rune reading:n${message}.nSpeak in poetic but clear modern language. Respond like the voice of The Wicked Griffin – grounded, intuitive, witchy, and kind. Do not use reversed meanings.`; const chatBox = document.getElementById(“runeChat”); chatBox.innerHTML = “🔮 Contacting the spirits…”; fetch(“https://thewickedgriffin.com/wicked-interpreter.php”, { method: “POST”, headers: { “Content-Type”: “application/json” }, body: JSON.stringify({ message: fullPrompt }) }) .then(res => { if (!res.ok) { throw new Error(`HTTP error ${res.status}`); } return res.json(); }) .then(data => { console.log(“GPT Response:”, data); if (data.error) { chatBox.innerHTML = ` ❌ <strong>OpenAI Error:</strong><br> <pre>${JSON.stringify(data.error, null, 2)}</pre> `; } else if (data.choices && data.choices[0] && data.choices[0].message) { chatBox.innerHTML = ` <strong>🧙♀️ The Runes Say:</strong><br><br> ${data.choices[0].message.content} `; } else { chatBox.innerHTML = “❌ Something went wrong. GPT did not return a readable message.”; } }) .catch(err => { console.error(“Fetch error:”, err); chatBox.innerHTML = “❌ Something went wrong. The spirits are silent.”; });} displayThreeRuneReading(); [/tcb-script]
This tool is here anytime you want to connect with the runes—whether you’re spelling your name, writing a sigil, or just messing around with Old Norse vibes.
Keep it bookmarked, share it with your coven, and if you’re looking for handcrafted jewelry inspired by these very runes… you know where to find me.

