Purplelink
← All guides

Use Mechvibes sound packs on a Mac

A Mechvibes sound pack is a folder with a config.json and some audio. Keyfeel, the Mac app I make, imports packs in the original Mechvibes format and does not read the newer MechvibesDX format. This guide shows how to tell which you have, how to import a pack, what does not carry over, and what else can play packs on a Mac.

Disclosure up front: Purplelink, which publishes this site, makes Keyfeel, a Mac menu-bar app sold as a free 7-day trial and then $9.99 once. I wrote this guide because people who search for Mechvibes on a Mac often end up needing an alternative, and Keyfeel is one. Everything about the other apps comes from their own pages, repositories and release notes, read on October 8, 2026. I did not install them. For Keyfeel's importer I read the app's source code and ran its config parser on sample files. I have not yet imported a set of real packs from the Mechvibes library, so "what carries over" below is read from the code, not seen on screen.

The short answer

What Mechvibes is

Mechvibes plays a recorded sound when you press a key, so any keyboard sounds like the one in the recording. Its site calls it free and says it is available on Windows, macOS and Linux, with community-made sound packs. It is MIT-licensed, and its repository says it will become legacy once MechvibesDX is stable. MechvibesDX is a rewrite in Rust by the same author, also MIT-licensed, with keyboard and mouse sounds. Its latest release when I read it was 0.8.3, on October 7, 2026.

What a pack contains, and the two formats

A pack is a folder with a config.json and audio files, usually shared as a zip. There are two layouts of that file in use, and the difference decides where a pack will work.

Classic, the original Mechvibes format. Keys are numbered, and each number maps to a slice of one long recording (a start and a length in milliseconds) or to its own file:

{
  "id": "example-pack",
  "name": "Example pack",
  "key_define_type": "single",
  "sound": "sound.ogg",
  "defines": {
    "1":  [0, 120],
    "30": [500, 140],
    "57": [900, 200]
  }
}

Here 1 is Escape, 30 is A and 57 is Space. A pack that gives each key its own file has "key_define_type": "multi" and lists a file name instead of a pair of numbers.

MechvibesDX, called V2. Keys are named after the browser's key codes, each with a list of start and end times, and the audio file is named in audio_file. This is the layout in the MechvibesDX format document:

{
  "config_version": "2",
  "name": "Example pack",
  "author": "Your Name",
  "definition_method": "single",
  "audio_file": "click.ogg",
  "definitions": {
    "KeyA": { "timing": [[0, 50]] }
  }
}

MechvibesDX converts a classic pack to V2 when you import it, keeps a backup of the original config.json, and can also export V2 packs from its editor. So a V2 pack comes from MechvibesDX, and a classic pack comes from the original Mechvibes or from anyone who made one before.

The pack list on mechvibes.com labels packs "config-v1" or "config-v2". I could not find where that site defines those labels. Do not rely on them: open the config.json and look for defines (classic) or definitions (V2).

Why people look for another way on a Mac

Searches such as "Mechvibes Mac not working" have no single cause, and I did not find a report that explains all of them. These are the facts on the Mac side that I could read.

If a keyboard sound app is silent on your Mac, check these before anything else: the app is switched on under System Settings, Privacy & Security, Input Monitoring; the output device and volume are the ones you expect; and, for an app you installed from outside the Mac App Store, you opened it once with right-click and Open if macOS blocked it. Bluetooth headphones add delay, often 100 milliseconds or more, which no app can remove.

Where packs come from

The pack list on mechvibes.com had dozens of packs when I read it, mostly switch sounds plus novelty and game sounds, each with a "Try Pack" link. I did not find a download link on that page. The MechvibesDX pack page listed 24 packs with Download buttons whose links were placeholders in the page I read, and its guide says you download a zip and import it into the app. Many packs also sit in repositories on GitHub and in forum threads.

A pack is data, not a program, but a zip can hold anything. Open it first and look. A pack should contain one config.json and audio files such as .ogg or .wav, and little else. Get packs from the pack's author or a list you trust, not from a search ad. I did not download any pack for this guide.

Import a pack into Keyfeel

These steps are for a classic pack.

  1. Check the pack's format. Open the pack's folder, or unzip it, and open its config.json in any text editor. If it contains a defines section, it is a classic pack and Keyfeel can read it. If it contains definitions with key names such as KeyA, it is a MechvibesDX pack and Keyfeel cannot.
  2. Open the import dialog. Click the Keyfeel icon in the menu bar and choose Import sound pack, or open Settings, Sounds, and click Import a sound pack.
  3. Choose the pack. Pick the pack's folder, its zip file or its config.json, then click Import. Keyfeel converts the audio once.
  4. Listen to the preview. When the import finishes, Keyfeel selects the pack and plays a short phrase of presses in it. If the dialog says it could not import the pack, the message says whether no sounds were found or the audio could not be read.
  5. Allow Input Monitoring if macOS asks. The first time Keyfeel runs, macOS asks you to allow it under System Settings, Privacy & Security, Input Monitoring. Without that permission Keyfeel cannot hear your keyboard, and the pack stays silent.
  6. Switch or remove the pack later. Imported packs are listed under Imported in Settings, Sounds. Click a pack to use it, or Remove to delete Keyfeel's converted copy. Your original files are never changed.

