Icebergs of white and glacial blue, some striped with ash, drift across a still lagoon under the pastel midnight sun as a seal rolls through the water and terns fly over.
████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ▇▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███▇█████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇███████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇██████████████████████████████████████████████████████████████████ ███████▇███████████████████████████▇██████████████████████████████████████████████████████████████████▇▇▇████████████████████████████████▇▇█████████████████████████████████████████████████████ ████▇████████████████████████████▇████▇█████████████████████████████████████████████████████████▇▇▇▇██████▇▇██████████████████████████▇▇█████▇▇█████████████████████████████████████████████████ ████████▇████████████████████████████▇████▇▇▇▇██████████████████████████████████████▇▇▇▇▇▇██████████▇▇█████████████████████████████████████▇██████▇▇████████████████████████████████████████████ ▇▇▇█████████████████████████████████████▇█████████▇▇████████████████████████▇▇▇█████████████▇▇▇██████████▇████████████████████████▇▇▇███▇███████▇█████▇██████████████████▇▇▇▇███▇▇▇▇▇▇▇██████▇▇▇ ████▇▇█████████████████████████████████████████▇▇██████▇▇▇▇▇▇▇▇▇▇▇▇▇▇████████████▇██████████████████████████████████████████████████████████████████▇███████████████████████████████████████████ ▇▇▇▇████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇██████████▇███████████▇██████████████████▇▇████████████████▇███████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇███████████████████▇██████▇▇▇▇▇████▇▇▇▇▇▇█████████████████████████ ▇▇▇▇▇▇▇███████████████████████████▇▇███████████████████████████████████████████▇██████████████████████▇▇▇▇██████████████████████████████▇▇▇█████████████████████████████████████████████████████ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇███▇▇██████████████████████████████▇▇██████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇█████▇▇▇██████████████▇███████████████████████████▇▇█████ █████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇████▇▇▇▇▇█████████████████████████████████████████████████████████████████████████████████▇▇▇████████▇▇█████▇▇█████████████████████████████████████████████ ██████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████▇█████▇▇██████████████████▇▇▇▇████▇▇▇▇▇▇██████▇▇▇ ███▇▇██████████████████████████████▇▇▇██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████████████████████████████████████▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇█████████████████████████▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇█████████████████████████▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇███████████████████████▇▇▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇███████████████████████▇▇▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇████████████████████████▇▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇█████████████████████████▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇█████▇▇▇▇▇▇▇▇▇▇███████▇▇▇████████████████████████████████████████████████████████████████████████████████████████████▇████████████████████████████████████████████████████ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇██▇▇▇▇▇▇▇▇█████████████████████████████████████████████████████████████████████████████████████████████████████████████▇████████████████████████████████████████████████████ ▇▇▇▇▇▇██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████████████████████████████████████████▇████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████████████▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ██████████████▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ██████████████▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ██████████████▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ██████████████▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████████████████████▇████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████▇▇██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████████████▇▇███▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████████████████████▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ███████████▇████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ █████████████████████▇▇▇▇███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████████████████████████████████████████████▇▇▇███████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
Paste two lines into any page, use it from React, play it in a terminal, put a GIF in a README, or hand the Agent prompt to your coding agent. Every tab follows the look you pick above.
<script type="module" src="https://www.ascii-magic.com/ascii/ascii.js"></script>
<ascii-art piece="glacier-lagoon-ice"></ascii-art>// npm install ascii-magic-art
import { useEffect, useRef } from "react";
import { play } from "ascii-magic-art/runtime/player.js";
import * as piece from "ascii-magic-art/pieces/glacier-lagoon-ice.js";
export function GlacierLagoonIce() {
const ref = useRef(null);
// play() draws the piece on a canvas in your look and returns stop(), which React runs on unmount
useEffect(() => play(ref.current, piece), []);
return <pre ref={ref} style={{ fontSize: 10, fontFamily: "Menlo, Consolas, monospace" }} />;
}npx ascii-magic-art glacier-lagoon-ice<!-- Export the GIF below in the look you picked, commit it, then: -->
<p align="center">
<img src="assets/glacier-lagoon-ice.gif" alt="Glacier Lagoon Ice, animated ASCII art" width="720">
</p>Add the animated ASCII art piece "glacier-lagoon-ice" (Glacier Lagoon Ice) from ASCII Magic to this project.
1. Load the script once, in the browser only (in SSR frameworks such as Next.js, load it on the client):
<script type="module" src="https://www.ascii-magic.com/ascii/ascii.js"></script>
2. Put the piece where it fits best, such as the hero, a loading state, an empty state or the 404 page:
<ascii-art piece="glacier-lagoon-ice"></ascii-art>
3. Keep a real heading or text next to it (the art is decoration), and size it with the size attribute or CSS.
Preview and options: https://www.ascii-magic.com/ascii/glacier-lagoon-ice
Rules for coding agents: https://www.ascii-magic.com/ascii/use/ai-coding-agentsPause on the frame you like, pick a look, then download it at an exact size.
MIT licensed and open source on GitHub. It imports one small helper file, kit.js. This is the animation itself: what gets drawn in every frame. The look you pick is applied on top by the player, like a filter, so this file stays the same in every look while the snippets above change with it. Edit it to change the animation; see the docs to make your own.
/* glacier-lagoon-ice: icebergs drifting in a glacier lagoon at midnight-sun dusk, the glacier and peaks behind, seals in the water, hand-built.
* Painted once: the pastel sky, the dark peaks and the white glacier flowing down to the lagoon, and the
* still water. Each frame drifts the icebergs, white and blue and striped with ash, rolls a seal through
* the water and flies terns. */
import { fbm, noise2, clamp, lerp } from "../lib/kit.js";
import { W, H, Canvas, hex, mix, balance, fitPalette, paletteMeta, encoder, DOTS } from "../lib/scene.js";
const SKY = 1, MTN = 2, GLACIER = 3, WATER = 4;
const WL = 58;
const base = new Canvas();
base.sky([[0, "#7a8ac0"], [0.5, "#e8b8c8"], [1, "#ffe0c8"]], SKY, 0, 50);
base.ridge({ base: 0.36, amp: 0.12, f: 3, seed: 3, top: "#5a5a72", bot: "#3a3a52", depth: 20, m: MTN });
// the glacier: a broad, low tongue of white ice filling the valley floor between the peaks, its front a wall at the water
for (let x = 20; x < 176; x++) {
const top = 46 + Math.abs(x - 98) * 0.06 + fbm(x / 6, 2, 3, 5) * 2;
for (let y = Math.floor(top); y < WL; y++) base.put(x, y, mix(hex("#ffffff"), hex("#9ab8d4"), clamp((y - top) / 12 + (Math.sin(x * 0.9 + y) > 0.8 ? 0.35 : 0))), GLACIER);
}
// the lagoon: pastel sky mirrored, darker toward us
const snap = new Canvas().copy(base);
base.rect(0, WL, W, H, (x, y) => mix(snap.get(x, 2 * WL - y - 1), hex("#3a4a6a"), clamp(0.35 + (y - WL) / 70)), WATER);
balance(base);
const PAL = fitPalette(base, { n: 46, extras: ["#ffffff", "#f4f8fc", "#8ad0f0", "#4a9ad0", "#2a2a2e", "#5a5a62", "#1e1e24", "#c8d8e8"] });
export const meta = {
slug: "glacier-lagoon-ice",
name: "Glacier Lagoon Ice",
category: "landscapes",
note: "Icebergs of white and glacial blue, some striped with ash, drift across a still lagoon under the pastel midnight sun as a seal rolls through the water and terns fly over.",
tags: ["iceland", "glacier", "lagoon", "icebergs", "seal", "midnight-sun", "wonder", "halftone"],
cols: W, rows: H, fps: 15, cell: "square", look: "dots", dots: DOTS,
palette: paletteMeta(PAL),
};
const BERGS = [
[10, 70, 22, 12, 0.5, "w"], [64, 66, 14, 8, 0.35, "b"], [110, 74, 28, 14, 0.42, "s"], [160, 64, 12, 7, 0.3, "w"], [36, 88, 18, 10, 0.55, "b"], [140, 92, 24, 11, 0.48, "w"],
];
export default function create() {
const f = new Canvas(), enc = encoder(PAL);
return (t) => {
f.copy(base);
for (const [x0, y, w, h, sp, kind] of BERGS) {
const x = ((x0 + t * sp) % (W + w + 20)) - w - 10;
// the berg: an irregular block, faceted, with its reflection
for (let yy = 0; yy < h; yy++) {
const rowW = w * (0.6 + 0.4 * Math.sin((yy / h) * Math.PI)) + Math.sin(yy * 1.7 + x0) * 2;
for (let xx = 0; xx < rowW; xx++) {
const px = x + (w - rowW) / 2 + xx, py = y - h + yy, lit = xx / rowW;
let c = kind === "b" ? mix(hex("#8ad0f0"), hex("#4a9ad0"), lit) : mix(hex("#ffffff"), hex("#c8d8e8"), lit);
if (kind === "s" && Math.floor(yy / 2.5) % 2 === 0) c = mix(c, hex("#2a2a2e"), 0.55);
f.put(px, py, c);
f.add(px, y + (h - yy) * 0.7, c, 0.35, WATER);
}
}
}
// a seal surfacing, rolling and diving (12 s)
const sp2 = (t % 12) / 12;
if (sp2 < 0.5) { const sx = 90 + sp2 * 20, sy = 100; f.ellipse(sx, sy, 4, 1.6, "#5a5a62"); f.ellipse(sx + 3, sy - 1, 1.6, 1.4, "#5a5a62"); for (let k = 0; k < 10; k++) f.add(sx + Math.cos(k) * 7, sy + Math.sin(k) * 1.5, "#ffffff", 0.3, WATER); }
// terns flickering over the water
for (let i = 0; i < 4; i++) { const x = ((t * 14 + i * 50) % (W + 20)) - 10, y = 40 + i * 3 + Math.sin(t * 3 + i) * 3, up = Math.sin(t * 10 + i) > 0; f.put(x, y, "#ffffff"); f.put(x - 1, y - (up ? 1 : 0), "#ffffff"); f.put(x + 1, y - (up ? 1 : 0), "#ffffff"); }
return enc(f);
};
}
/YOUR OWN
The pieces here are hand-built animations. To turn your own photo, logo or video into animated ASCII, use the ASCII Magic editor.