MainspringGuides › Speed up key repeat
macOS Guide

Speed up key repeat on Mac (beyond the slider)

Updated 2026 · 4 min read

When you hold down a key in macOS, there's a brief pause before it starts repeating — and then it repeats at a fixed rate. The System Settings slider lets you tune both values, but it caps out well before what the underlying system actually supports. If you navigate code with arrow keys, delete words in a terminal, or use Vim-style hjkl movement, getting the fastest possible repeat makes a real difference.

The two settings that control key repeat

macOS exposes two separate values:

Both are measured in units of approximately 15 milliseconds. A KeyRepeat of 2 means one keypress event every ~30ms (about 33 keys per second). A value of 1 halves that interval to ~15ms. InitialKeyRepeat of 15 means a ~225ms hold before repeat starts; 10 brings it to ~150ms.

Method 1: System Settings (limited range)

For a rough tune without Terminal:

  1. Open System SettingsKeyboard.
  2. Drag Key repeat rate all the way to the right (Fast).
  3. Drag Delay until repeat all the way to the right (Short).

At the slider maximum, KeyRepeat is set to 2 and InitialKeyRepeat to 15. These are the fastest values the GUI exposes. Terminal lets you go further.

Method 2: Terminal — unlock faster values

Open Terminal (Applications → Utilities) and run both commands:

# set repeat interval to ~15ms (fastest supported)
defaults write NSGlobalDomain KeyRepeat -int 1

# set initial delay to ~150ms before repeat starts
defaults write NSGlobalDomain InitialKeyRepeat -int 10

Then log out and back in. The values don't take effect until the next login session — a restart works too.

What each value actually does

Here's a quick reference for common values:

Setting KeyRepeat below 1 has no additional effect — 1 is the floor macOS honors.

Do it in one click

Mainspring turns this exact setting — and 90+ others macOS buries in Terminal — into a single labelled toggle. Flip Maximum key repeat speed on, and flip it back just as fast. No commands to memorize, nothing permanent.

Try Mainspring free →

Signed & notarized by Apple · 1-day free trial · $29 once

How to undo the change

Delete both keys to restore macOS defaults, then log out:

# remove custom values — macOS falls back to its defaults
defaults delete NSGlobalDomain KeyRepeat
defaults delete NSGlobalDomain InitialKeyRepeat

Or write specific values back. To restore the System Settings slider maximum:

defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15

Why the System Settings slider stops where it does

Apple caps the GUI at values that work comfortably for most users. Very fast repeat rates can cause accidental repetitions when you intended a single press — which is jarring for someone who doesn't expect it. Developers and keyboard-driven users actively want the behavior that trips up casual users, so Apple leaves the extra headroom accessible from Terminal without surfacing it in the UI.

If you share your Mac with others, or use it in presentations, you might want to set KeyRepeat 2 and InitialKeyRepeat 15 rather than the absolute maximum — fast enough to feel snappy, not so fast that a held arrow key rockets to the end of a document in a blink.

Check your current values

# prints current KeyRepeat value (6 = macOS default)
defaults read NSGlobalDomain KeyRepeat 2>/dev/null || echo "not set (default: 6)"

# prints current InitialKeyRepeat value (68 = macOS default)
defaults read NSGlobalDomain InitialKeyRepeat 2>/dev/null || echo "not set (default: 68)"

One more thing: the press-and-hold accent menu

If key repeat still doesn't work for certain keys (like e, u, or a), the issue isn't the repeat rate — it's macOS's accent picker. When you hold those keys, macOS shows a popup of accented characters instead of repeating the letter. That feature needs to be disabled separately. See the guide on disabling the press-and-hold accent menu.