Pick a spread, draw runes from the bag, and read what each one says about its place in the layout.
See the codeDraw a rune reading with the Elder Futhark, right in your browser. Pick a spread, draw runes from the bag, and read what each one says about its place in the layout. No sign-up, no libraries, no images.

Choose one of four spreads, then draw the runes one at a time from the bag (or all at once). Each rune lands face up in its position, and you can click it for its meaning, advice and family. "Interpret Reading" lays the whole reading out as a story, position by position.
Runes are drawn without replacement, so a rune never appears twice in one reading.
Each rune on the board has a small speaker icon: click it to hear the name of the rune spoken aloud (Fehu, Uruz, Thurisaz...). It uses your browser's built-in speech voice, so there are no audio files to download and the voice depends on your device. Browsers without speech support simply do not show the icon.
Some traditions read only upright runes, so reversals are optional: tick Include reversed runes and each rune that can be reversed has an even chance of landing upside down. A reversed rune is shown turned over, marked in orange, and read for the shadow side of its meaning: a block, a delay or a lesson still to learn.
Nine of the 24 runes (Gebo, Hagalaz, Nauthiz, Isa, Jera, Eihwaz, Sowilo, Ingwaz and Dagaz) look the same upside down, so they have no reversed meaning and always fall upright.
The 24 runes of the Elder Futhark, the oldest runic alphabet, are listed in their traditional order and divided into three families of eight called aettir:
Each rune has its name (which you can hear), the sound it stands for (f, u, th, a, r...), literal meaning, keywords, an upright meaning, a reversed meaning where it has one, and a line of advice. The names, sounds and aettir are the traditional ones. The meanings and advice were written for this app, in the spirit of the tradition. Runes are an old tool for reflection, not a verdict: treat a reading as a mirror for your own judgment.
Every rune also has its own static page (runes/fehu.html ... runes/othala.html), plus a page listing all 24 (runes/index.html), so each rune can be found, shared and indexed on its own. They are generated from the same data as the app:
npm run build
This runs scripts/build-rune-pages.js, which reads js/runes-data.js and the longer texts (origin of the name, how the rune reads in a spread) in scripts/rune-extra.js, and rewrites the pages, sitemap.xml and robots.txt. It only needs Node. Re-run it after editing either file and commit the result.
The app itself is plain HTML, CSS and JavaScript, with no dependencies and no build step. Just open index.html. (The only build step is the optional one above that regenerates the static rune pages.)
SAY list at the top of js/speech.js, so a name that sounds wrong on your device is a one-line fix.SPREADS with its positions on a grid.Rune-Reading is open source at GitHub with MIT license.
Had fun browsing the app? Buy me a coffee by becoming a sponsor.
You may also be interested in my other divination project Motivational-Numerology (demo). For more mystic arts as small web apps, see Esoterica.
Copyright (c) 2026 Olivier Giulieri.
3 commits
HTML
77.3%
JavaScript
15.8%
CSS
6.9%
Pick a spread, draw runes from the bag, and read what each one says about its place in the layout.
See the codeDraw a rune reading with the Elder Futhark, right in your browser. Pick a spread, draw runes from the bag, and read what each one says about its place in the layout. No sign-up, no libraries, no images.

Choose one of four spreads, then draw the runes one at a time from the bag (or all at once). Each rune lands face up in its position, and you can click it for its meaning, advice and family. "Interpret Reading" lays the whole reading out as a story, position by position.
Runes are drawn without replacement, so a rune never appears twice in one reading.
Each rune on the board has a small speaker icon: click it to hear the name of the rune spoken aloud (Fehu, Uruz, Thurisaz...). It uses your browser's built-in speech voice, so there are no audio files to download and the voice depends on your device. Browsers without speech support simply do not show the icon.
Some traditions read only upright runes, so reversals are optional: tick Include reversed runes and each rune that can be reversed has an even chance of landing upside down. A reversed rune is shown turned over, marked in orange, and read for the shadow side of its meaning: a block, a delay or a lesson still to learn.
Nine of the 24 runes (Gebo, Hagalaz, Nauthiz, Isa, Jera, Eihwaz, Sowilo, Ingwaz and Dagaz) look the same upside down, so they have no reversed meaning and always fall upright.
The 24 runes of the Elder Futhark, the oldest runic alphabet, are listed in their traditional order and divided into three families of eight called aettir:
Each rune has its name (which you can hear), the sound it stands for (f, u, th, a, r...), literal meaning, keywords, an upright meaning, a reversed meaning where it has one, and a line of advice. The names, sounds and aettir are the traditional ones. The meanings and advice were written for this app, in the spirit of the tradition. Runes are an old tool for reflection, not a verdict: treat a reading as a mirror for your own judgment.
Every rune also has its own static page (runes/fehu.html ... runes/othala.html), plus a page listing all 24 (runes/index.html), so each rune can be found, shared and indexed on its own. They are generated from the same data as the app:
npm run build
This runs scripts/build-rune-pages.js, which reads js/runes-data.js and the longer texts (origin of the name, how the rune reads in a spread) in scripts/rune-extra.js, and rewrites the pages, sitemap.xml and robots.txt. It only needs Node. Re-run it after editing either file and commit the result.
The app itself is plain HTML, CSS and JavaScript, with no dependencies and no build step. Just open index.html. (The only build step is the optional one above that regenerates the static rune pages.)
SAY list at the top of js/speech.js, so a name that sounds wrong on your device is a one-line fix.SPREADS with its positions on a grid.Rune-Reading is open source at GitHub with MIT license.
Had fun browsing the app? Buy me a coffee by becoming a sponsor.
You may also be interested in my other divination project Motivational-Numerology (demo). For more mystic arts as small web apps, see Esoterica.
Copyright (c) 2026 Olivier Giulieri.
3 commits
HTML
77.3%
JavaScript
15.8%
CSS
6.9%