npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rune-reading

v1.0.0

Published

Draw a free online rune reading with the Elder Futhark: single rune, three Norns, five-rune cross or Odin's nine-rune spread, with upright and reversed meanings.

Readme

Rune-Reading

Draw 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.

Rune Reading

What it does

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.

  • Odin's Rune (1 rune): a quick answer, or a theme for the day.
  • The Three Norns (3 runes): Past (Urd), Present (Verdandi) and Future (Skuld), named for the three Norns who tend the well of fate.
  • The Five-Rune Cross (5 runes): the situation at the center, what lies behind and ahead of it, guidance from above and the hidden influence below.
  • Odin's Nine (9 runes): three rows of three for the past, the present and the future, from the root of the matter to the likely outcome.

Runes are drawn without replacement, so a rune never appears twice in one reading.

Hear the runes

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.

Reversed runes

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 runes

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:

  • Freyr's aett: Fehu, Uruz, Thurisaz, Ansuz, Raidho, Kaunan, Gebo, Wunjo
  • Heimdall's aett: Hagalaz, Nauthiz, Isa, Jera, Eihwaz, Perthro, Algiz, Sowilo
  • Tyr's aett: Tiwaz, Berkano, Ehwaz, Mannaz, Laguz, Ingwaz, Dagaz, Othala

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.

Rune pages

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.

How it is built

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.)

  • The rune glyphs are drawn as SVG strokes, so they look the same everywhere and do not depend on the visitor's fonts having a Runic character set. A reversed rune is the same drawing turned half a turn.
  • The spoken names come from the browser's speech synthesis. Each name is respelled the way it is pronounced (for example "Fayhoo" for Fehu) in the SAY list at the top of js/speech.js, so a name that sounds wrong on your device is a one-line fix.
  • All the rune and spread data lives in js/runes-data.js. To add a spread, add an entry to SPREADS with its positions on a grid.
  • Three color themes (dark, light and blue) are shared with my other projects (copied from omg-themes), and the theme, the current spread and your last reading are remembered in the browser's local storage.

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.