Monsty, the Remonster monster, flying towards two animated titles that say CREATE and WOW

Animated titles for Remotion

Remonster

One hundred title presets, each one settable in any of twenty-four typefaces and open to its colours, its timing and its size. Written to be composed rather than configured, and every one is deterministic: the same frame renders the same pixels, every time.

New effects every month. The library keeps growing, and every title added is yours with the licence you already have.

npm i @remonster/titles import { T10 } from '@remonster/titles'; <Sequence from={30} durationInFrames={80}> <T10 lines={['let it be']} /> </Sequence>
100
titles
24
typefaces
0
runtime dependencies
4
frame formats
Checkout opens shortly One payment, for life. No subscription, no free tier.

Why these and not a folder of After Effects files

Four decisions that took a while to get right, and that you inherit.

Deterministic, including the physics

Remotion renders frames out of order and the player scrubs backwards. Anything seeded with Math.random disagrees with itself. The gravity pack simulates its whole timeline once and then only reads rows; every glitch and every rain drop takes its randomness from a fixed seed. Two renders of the same video are byte-identical.

Text that fits the frame it is given

A fixed font size with nowrap cannot know how wide the sentence it was handed is. These measure, and shrink to fit, down to a floor: text that has been shrunk past legibility is a defect nobody sees. Past the floor it overflows, and overflowing is visible.

Sized off the short edge

Sizes come from min(width, height) / 1080, not from the width. The same title takes the same share of the frame at 1080×1920, 1080×1350, 1080×1080 and 1920×1080. Scale off the width and everything comes out half-size the first time you go vertical.

Safe to sandbox

Zero runtime dependencies. React, Remotion and matter-js are peer dependencies you already have. Nothing transitive arrives with it, which is what lets you run it inside a locked-down renderer.

All of them, moving

Each card is the title as it ships, with its own defaults; open one to change anything, live. Grouped the way they are chosen: by what the effect does. Filter to one family, or search by id, by name, or by what a title is for.

Set it up

Four steps from nothing to a title in your video. The first is free and needs no account: it lets whatever writes your Remotion code read this catalogue, every title and every prop with its real default, instead of inventing an animation.

Monsty, the Remonster monster, at a standing desk with a laptop and a coffee
  1. Point your agent at the catalogue

    Pick yours; the snippet changes with it. The server holds no account and no state, and never returns a line of a component.

    The plugin brings the catalogue and a skill that knows how to compose with it. Run these inside Claude Code:

    /plugin marketplace add portegno/remonster-plugin /plugin install remonster-titles@remonster

    Or only the catalogue: claude mcp add --transport http remonster https://npm.remonster.io/mcp

    In Claude on the web or the desktop app: Customize › Connectors, then + and Add custom connector. Name it Remonster and paste:

    https://npm.remonster.io/mcp

    Then switch it on in a chat from + › Connectors. On a Team or Enterprise plan, an owner adds it under Organization settings › Connectors.

    Add this to .cursor/mcp.json in your project:

    { "mcpServers": { "remonster": { "url": "https://npm.remonster.io/mcp" } } }

    Add this to .vscode/mcp.json in your project:

    { "servers": { "remonster": { "type": "http", "url": "https://npm.remonster.io/mcp" } } }

    In a terminal:

    codex mcp add remonster --url https://npm.remonster.io/mcp

    Or in ~/.codex/config.toml: [mcp_servers.remonster] with url = "https://npm.remonster.io/mcp".

  2. Get a licence

    One payment of USD 69, for life. The email that arrives brings two lines for your .npmrc; the second one is the licence. What you get.

  3. Install it in your project

    Paste the two lines into the .npmrc next to your package.json, then install as usual. There is no npm login.

    # .npmrc @remonster:registry=https://npm.remonster.io/ //npm.remonster.io/:_auth=<the credential from your email> npm i @remonster/titles
  4. Ask for a title

    Say what you want in words. The agent looks it up (list_titles, describe_title) and writes the JSX with title_snippet, with the duration asked of the title rather than guessed.

    // for example Open with a Remonster title that says LET IT BE in yellow, then a lower third with my name at 0:04.

    Rather click than type? Every title on this page has Install in Remotion Studio, and the whole catalogue can live inside Studio, under Browse Elements: Config.addElementLibrary({ url: 'https://remonster.io/', displayName: 'Remonster' }); in your remotion.config.ts.

One payment, and it is yours

No free tier and no trial, which is why every title above is moving on this page instead of sitting behind a signup. What you see is the whole of it.

USD69
once · for life
Checkout opens shortly

Your credential, and the two lines of .npmrc that go with it, arrive by email. Refundable for 14 days: the terms.

  • All one hundred titles, twenty-four typefaces, four frame formats.
  • New effects every month, for as long as Remonster Titles exists: new versions and new titles arrive through the same install, at no extra cost.
  • Your own registry credential, which does not expire. Two lines in your .npmrc, and npm i @remonster/titles resolves.
  • As many videos, clients and renders as you like. Nothing phones home and nothing counts seats. It is a library, running inside your project.
  • Updates that cannot change a video you already shipped. A title that changes what it draws gets a major version, so moving is always your decision.

What the credential is, so nothing is a surprise

Two lines in your own .npmrc, and the second one is the licence. They arrive by email the moment you pay.

# .npmrc, in your project or in ~/ @remonster:registry=https://npm.remonster.io/ //npm.remonster.io/:_auth=<the credential from your email> # then, as normal npm i @remonster/titles

There is no npm login, and running it will fail. Nobody can sign themselves up to this registry, which is what makes an account worth selling, so there are no tokens to fetch: the credential is HTTP Basic and it never expires. Everything outside the @remonster scope keeps resolving wherever it did before.

Monsty lying on a pile of envelopes, happily reading a letter

Write to us

A question before you buy, a licence to sort out, a bug, an idea for next month's effects: Monsty reads every one, and the answer comes to your email.