Skip to content

Subscribe Button

The call to action that ends creator videos: a SUBSCRIBE pill slides in, a cursor clicks it, it turns into SUBSCRIBED with a tick and a bell rings.

Text layer, V4 Titles2D109 lines of codev1.0.0

In Text & data

Next: Rolling Number CounterSurprise me

Subscribe Button preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source.

Open in the title maker

Your current settings go with it. Combine several clips and hand them over together from your sequence.

Effect controls

Presets

The preview runs the same code your AI receives. These settings travel with the hand-off.

Info

What it is

The call to action every creator video ends on: a red pill pops in with a small overshoot, a cursor glides to it and clicks (the button squashes and a ring ripples out), the pill turns into a grey one with a tick, and a bell swings beside it. The words are options, so it works for follow, join or buy prompts too. Choose the two labels, the colours (red, blue, green or gold), whether the bell rings and the backdrop colour.

Reuse it in your own idea

  • Creator video end: Red, with bell.
  • Social follow: Follow, blue.
  • Shop demo: Gold, buy now.

Which part is reusable

src/subscribe-button.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses the demo harness only for the demo.

Good to know

  • System fonts differ between computers; pass fontFamily and load the font first for identical renders.
  • It is a generic button: it does not use any platform's logo or exact design.

Technical details

Technical details
Implementation
Canvas 2D — plain browser JavaScript, no libraries · ES module src/subscribe-button.js
Exports
  • createSubscribeButton({ label?, doneLabel?, theme?, bell?, clickAt?, fontFamily? }) => { draw(ctx, info, width, height), revealDuration }
  • THEMES: { red, blue, green, gold }
Dependencies (exact)
  • apw-runtime@1.0.0 (demo) — Demo harness. The reusable source has no dependencies.
How it fits a scene

Coordinates: Centred (shifted left a little to make room for the bell); the pill is 150 units tall on a 1080 canvas; the cursor comes in from the lower right.

Lighting: A soft drop shadow lifts the pill.

Timing: Pure function of time: pop-in 0.2 s, cursor 0.9 s, click at 1.6 s, flip, tick and bell shortly after; revealDuration says when it has settled.

Output
1080×1080, 30 fps, 5 s · procedural (computed from the frame number) · not a loop — Not a loop: it plays once and ends on the done state with the bell at rest.
Tested
Rendered 150 frames on 2026-10-08 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (Canvas 2D). Same frame twice from fresh pages: identical.
Performance
A few paths and one measured text per frame; negligible. Labels up to about 12 characters fit best.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- subscribe-button/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.
Version
1.0.0 · sha256:8bc9920ab6de64fc…
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. License details
Provenance
Original code written for AI Pixel Wizard in October 2026, to the catalog quality bar (docs/QUALITY.md).
BinMore like this