
The dinosaur-bitten logo
Intro, SVG, Text
NewFree
A minimal logo intro: a thin red pen keys the name in Morse code, at the real rhythm of the code, on a hairline; as soon as a letter’s code is complete, the letter rises out of the line above its own dots and dashes, light and narrow. Then the word closes up, the letters take on weight and width with a spring, and the code stays under the name like a signature. In the Playground you type your own name or upload your own logo.
A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN. The React and Vue tabs hold the same demo as a ready component, which switches its animations off when it leaves the page.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The Morse-keyed logo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/anybody@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="scena">
<!-- the stage: the script measures it, keys the name in Morse on a thin tape and raises the letters out of it -->
<svg class="palco" data-stage role="img" aria-label="tellum" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- the letters live above the tape: they rise out of it and sink back into it -->
<clipPath id="above-tape"><rect data-letter-clip /></clipPath>
<!-- the tape rolls up into the pen from its left end -->
<clipPath id="tape-roll"><rect data-tape-clip /></clipPath>
</defs>
<g data-world>
<!-- a hidden line of text, only to measure the letters with their variable axes -->
<text class="misura" data-measure visibility="hidden" aria-hidden="true"></text>
<!-- the tape: a hairline and the dots and dashes of the code -->
<g clip-path="url(#tape-roll)" data-tape>
<rect class="riga" data-line />
<g data-marks></g>
</g>
<!-- the letters, one text each -->
<g clip-path="url(#above-tape)" data-letters></g>
<!-- the pen that keys the code -->
<rect class="penna" data-pen />
</g>
</svg>
<p class="nota">Click or tap to see it again</p>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="script.js"></script>
</body>
</html>Change values, colours and text with the controls and watch the animation respond live. Or write in the code yourself. Then download the folder with your changes.
14 values to change
With the Animorio connector, Claude Code takes it from here, guide included, and fits it into your project. Paste this request:
Take “The Morse-keyed logo” from Animorio and fit it into my siteThe name becomes a row of signs measured in beats, as in real Morse: a dot is one, a dash three, one beat between the signs of a letter, three between letters, seven between words. Each letter remembers where its code starts and ends. Accented letters are keyed as the plain letter (normalize('NFD') and the marks dropped). A beat lasts about three seconds divided by all the beats of the name, with a ceiling: a long name is never keyed in much more than four seconds.
A canvas can measure the weight but not the width of a variable face, so the letters are measured on a hidden line of SVG text, in the same face (Anybody) with the same axes: getStartPositionOfChar and getSubStringLength give the centre of every letter in the closed-up word, with the real kerning, and getComputedTextLength the width of every narrow, light letter as it rises. From there comes the scale of the tape: wide enough for every letter to sit above its code without touching its neighbours, never wider than the screen.
The pen runs with ease 'none', at an even speed like a telegraph tape, and the line behind it is the same tween. Each sign widens as the pen passes over it, and is born 1.8 times too tall, then settles with an elastic. Whether the pen dips or not is not a tween: the function that draws everything decides it every frame, by looking at whether the pen is over a sign. So the key snaps down and up exactly, at any speed.
Each letter has its x on the wide tape and its x in the closed-up word: from the middle outwards, 45 thousandths of a second apart, it goes there with power3.inOut to a point one pixel past (SETTLE), then elastic.out brings it back. Weight and width (font-variation-settings, 'wght' and 'wdth') grow with the same curve but a tenth of a second later: so a letter never grows before it has room, and neighbours never touch. On arrival a small squash, and the letter’s signs follow it in the same wave.
The whole intro is one timeline, with the labels start, key, close, reveal, rest and leave, and timeScale for the speed. The letters sit in a group clipped by a clipPath that ends just above the line: they rise from behind the line and sink back into it at the end. The tape has its own clipPath, which closes from the left towards the pen to roll it up. If IMAGE holds an address, the name is keyed all the same and at the end the picture rises out of the line; in the Playground, next to the field, there is a button to upload a file, which goes into the code as a data: address.
| Name | File | Default | What it changes |
|---|---|---|---|
NAME | script.js | 'tellum' | The logo as a word: it is keyed in Morse and its letters rise out of the code. Letters, digits and common punctuation have their code; accented letters are keyed as the plain letter. |
IMAGE | script.js | '' | The logo as a picture: the address of a file, or upload it from your computer. If there is one, it rises out of the line in place of the letters; the name is keyed all the same. |
WEIGHT | script.js | 580 | How heavy the letters are once the word has closed up: 100 is a hairline, 900 is black. They always rise thin. |
SETTLE | script.js | 1 | How many pixels the letters pass their place by before the spring pulls them back (0 = they stop dead). |
CODE | script.js | true | Whether the code stays under the logo as a thin line of dots and dashes. With false the tape rolls up into the pen and only the name is left. |
SPEED | script.js | 1 | The speed of the whole animation: 2 is twice as fast, 0.5 half as fast. |
REST | script.js | 4.5 | How many seconds the logo stays on show before it sinks into the line. From 3.4 seconds up there is time for the pen to read the code again. |
LOOP | script.js | true | Whether the logo sinks into the line and the name is keyed again. With false the logo stays, and now and then the pen reads the code again. |
To present a logo with a precise, slightly secret gesture: the opening of the site of a communications brand, an agency, a radio station or a podcast, a graphic design studio, a product about messages and connections, a preview for a client, a loading screen, a social post. It suits pages where everything else is quiet. It works with a written wordmark and with a picture.
The same animation with the sizes adapted: the name is smaller, the tape narrower and the signs shorter, so the wide code still fits on the screen. A tap restarts it.
Nothing moves: the line with the code fades in already tightened under the name, then the logo appears. If the animation starts again, everything leaves with a fade.
GSAP 3.15.0, Anybody (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 9.1 KB; the libraries: GSAP 28 KB.
Tested on 16 October 2026
Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.
With your account’s email and password.
or with your email
You’re signed in as .
With your account, you can download the zip of every animation and every pack, for free.