add-sfx
remotion-dev/remotion
Add a new sound effect to @remotion/sfx library
What is add-sfx?
This skill guides you through adding a new CC0-licensed sound effect to the Remotion SFX package. Use it when you have a WAV file you want to make available as an exported sound effect in @remotion/sfx.
- Add WAV files to remotion.media package and generate variants
- Export sound effects from @remotion/sfx with camelCase naming
- Create documentation pages with playback, duration, and attribution
- Register sound effects in sidebar navigation and table of contents
- Generate waveform visualizations for documentation
- Update skills rule files and build the SFX package
How to install add-sfx
npx skills add https://github.com/remotion-dev/remotion --skill add-sfx- Access to remotion-dev/remotion and remotion-dev/remotion.media repositories
- WAV format sound file, CC0 licensed, normalized to -3dB peak
- bun package manager installed
- ffmpeg installed (for waveform generation)
- afinfo tool available (macOS, for duration/format info)
How to use add-sfx
- 1.Add the WAV file to remotion.media repo root and entry to soundEffects array in generate.ts
- 2.Run bun generate.ts to copy file and regenerate variants.json, then deploy
- 3.Export the sound from packages/sfx/src/index.ts using camelCase naming (e.g., export const mySound = 'https://remotion.media/my-sound.wav')
- 4.Create documentation at packages/docs/docs/sfx/<name>.mdx following existing patterns with frontmatter, AvailableFrom tag, PlayButton, description, example code, value, duration, attribution, and convert section
- 5.Register in packages/docs/sidebars.ts and packages/docs/docs/sfx/table-of-contents.tsx with TOCItem and PlayButton
- 6.Run bun packages/docs/generate-sfx-waveforms.ts to regenerate waveform samples
- 7.Add the new URL to packages/skills/skills/remotion/rules/sfx.md
- 8.Run cd packages/sfx && bun run make to build
Use cases
- Adding a new UI sound effect (button click, switch toggle) to the library
- Integrating a licensed sound effect from an external source
- Expanding the available sound effects for Remotion video projects
- Documenting and versioning new audio assets for the framework
- Remotion maintainers and contributors
- Audio engineers adding to the sound effects library
- Developers extending Remotion's built-in assets
add-sfx FAQ
WAV format, CC0 (Creative Commons 0) licensed, normalized to peak at -3dB.
remotion.media is the source of truth for sound effects. The generate.ts file there manages all SFX before they are exported from @remotion/sfx.
Use camelCase for the variable name and avoid JavaScript reserved words. For example, use uiSwitch instead of switch, and pageTurn for page-turn.wav.
Use afinfo on macOS to fetch the file and determine its duration and format information.
Use the current version from packages/core/src/version.ts for the build. For docs AvailableFrom tag, increment the patch version by 1.
Full instructions (SKILL.md)
Source of truth, from remotion-dev/remotion.
name: add-sfx description: Add a new sound effect to @remotion/sfx
Prerequisites
Sound effects must first be added to the remotion.media package.
Then it can be deployed using bun run build. The .env may be missing if we are in a worktree, but on the main non-worktree branch it should be present.
The source of truth is generate.ts in that repo. A sound effect must exist there before it can be added to @remotion/sfx.
Sound effects must be:
- WAV format
- CC0 (Creative Commons 0) licensed
- Normalized to peak at -3dB
Steps
1. Add to remotion.media repo (must be done first)
In the remotion-dev/remotion.media repo:
- Add the WAV file to the root of the repo
- Add an entry to the
soundEffectsarray ingenerate.ts:{ fileName: "my-sound.wav", attribution: "Description by Author -- https://source-url -- License: Creative Commons 0", }, - Run
bun generate.tsto copy it tofiles/and regeneratevariants.json - Deploy
2. Add the export to packages/sfx/src/index.ts
Use camelCase for the variable name. Avoid JavaScript reserved words (e.g. use uiSwitch not switch).
export const mySound = 'https://remotion.media/my-sound.wav';
3. Create a doc page at packages/docs/docs/sfx/<name>.mdx
Follow the pattern of existing pages (e.g. whip.mdx). Include:
- Frontmatter with
image,title(camelCase export name),crumb: '@remotion/sfx' <AvailableFrom>tag with the next release version<PlayButton>import and usage- Description
- Example code using
@remotion/media's<Audio>component - Value section with the URL in a fenced code block
- Duration section (fetch the file and use
afinfoon macOS to get duration/format) - Attribution section with source link and license
- Convert section with a full-link sentence:
[Open this file on remotion.dev/convert](https://remotion.dev/convert?url=<encoded-sfx-url>) - See also section linking to related sound effects
4. Register in sidebar and table of contents
packages/docs/sidebars.ts— add'sfx/<name>'to the@remotion/sfxcategory itemspackages/docs/docs/sfx/table-of-contents.tsx— add a<TOCItem>with a<PlayButton size={32}>
5. Regenerate SFX waveforms
After the sound is added to packages/remotion-media and exported from packages/sfx/src/index.ts, regenerate the waveform samples used by the docs:
bun packages/docs/generate-sfx-waveforms.ts
This uses ffmpeg to sample every exported sound effect into around 2000 waveform samples and updates packages/docs/components/sfx-demos/sfx-waveforms.ts.
6. Update the skills rule file
Add the new URL to the list in packages/skills/skills/remotion/rules/sfx.md.
7. Build
cd packages/sfx && bun run make
Naming conventions
| File name | Export name |
|---|---|
my-sound.wav | mySound |
switch.wav | uiSwitch (reserved word) |
page-turn.wav | pageTurn |
Version
Use the current version from packages/core/src/version.ts.
For docs <AvailableFrom>, increment the patch version by 1.
Related skills
More from remotion-dev/remotion and the wider catalog.

docs-demo
Create interactive Remotion composition demos for documentation pages.

make-pr
Open a pull request for the current feature

video-report
Generate diagnostic reports for non-working videos by rendering them with verbose logging.

web-renderer-test
Add visual snapshot tests to Remotion's web renderer using vitest and fixture-based components.

writing-docs
Guidelines for writing and editing Remotion documentation in MDX format.

remotion-best-practices
Best practices and patterns for building videos with Remotion in React