Written byKerf Audio Team
Filed underGuides

REAPER does a lot out of the box, but many of the features people rely on every day come from REAPER extensions: small native add-ons that load with REAPER and change the program itself. This guide covers what an extension is, how it differs from a script or a plugin, the extensions most REAPER users end up installing, and how to install and remove them on Windows, macOS and Linux.

What is a REAPER extension?

A REAPER extension is a native library that REAPER loads once, when it starts. On Windows it is a .dll file, on macOS a .dylib, and on Linux a .so. REAPER looks for these files in the UserPlugins folder inside its resource path, and loads each one it finds.

Cockos is clear that extensions are not plug-ins in the usual DAW sense: they are not effects. Instead they can add support for file types and control surfaces, import other project formats, and use services REAPER provides, such as audio file reading and writing, audio hardware access and sample rate conversion. In practice, an extension can add actions to the action list, add menus and dockable windows, read and change the project, and drive plugin parameters.

Extensions are written in C or C++ against the REAPER extension SDK. If you want to know how that works under the hood, our companion piece on the REAPER SDK explains how extensions are built and how they talk to REAPER.

Extensions, JSFX, ReaScript and VST or CLAP plugins

REAPER can be extended in four quite different ways, and it helps to know which is which before you start installing things.

TypeWhat it isWhere it lives
ExtensionA compiled native library loaded at startup. Changes REAPER itself: actions, menus, windows, project-wide behaviour.UserPlugins folder
JSFXREAPER’s own effect format. Plain text files written in EEL2 and compiled on the fly. They process audio or MIDI in an FX chain and can draw their own displays.An FX chain on a track or item
ReaScriptScripts in EEL2, Lua or another supported language that call REAPER actions and most of the same API that extensions use. You run them as actions.The action list
VST, VST3, CLAP, AUInstruments and effects that run inside an FX chain. They process sound but cannot change REAPER’s interface or the wider project.An FX chain on a track or item

The short version: a plugin works on the audio that passes through it, a script runs when you trigger it, and an extension is part of REAPER for as long as REAPER is open.

The best REAPER extensions to know about

There are many extensions, but four come up again and again. If you have followed a REAPER tutorial or installed a popular script, you have probably needed at least one of them already.

SWS/S&M

The SWS/S&M extension is the one most REAPER users meet first. It is a collaborative, open source collection of features that integrate into REAPER, rather than a single tool. Among other things it adds:

  • a large set of extra actions (filter the action list for “SWS” to see them)
  • Snapshots, for saving selected track parameters and recalling them later
  • the Resources window, for quick access to projects, track templates, FX chains and media
  • a groove tool for quantising audio and MIDI to a groove learned from another item
  • Cycle Actions, which chain several actions together with conditions
  • marker actions, which run an action when the play cursor crosses a marker

Many scripts depend on SWS, so if a script tells you a function is missing, the SWS extension is often the answer. Cockos itself points developers to SWS as a good set of examples of what the extension SDK can do.

ReaPack

ReaPack is a package manager for REAPER. It is itself an extension, and once installed it lets you discover, install and update REAPER resources from inside REAPER: ReaScripts, JS effects, extensions, themes, language packs, templates and more. You find it under Extensions › ReaPack.

ReaPack works with repositories. Some are enabled by default, and you can import others. You can browse packages one by one, or tell ReaPack to install everything in the enabled repositories when it synchronises. Either way, it also keeps what you have installed up to date, which saves a lot of checking forum threads for new versions.

js_ReaScriptAPI

js_ReaScriptAPI makes functions that are normally only available to C++ extensions available to ReaScripts as well. Most of them are thin wrappers around the Win32 API on Windows, or WDL/SWELL on macOS and Linux. You rarely use it directly. You install it because a script you want needs it. Its author recommends installing it through ReaPack, from the ReaTeam Extensions repository.

ReaImGui

ReaImGui is a ReaScript binding and REAPER backend for the Dear ImGui toolkit. In plain terms, it lets script authors build proper windows with buttons, sliders, lists and tables. A lot of modern scripts with a real interface are built on it. Like js_ReaScriptAPI, it is distributed through ReaPack, in the default ReaTeam Extensions repository.

