Skip to content

Quote Card

A pull quote with a giant opening mark, words rising into place under a mask, a rule that draws itself and the author's name beneath.

Text layer, V4 Titles2D108 lines of codev1.0.0

In Text & data

Next: Kinetic Title RevealSurprise me

Quote Card 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

A pull quote that arrives like a magazine spread: a giant opening quotation mark scales in, the words rise into place a few at a time under a mask, a short rule draws itself and the author's name and role fade in beneath. The quote wraps by itself into lines that fit and picks the largest type size that suits. Type the quote, the author and the role, choose a theme (ink, rose, paper or mint), left or centred alignment and the backdrop colour.

Reuse it in your own idea

  • Testimonial: Ink and gold.
  • Editorial: Paper.
  • Social post: Rose, centred.

Which part is reusable

src/quote-card.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.
  • There is no hyphenation: a very long word can overflow the line.

Technical details

Technical details
Implementation
Canvas 2D — plain browser JavaScript, no libraries · ES module src/quote-card.js
Exports
  • createQuoteCard({ quote?, author?, role?, theme?, align?, start?, fontFamily? }) => { draw(ctx, info, width, height), revealDuration }
  • THEMES: { ink, rose, paper, mint }
Dependencies (exact)
  • apw-runtime@1.0.0 (demo) — Demo harness. The reusable source has no dependencies.
How it fits a scene

Coordinates: The quote block is centred and 76% of the width wide; type size is chosen so it fits in at most five lines and half the height.

Lighting: None; the demo adds a soft accent glow and vignette.

Timing: Pure function of time; words rise 0.09 s apart; revealDuration says when everything has arrived.

Output
1080×1080, 30 fps, 7 s · procedural (computed from the frame number) · not a loop — Not a loop: the card arrives and holds on the finished quote.
Tested
Rendered 210 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
One measureText per word per size tried, then one fillText per word per frame; negligible. Quotes up to about 140 characters; longer text steps down to a small size.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- quote-card/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:d3c1ee965f6e5149…
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