Two hundred and fifty-one things drawn in dots, from a black hole to a kelp forest, each one a single script and a canvas tag. Free, MIT, nothing behind a paywall. If one saved you an afternoon, shout me a beer.
Four from each library. All two hundred and fifty-one are on the export page, as a PNG, GIF or WebM at any size. Want one that isn't here? Open an issue with a photo of the thing.
Each one is a single script with the same shape: a class on the canvas and data attributes for every option. The dots match, so they all sit together on a page.
Paste two lines. The copy button on any card above gives you both. Your coding agent can do it from the README if you'd rather not.
From the repo or a CDN. One file, nothing to install.
<script src="https://cdn.jsdelivr.net/gh/TonkaTuff/ephemeris@v0.12.1/dist/ephemeris.min.js"></script>Height is the preset. Width lets wide ones stretch. Every option is a data attribute.
<canvas class="orb" width="64" height="64"
data-orb-body="andromeda"></canvas>Six CSS variables, read every frame, so a theme switch applies live.
canvas.orb {
--orb-cold: #0a7a5a;
--orb-hot: #e8fff6;
}I'm not going to charge a monthly fee for a loading spinner. Everything here stays free and MIT, commercial use included. If something saved you time and you feel like it, shout me a beer or a coffee. If not, no hard feelings.
Beer goes through GitHub Sponsors. Coffee goes through Ko-fi, which doesn't need an account.
The things people ask.
Yes. MIT licence, use it in anything, commercial included. Nothing here will move behind a paywall later.
There isn't one. People saying thanks with a beer or a coffee is the whole business model.
A browser with Canvas 2D, which is all of them. No framework, no bundler, no npm install. It works inside React, Vue, Svelte or plain HTML the same way: put a canvas on the page.
Yes. Point Claude Code, Cursor or Codex at the README and it'll wire the script and a canvas in. Every option is a data attribute or a CSS variable, so there's nothing to configure in JavaScript unless you want to.
Open an issue on the repo. The roadmap's in the README and I pick from it in whatever order looks fun.