How to control external monitor brightness on Mac
The F1 and F2 keys do nothing to your external monitor. macOS Sound preferences pretends the brightness slider does not exist for most third-party displays. Here is what is actually going on, and the modern way to fix it.
Plug an external monitor into your Mac. Press F1 to dim the screen. The built-in display dims; the external display does not. Open System Settings, Displays, click the external monitor, look for a brightness slider. On most third-party monitors there is no slider. The only way to change brightness, by default, is to find the buttons on the monitor itself, navigate the on-screen display, and adjust there. Most monitors live on a stand or arm where the buttons are inconvenient. Some have no physical brightness controls at all (pro displays driven through a stand-bay setup, ultrawide monitors with the buttons buried).
This is fixable. The fix involves talking a 30-year-old monitor protocol called DDC/CI directly to the monitor over the cable. Most third-party utilities do this. The catch in 2026 is that Apple Silicon Macs have a specific quirk with HDMI that the older utilities did not anticipate. Worth understanding both, because it changes which tool to pick.
What macOS does and does not give you natively
macOS exposes brightness control natively for a small allowlist of monitors:
- Apple Studio Display, Pro Display XDR, the older Thunderbolt Display.
- LG UltraFine 4K and 5K (the ones Apple sold alongside Apple Silicon Macs).
- Some other monitors that implement Apple's specific MCCS profile correctly.
For these monitors, macOS shows a brightness slider in System Settings, Displays, and the F1/F2 keys work. For everything else, macOS shows nothing and the keys do nothing.
This is not a bug. macOS chose conservative defaults: brightness control over DDC/CI is technically standard but vendors implement it inconsistently, and Apple did not want to ship a system feature that worked half the time. The trade-off is that if your monitor supports DDC, you can still control it; you just have to use a third-party tool.
What DDC/CI is, briefly
DDC stands for Display Data Channel. It is a small data line piggybacking on the same cable that carries video, defined back when VGA was new and standardized through generations of DisplayPort and HDMI. CI stands for Command Interface, the layer where you can read and write VCP codes (Virtual Control Panel codes) like "brightness" (VCP 0x10), "contrast" (VCP 0x12), "volume" (VCP 0x62), or "input source" (VCP 0x60).
Almost every external monitor manufactured in the past fifteen years supports DDC/CI to some degree. The catch is the cable and the host. DisplayPort and USB-C/Thunderbolt carry DDC reliably, the standard I/O Kit framebuffer interface lets a Mac app read and write VCP codes, and that is the path most monitor-control utilities have used since macOS 10.x.
HDMI is messier. HDMI also defines a DDC channel, but it routes through different hardware paths on different Macs. On Intel Macs, HDMI DDC went through the same I/O Kit framebuffer interface as everything else; the standard Mac DDC libraries worked. On Apple Silicon Macs, Apple changed the HDMI driver path to use IOAVService instead of the framebuffer interface, and the existing Mac DDC tools that did not know about IOAVService stopped working over HDMI on M1 and later.
The fix, for tools that do this right, is to detect the transport on a per-display basis: try I/O Kit framebuffer first (works for Thunderbolt, USB-C, DisplayPort), then fall back to IOAVService (works for Apple Silicon HDMI). Older tools that only implement the framebuffer path silently fail on Apple Silicon HDMI; newer tools handle both.
Option 1: TeenyDisplay ($9.99 once)
What I ship. Native Swift, $9.99 lifetime, 3-day free trial. Auto-detects the right DDC transport per display: I2C for Thunderbolt, USB-C, DisplayPort, IOAVService for Apple Silicon HDMI, software dimming as a final fallback for the rare monitor that supports neither.
What is in there:
- Brightness control with menu bar slider per display.
- Contrast control (VCP 0x12) where supported.
- Volume control over DDC, useful for monitors with built-in speakers.
- Input source switching (VCP 0x60). Useful if you have a monitor connected to multiple machines and want to switch inputs from Mac instead of the monitor's buttons.
- Power control (DPMS standby/off/on via VCP).
- Display presets. Save a brightness/contrast/input combination, switch to it with a hotkey or menu item.
- Brightness sync across multiple displays. One slider moves all of them in lockstep, or one of them.
- Keyboard shortcuts for brightness up/down. Optionally remap the F1/F2 keys to also drive external displays.
- Custom OSD overlay that mirrors macOS's native brightness-change visual feedback.
- Active color profile switcher for monitors with multiple ICC profiles.
- Resolution and refresh rate switcher exposed in the popup.
- URL scheme handler for automation. Set brightness from a Shortcut, an AppleScript, or any tool that can open a URL.
- Software dimming fallback. For displays that do not support DDC at all, teenydisplay can apply a transparent dark overlay to simulate dimming. Less ideal than real DDC because it does not adjust the backlight, but it covers monitors where the protocol is unsupported.
Things teenydisplay does not do: night-shift-style automatic warmth scheduling (use macOS Night Shift), virtual displays for headless Mac minis (use BetterDisplay), or color calibration with a hardware probe.
Option 2: MonitorControl (free, open source)
MonitorControl, originally by Joni Van Roost, is the long-running open-source Mac monitor control tool. Free, MIT-licensed, available from github.com/MonitorControl/MonitorControl or via Homebrew. It supports brightness, contrast, and volume over DDC, with optional keyboard shortcut remapping.
MonitorControl handles both transports (I2C and IOAVService) in current releases. Earlier versions had spotty Apple Silicon HDMI support, fixed over the past year. Settings UI is dense; some users find it overwhelming.
Pick if: you want free, open source, and you do not need display presets, URL automation, or color profile management.
Option 3: BetterDisplay (free / $19 Pro)
BetterDisplay by Waydabber is the deeper paid alternative. Free tier covers basic brightness. Pro at $19 once or $14.99/yr unlocks custom resolutions, virtual displays (useful for headless Mac mini setups where you want to RDP into the machine without an attached monitor), dummy display emulation, and color profile management.
Pick if: you have advanced multi-monitor needs (custom resolutions for non-standard panels, virtual displays, dummy emulation). For straight brightness control, BetterDisplay is overkill.
Option 4: Lunar (free / $25 Pro)
Lunar is the most feature-deep monitor control app. Free tier handles brightness. Pro adds adaptive brightness based on ambient light, smart sync between built-in and external displays, gamma controls, schedule-based brightness ramps. Niche.
Pick if: you want adaptive brightness or schedule-based ramps and you are willing to pay for them.
Setting up TeenyDisplay
- Download from teenydisplay.com, drag to Applications, launch.
- The app probes each connected display for DDC transport and supported VCP codes. Probing takes a second per display. The result shows in the Display Info panel.
- The menu bar icon shows brightness sliders for every connected display. If a display is using software dimming fallback, the slider is labeled accordingly.
- Optional: bind keyboard shortcuts for brightness up/down. Optionally remap F1/F2 to also drive external displays so the muscle memory you have for the built-in screen now works for the external one.
- Optional: create a display preset. Adjust the displays the way you like them, save the preset, bind a hotkey. Useful for "movie mode" or "night work" setups.
Total setup is under three minutes. Probing is the slowest part.
Common questions
Does this work over HDMI?
On Apple Silicon Macs, only with apps that implement the IOAVService transport (TeenyDisplay, recent MonitorControl, BetterDisplay, Lunar). On Intel Macs, the standard I2C transport works. Some HDMI cables and adapters strip DDC; if a tool reports "no DDC available" over HDMI, try a different cable or use a USB-C to DisplayPort cable instead.
Does it work over USB-C / Thunderbolt?
Yes, reliably. USB-C and Thunderbolt carry DDC well, and the standard I2C transport handles them.
Does it work with the Apple Studio Display?
The Studio Display exposes brightness through Apple's official APIs, so the macOS native slider works. Third-party tools also work but are not necessary.
Will it work with my unbranded HDMI display?
Probably. Most third-party monitors support DDC/CI. The compatibility list for MonitorControl is the most-comprehensive reference for which specific monitors are confirmed working in the open-source community.
Does it work through a docking station?
Mostly yes. Some docks pass DDC through, some do not. If brightness control fails through a dock, try connecting directly to test whether the dock or the monitor is the issue.
Why does the slider sometimes lag?
DDC writes can take 50 to 200ms per command depending on monitor. teenydisplay coalesces rapid slider changes so it does not flood the monitor with intermediate values, then writes the final value. The end result feels responsive even though the underlying protocol is slow.
What is the software dimming fallback actually doing?
Drawing a transparent dark overlay on top of everything else. It does not adjust the monitor's backlight, so it is not as good as real brightness control (the backlight stays at full power, eye strain in dark rooms is not really helped). Better than nothing for displays that simply do not support DDC.
The bottom line
External monitor brightness on the Mac requires a third-party tool for almost every monitor that is not an Apple-branded display. teenydisplay at $9.99 once is the focused paid pick with proper Apple Silicon HDMI handling, display presets, and URL automation. MonitorControl is the free, open-source alternative. BetterDisplay and Lunar are heavier paid options for users with niche multi-monitor needs.
Pick based on whether you want simple paid, free open source, or specialized capability.
$9.99 once. Apple Silicon HDMI handled. URL automation built in.
teenydisplay is the focused paid pick for Mac external monitor control. Native Swift, lifetime, 3-day free trial.