What Keyfeel does behind the dialog: it unpacks a zip into a temporary folder and deletes that folder afterwards, looks for config.json in the folder you chose or one folder below it, decodes the audio (.ogg with its own decoder, .wav, .mp3 and .m4a with the system's), and writes small WAV files into a library of its own in your user Library folder, under Application Support, Keyfeel, Imported. If it finds no config.json with a defines section, it falls back to treating the audio files in the folder as a pool of sounds for every key.

What carries over, and what does not

Read from Keyfeel's importer code on October 8, 2026, not from a test of real packs.

Pack featureIn Keyfeel
Classic, one sound file sliced by timeSupported. Each slice becomes its own sound, cut to at most 1.5 seconds.
Classic, one audio file per keySupported.
Audio formats.ogg, .wav, .mp3, .m4a. A folder import without a config also accepts .aif, .aiff, .caf and .flac.
Which key plays which soundPack key numbers are matched to the same physical keys on a US keyboard. Keys the pack does not define, and some keys Keyfeel has no match for, such as the number pad digits, play a random sound from the whole pack.
Key release soundsNone. An imported pack plays when a key goes down. The release is silent.
Mouse clicksIf click sounds are on, they play a random sound from the pack.
LoudnessEach sound is evened out to a common peak level, so a pack made deliberately quiet or loud plays at Keyfeel's level. Use the volume controls.
Pack settings such as recommended volume or random pitchNot read.
MechvibesDX V2 packsNot supported. The file has no defines section, so Keyfeel does not take the key mapping. From the code, a folder with one long recording would be cut to its first 1.2 seconds and used as the sound for every key. I have not run that case in the app.
MechvibesDX mouse packsNot supported, for the same reason.

My sample-file run behaved as the table says: a classic sliced config and a classic one-file-per-key config both parsed, a V2 config was rejected for having no definitions, and the number pad 7 key had no match. The importer's own tests cover the parsing and key mapping, not the audio conversion of real packs.

Other ways to play the same packs on a Mac

Prices and requirements as listed on October 8, 2026. "Not stated" means the pages I read did not say.

AppPriceMechvibes packsMac state, as documented
Mechvibes 2.3.4Free, MITNative formatHomebrew cask is Intel and disabled; site lists .dmg files without saying which chip
MechvibesDX 0.8.3Free, MITReads classic and V2Apple silicon .dmg, not notarized, Accessibility and Input Monitoring
Keyfeel$9.99 once, 7-day trialClassic onlymacOS 13 or later, Apple silicon and Intel, notarized, Input Monitoring
Klack$4.99, Mac App StoreNot statedmacOS 15 or later per the listing; macOS 27 support in 2.2.0
ThockFree, MITNot stated; its own JSON profilesmacOS 13.5 or later
KeyOpera$3Not stated; its own .keypak packsNot stated

I did not find another Mac app that advertises importing Mechvibes packs, but I did not search every app, so I will not say Keyfeel is the only one.

The permission, and what it can see

Any app that plays a sound when you press a key in another app needs the macOS Input Monitoring permission. Apple describes it as letting an app see what you type on the keyboard and monitor input from your mouse or trackpad. Keyfeel uses it to get the key code, which says which key was pressed, and not the character. It works offline, and its only network use is checking for updates. The Keyfeel page says that when a password field has focus, macOS stops delivering keystrokes to apps like Keyfeel, so it hears nothing there. Do not assume the same of every app. The permissions guide covers what each of the Full Disk Access, Input Monitoring and Accessibility permissions allows and how to review them.

Sound pack licenses

"Free" on a pack list describes the price. It does not tell you what you may do with the sounds. The mechvibes.com list I read named a creator for only some packs and stated no license for any. A recording of a real keyboard is someone's work, and a pack made from a game or a film may contain material its maker did not own.

Keyfeel's own recordings are different: every one is licensed CC0, with credits listed in the app.

Frequently asked

Do MechvibesDX packs work in Keyfeel?

No. MechvibesDX packs use a V2 layout with definitions and key names, and Keyfeel reads only the original layout with defines. Read from the code, not tested in the app: a V2 folder would be treated as a pool of sounds, not a keyboard. Classic packs, including ones MechvibesDX has not converted, do import.

Is Mechvibes safe to install?

Its code is open and MIT-licensed, so anyone can read it, and I have not audited it. It needs a permission that lets it see which keys you press, so install it only from the project's own GitHub releases. The MechvibesDX releases list a SHA256SUMS file you can check a download against. On a Mac the builds I read about are not notarized, so macOS will warn you the first time you open one.

Why is Mechvibes silent on my Mac?

Check that the app is switched on under System Settings, Privacy & Security, Input Monitoring, and that the output device and volume are right. MechvibesDX also needs Accessibility, and its permissions can stop working after an update until you remove and re-add the app in both lists. The original app has had no stable release since December 2023, and I did not find a report that ties its silence to a macOS version.

Does Mechvibes work on macOS 27?

I did not find a statement of macOS 27 support from Mechvibes or MechvibesDX. Klack's changelog says version 2.2.0 was updated for macOS 27. Keyfeel's stated requirement is macOS 13 or later, and I have not tested it on macOS 27.

Can Klack or Thock use Mechvibes packs?

I found no statement that either does. Thock describes its own JSON switch profiles, and Klack's pages mention no way to add your own sounds.

Is Keyfeel free?

It is free for 7 days, the full app with no account, then $9.99 once with a license key. I make it. Mechvibes and MechvibesDX are free, and so is Thock.

Related guides