Ditto

Install Ditto

From a store

BrowserStoreStatus
EdgeMicrosoft Edge Add-onsLive
ChromeChrome Web StoreIn review — load it manually
FirefoxFirefox Add-onsIn review — load it manually

Load it manually

Until the Chrome and Firefox listings are published, load the same build that was submitted — about a minute.

Download the latest release

Which file

FileFor
ditto-1.0.0-chrome.zipChrome, Edge, Brave, Arc, Opera, Vivaldi
ditto-1.0.0-firefox.zipFirefox
ditto-1.0.0-edge.zipIdentical to the Chrome build
ditto-1.0.0-sources.zipSource archive for Firefox review — not installable

Chrome, Edge, Brave and other Chromium browsers

  1. Unzip the file. You need the folder, not the zip — this is the step people miss.
  2. Open chrome://extensions (or edge://extensions, brave://extensions).
  3. Turn on Developer mode, top right.
  4. Click Load unpacked and select the unzipped folder — the one containing manifest.json.
  5. Click the puzzle-piece icon in the toolbar and pin Ditto.
  6. Click the Ditto icon to open the side panel.

Keep the folder where it is. The browser loads the extension from that path every time it starts, so moving or deleting it breaks the install. Chrome will also warn about developer-mode extensions on each start — that's normal for unpacked extensions and stops once the store version is out.

Firefox

  1. Open about:debugging#/runtime/this-firefox.
  2. Click Load Temporary Add-on.
  3. Select the zip directly — no unzipping on Firefox.
  4. Open the sidebar with Ctrl/Cmd+B, or View → Sidebar → Ditto.

Firefox removes temporary add-ons when it restarts, so you'll need to load it again each session until the listing is public. Ditto also lives in the sidebar on Firefox rather than a side panel, asks for site permission the first time you record instead of at install, and has no voice narration — that feature needs a Chromium API Firefox doesn't have.

Or build it yourself

Needs Node 22 and pnpm 10.

git clone https://github.com/tryskyforge/ditto.git
cd ditto
pnpm install --frozen-lockfile
pnpm zip:all

Zips land in .output/. For an unpacked build you can load without unzipping, use pnpm build or pnpm build:firefox.

First recording

  1. Open any normal website. Browser pages like chrome:// and about: can't be recorded — browsers don't let extensions run there.
  2. Open the Ditto panel and click Start recording.
  3. Click and type on the page. Each action becomes a step with its own screenshot.
  4. Click Finish recording. Your guide opens, ready to edit, annotate and export.

If something goes wrong

What you seeWhat it means
Manifest file is missing or unreadableYou selected the zip, or a folder one level too high. Pick the folder that directly contains manifest.json.
Open a website to start capturingYou're on a browser page, the Web Store, or a local file:// page. Switch to a normal site.
The extension vanished after restarting FirefoxExpected for temporary add-ons. Load it again.
Empty panel or greyed-out iconSame as above — you're on a page extensions can't touch.

Anything else, open an issue.