How to install REAPER extensions

The steps are the same idea on every platform: put the file in the right folder, then restart REAPER.

Find the REAPER UserPlugins folder

  1. In REAPER, choose Options › Show REAPER resource path in explorer/finder.
  2. Open the UserPlugins folder inside it.

On a standard install the resource path is usually %APPDATA%REAPER on Windows, ~/Library/Application Support/REAPER on macOS and ~/.config/REAPER on Linux. A portable install keeps everything in its own folder, which is why the menu item is the safer way to find it.

Windows

Some extensions ship as an installer. SWS, for example, offers a Windows .exe that puts the files in place for you. For anything that comes as a bare .dll, copy it into UserPlugins. Match REAPER’s architecture: a 64-bit REAPER needs the 64-bit file. ReaPack’s guide makes the same point, that the file must match REAPER’s architecture rather than your operating system’s.

macOS

Copy the .dylib into UserPlugins. SWS for macOS comes as a .dmg disk image with builds for Apple silicon and Intel, so pick the one that matches your REAPER.

macOS may block a library downloaded from the internet the first time REAPER tries to load it. ReaPack’s own guide notes that on macOS Catalina or newer you may need to launch REAPER once, then open the Security & Privacy settings (Privacy & Security in newer versions of macOS) and click Allow Anyway for the extension to load. Only do this for files from a source you trust.

Linux

Copy the .so into ~/.config/REAPER/UserPlugins, or the UserPlugins folder of a portable install. SWS for Linux comes as a .tar.xz archive for x86 and ARM, so unpack it and copy the files across.

Always restart REAPER

Extensions only load at startup. After you add, update or remove one, quit REAPER fully and open it again. If the extension adds menu items, look under the Extensions menu. If nothing appears, check the file is in the right folder, matches REAPER’s architecture, and that an older copy is not still sitting in UserPlugins.

Installing with ReaPack

ReaPack itself is installed by hand, in the same way as above: download the file for your platform, put it in UserPlugins, and restart REAPER. After that, many scripts and some extensions, including js_ReaScriptAPI and ReaImGui, can be installed from Extensions › ReaPack › Browse packages. ReaPack places the files and keeps them updated. Extensions installed this way still need a REAPER restart before they load.

How to uninstall a REAPER extension

  1. Quit REAPER.
  2. Open the UserPlugins folder and delete the extension’s file.
  3. Start REAPER again.

If you installed something through ReaPack, uninstall it from the package browser instead, so ReaPack’s records stay accurate. If an extension came with its own installer, check its read-me in case it provides an uninstaller.

Where Kerf’s tools fit

We build tools that live inside REAPER, and they are REAPER extensions for the same reason SWS is: some jobs need to reach parts of REAPER a plugin cannot.

Analyse 1

Analyse 1 is our free metering strip for REAPER. It docks inside REAPER and reads REAPER’s output after the master, so there is no plugin to insert on the master and nothing to forget to bypass. It shows:

  • momentary and short-term LUFS
  • a VU meter
  • sample peak
  • a goniometer with a phase correlation bar
  • an oscilloscope waveform
  • a spectrum and a scrolling spectrogram

It does not measure integrated loudness or true peak, so it is a mixing meter rather than a delivery check. It launches free, on Linux first, with macOS to follow. It needs REAPER 7.8 or later. You will need a free account to download it. You install it the same way as any other extension, and the install steps on our REAPER extensions page walk through it.

Kerf Modulators

Kerf Modulators is coming soon, at a £19 beta price. It is a docked panel that gives every plugin on a track its own modulators: envelopes, LFOs, drawn waves and followers, mapped to any parameter and saved with the project. It needs REAPER 7.8 or later. It has to be an extension rather than a plugin, because it reaches into other plugins’ parameters across the track.

Getting help

If one of our extensions does not appear after a restart, our support page covers the usual causes and how to reach us. For SWS, ReaPack, js_ReaScriptAPI and ReaImGui, their own sites and forum threads are the best place to ask.