Change System Volume from Command Line on Mac OS

By  on  
Mac Volume

Oftentimes the awesome GUI applications we love are simply gloss over a command line functionality.  While I do love a visual app, it's always good to know how to do things from command line, if only for the sake of automation.  I've covered loads of command line secrets, most notably Mac Camera Access, so I wanted to figure out if I could control volume from command line.

Change Mac System Volume

The secret to changing Mac system volume from command line is through osascript:

# Max volume
sudo osascript -e "set Volume 10"

# Mute
sudo osascript -e "set Volume 0"

# 50% volume
sudo osascript -e "set Volume 5"

Values range from 0 (muted) to 10 (maximum volume).  Note that you don't get to see a nice volume change indicator -- the volume simply changes without any feedback.

Recent Features

  • By
    Regular Expressions for the Rest of Us

    Sooner or later you'll run across a regular expression. With their cryptic syntax, confusing documentation and massive learning curve, most developers settle for copying and pasting them from StackOverflow and hoping they work. But what if you could decode regular expressions and harness their power? In...

  • By
    I’m an Impostor

    This is the hardest thing I've ever had to write, much less admit to myself.  I've written resignation letters from jobs I've loved, I've ended relationships, I've failed at a host of tasks, and let myself down in my life.  All of those feelings were very...

Incredible Demos

Discussion

  1. Akis

    Thank you for this tip. Are you sure that the maximum value is 10? On my Mac with High Sierra, the maximum value get on 7. The 8, 9, 10 also change the value to maximum. I did double check it by viewing the pop-up small window on volume indicator on menu bar.

  2. Simon Andersen

    This is how it’s done on Mojave:

    sudo osascript -e "set volume output volume [0-100]"

    The deprecated way is to specify a number between 0 and 7 for “set volume”

  3. Br. Bill

    Is there a way to similarly look up the current volume setting (let’s say, in Mojave or Catalina)?

  4. Syd Salmon

    Options to get the current volume setting:

    osascript -e 'output volume of (get volume settings)' # show current volume level

    or

    osascript -e 'get volume settings' # show all volume settings

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!