Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
yes, an edid editor would probably work but I don't look forward to having to carry an extra piece of HW just for the "just in case".
I guess I'm still not ready to leave my Windows laptop at home 🙂

If someone has some clues on how to force a different resolution via BetterDisplay, please let me know!
 
Try SwitchResX which is simpler than BetterDisplay. Add custom modes for the lower resolutions if the modes are not automatically created for you.
https://www.madrau.com/usage/custom

In the current resolutions list, it should show which modes are scaled or not scaled, and which modes are HiDPI or not HiDPI (low resolution). You want a non-scaled non-HiDPI (low resolution) 1920x1080 mode as I've high-lighted in the attached screenshot.
The HiDPI mode outputs 3840x2160. It is not scaled (the TV is 4K) but HiDPI has twice as many pixels vertically and horizontally.
HDMI 1080p list.png

Double-click the resolution to verify the timing. HDMI 1080p is supposed to be 148.5 MHz (half of 297 MHz for 4K30 which is half of 594 MHz for 4K60).
HDMI 1080p timing.png

I haven't tried this on an Apple Silicon Mac. Post some pictures if you see something different.
 
Thanks @joevt

That worked!

For the first time my monitor received a non-native resolution!

IMG_0506.jpeg

Can I add a specific resolution? I don't need to do any changes on my current setup but I see that there are very few "non scaled/non HiDPI" resolutions and 1920x1080 is not one of them.

I'd imagine if I ever needed to send a non-native resolution to something it's going to be one of the standard ones.

SCR-20260517-jltu.png

Finally, does anybody know if this could be done with BetterDisplay? Just trying to optimise the amount of apps running, that's it!

Thanks so much!
 
Can I add a specific resolution? I don't need to do any changes on my current setup but I see that there are very few "non scaled/non HiDPI" resolutions and 1920x1080 is not one of them.
Add modes (scaled or not scaled) using the Custom Resolutions tab in SwitchResX. Select CVT-RB to calculate the timing parameters for a resolution/refresh rate combo. Or look up the timing parameters for the mode you want and enter them manually. CVT-RB is not the same as HDMI but most HDMI displays can accept CVT-RB timings. CVT-RB2 allows for slightly higher pixel clocks by reducing the blanking periods even further than CVT-RB. HDMI has rather large blanking periods.

I'd imagine if I ever needed to send a non-native resolution to something it's going to be one of the standard ones.
It doesn't need to be a standard mode.

You should enable the "Show best resolutions for display in bold" option in SwitchResX for each display. These are usually the non-scaled modes (HiDPI and non-HiDPI) which match a mode defined in the display's EDID. SwitchResX Custom Resolutions works by adding modes to an override EDID stored in a file in the /Library/Displays/Contents/Resources/Overrides folder.

Finally, does anybody know if this could be done with BetterDisplay? Just trying to optimise the amount of apps running, that's it!
I don't know. I use BetterDisplay for DDC stuff and SwitchResX for display mode stuff.
 
  • Like
Reactions: rb2112
It doesn't need to be a standard mode.

Thanks
What I meant was "I will probably only need to run standard resolutions" if I ever needed to. Force 1080p and things like that. Nothing crazy.

I tried adding a 1080p resolution following a calculator I found online but it seems to be invalid. What am I doing wrong?
 

Attachments

  • SCR-20260517-tact.png
    SCR-20260517-tact.png
    97.4 KB · Views: 71
  • SCR-20260517-tbcz.png
    SCR-20260517-tbcz.png
    170.5 KB · Views: 80
What I meant was "I will probably only need to run standard resolutions" if I ever needed to. Force 1080p and things like that. Nothing crazy.
So the 1080p60 resolution existed in SwitchResX without you having to create it because it is a standard mode included in the EDID of the display.

I tried adding a 1080p resolution following a calculator I found online but it seems to be invalid. What am I doing wrong?
It appears that you are creating a CVT-RB version of the 1080p60 mode. It looks like you entered everything correctly.
I'm not sure what you mean by invalid.
You press tab to tab out of the current edit field, click OK, press Command-S to save the changes (applies the custom timings to the display override file).
Then click "Activate Immediately" to have the system reload the overrides. Or disconnect the display, wait a couple seconds, and reconnect.

SwitchResX has a built-in CVT-RB calculator that should produce the same result.
Select "Use simplified settings", and select CVT-RB from the corresponding menu. Enter 1980 for the Active horizontal width. Enter 1080 for the Active vertical lines. Enter 60 for the vertical scan rate Hz.
All the other values are calculated for you.

If the system doesn't accept a timing, maybe it's because a similar timing already exists, such as the built-in 1080p60 mode from the display's original EDID? I'm not sure how Apple Silicon chooses what modes to keep.
You may wish to experiment with a custom resolution that doesn't exist in the Current Resolutions list to verify that the Custom Resolutions feature is working in SwitchResX on Apple Silicon.
You could also try a 1080p mode with a refresh rate that doesn't exist in the Current Resolutions list.
 
With "invalid" I mean this:

Ok. That means the system isn't adding it to the list of current resolutions. Did you try all of these?
1) Click "Activate Immediately" to have the system reload the overrides.
2) Disconnect the display, wait a couple seconds, and reconnect.
3) Restart.
Try creating a mode that is more different than existing modes (change refresh rate or resolution enough that the OS doesn't think they're too similar).
 
I cannot find an "Activate immediately" option?
When you make changes to Custom Resolutions, SwitchResX says "modified".
SwitchResX modified.png

Press Command-S to save the changes.
Then the "Activate Immediately" button appears.
SwitchResX saved.png

I'm not sure if it's the same with Apple Silicon. If not, then you have the other methods to try (reconnect the display or restart).
 
I used SwitchResX to send 1920x1080 to my 27" 4K Alienware 360Hz display (it was a gaming "dual" display so I could set the display itself to 1920x1080). I was using my 2019 Intel MBP with Vega 20 GPU and was hoping it wouldn't heat up so much if it just sent 1920x1080 worth of data to the display. Even when I switched the display's settings to 1920x1080 on the display, the MBP still recognized it as 4K. SwitchResX fixed that hurdle. But I found that the scaling macOS did (displaying 1920x1080 on 4K) was smoother and better than the pixelated mess that resulted from using the Alienware's onboard settings. Don't know what my point was in sharing this story, lol. I now have an M5 Pro with ASD and no more issues and loving 5K.
 
Another vote for Better display.

This is where both Windows and Linux offer a superior experience to that of Apple. My 4k monitor looks better, and I have better scaling choices in those operating systems then on macos.
What?! Mac looks way better than Windows! It is far clearer. Exact same display; both systems connected via HDMI.
 
I don't see that I'm afraid. Maybe it's because of the "invalid" tag?
Your changes are saved (no "modified" indicator) and your changes were already attempted (the "invalid?" indicator) so there's no reason to show the "Activate Immediately" button.
Try making a new custom mode.
 
@joevt

1920x1080 is one of the modes I would need. If that is not accepted, then this won't work for me. Anything I can change with the mode to make macOS accepting it?

@blufrog
It's also my experience I'm afraid. My 2560x1600 monitors look much crisper in Windows than in macOS.
 
I explained that already! I work in the AV industry, I am on the go, I might need a 1920x1080 output for XYZ reasons. It's beyond my control. I can't say "no, change your equipment, I won't change my resolution!" 😀
 
1920x1080 is one of the modes I would need. If that is not accepted, then this won't work for me. Anything I can change with the mode to make macOS accepting it?
What's wrong with the 1920x1080 modes that you showed in #28 ?

If you really want to get 1080p59.93 Hz working (or did you want 1080p59.94 Hz?), then you might need to edit the EDID manually to remove all references to 1080p60. Then manually insert the new EDID into the display override file.

But first verify that Custom Resolutions works with other refresh rates or resolutions.
 
What's wrong with the 1920x1080 modes that you showed in #28 ?
It's 2048x1080 🙂

If you really want to get 1080p59.93 Hz working (or did you want 1080p59.94 Hz?), then you might need to edit the EDID manually to remove all references to 1080p60. Then manually insert the new EDID into the display override file.

But first verify that Custom Resolutions works with other refresh rates or resolutions.
I don't need anything specific.

This is the potential situation:

- I am working on site and I wire the Mac into someone else's system. The System doesn't like whatever resolution macOS is sending (for <whatever> reason which is out of my control) so I am asked to try a different resolution (it could be 4K, 1080p, 24hz, 30hz, 60hz, anything).

Two scenarios:

Windows:
- Go to Displays, change as required, done.

macOS:
- ??

It needs to be something simple that I can do on the fly quickly. If that is not possible, then I'll have to carry my Windows laptop as well!

It's quite bizarre that changing video resolution is so complicated in 2026! 😀
 
It's 2048x1080 🙂
Oh, right. I see that you showed 2048x1080 24 Hz working. But that wasn't a custom mode, was it?
That same post showed non-scaled 1920x1080 modes but those are HiDPI (4K) which is not what you want (1080p).
So the question is why it won't let you add 1920x1080 60Hz mode.

Will it let you add 1920x1080 55 Hz?

Can you use SwitchResX or BetterDisplay to export the EDID? We can see what modes the display advertizes.

In SwitchResX, sort the modes by resolution so we can see all the 1920x1080 modes.

Run https://github.com/joevt/AllRez to get a list of all the modes that exist in the I/O Registry. Zip the results and post it here.

Use BetterDisplay command line displayModeList option to list all the modes. You can use it to set a mode as well. We'll use this to compare with the modes obtained by AllRez and the EDID.
https://github.com/waydabber/BetterDisplay/issues/2646
https://github.com/waydabber/BetterDisplay/wiki/Integration-features,-CLI

I don't need anything specific.

This is the potential situation:

- I am working on site and I wire the Mac into someone else's system. The System doesn't like whatever resolution macOS is sending (for <whatever> reason which is out of my control) so I am asked to try a different resolution (it could be 4K, 1080p, 24hz, 30hz, 60hz, anything).

Two scenarios:

Windows:
- Go to Displays, change as required, done.

macOS:
- ??

It needs to be something simple that I can do on the fly quickly. If that is not possible, then I'll have to carry my Windows laptop as well!

It's quite bizarre that changing video resolution is so complicated in 2026! 😀
macOS reads the supported modes from the display's EDID so it should not use any mode that is not supported by the display but I guess some modes might not work for <whatever> reason as you say.

You might need a EDID emulator device so that such modes can be eliminated?
https://hdfury.com/product/dr-hdmi-8k/
 
Will it let you add 1920x1080 55 Hz?
unfortunately not 🙂

All files zipped and attached - not sure why my main monitor is now called SwitchRes etc.

Yes, an EDID box will work but won't work for me. Mainly because I don't want another piece of equipment to carry around + the setup time etc.

Not to mention an extra power supply (and socket to be found) and $199 for something that windows does for free. 🙂

If there is a simple way to change the resolution via an app, great. If not, I'll just keep in mind that whenever a video output is required, macOS is out of the game.

Thanks for your help so far!
 

Attachments

All files zipped and attached - not sure why my main monitor is now called SwitchRes etc.

Yes, an EDID box will work but won't work for me. Mainly because I don't want another piece of equipment to carry around + the setup time etc.

Not to mention an extra power supply (and socket to be found) and $199 for something that windows does for free. 🙂

If there is a simple way to change the resolution via an app, great. If not, I'll just keep in mind that whenever a video output is required, macOS is out of the game.

The output from BetterDisplay get -n="19" -displayModeList is missing useful info. I can't tell the difference between scaled and not scaled modes. @waydabber , Is there a command line to include timing info for each mode so we can tell the difference between a HDMI mode and a CVT-RB mode?
For example, mode 99 - 2048x1080 24Hz 10bpc which in the SwitchResX list is shown to be not scaled.

AllRez in the "ALL MODES" section also cannot tell the difference between a scaled and non-scaled mode. It does show the difference between HiDPI (dens=2.0) and not-HiDPI (dens=1.0) modes.
The BetterDisplay mode numbers and info appears to match the mode numbers and info in the AllRez "ALL MODES" section. I guess BetterDisplay is using the same API that AllRez uses to get this mode list. Timing info (pixel clock, sync width, etc) must be obtained elsewhere.

AllRez shows all the timing info for all the modes in the "TimingElements" list but it doesn't know how to map between those and the modes in the "ALL MODES" section.
AllRez does not have parsing/formatting/de-duplicating code for the "TimingElements" section like it does for info from Intel Macs. It could be made much more concise.
More info at https://forums.macrumors.com/threads/diy-5k-monitor-success.2253100/post-32093817

The EDID shows 1920x1080 60Hz HDMI timing as a standard timing and as a CEA mode.
In the TimingElements, ID 72 and 19 both appear to be 1920x1080 60Hz HDMI timings. The first one is not virtual and is promoted and has a score and has a finite set of valid pixel encodings.

The EDID shows the custom mode that you created (1920x1080 55Hz) which appears to match ID 101 in the TimingElements (hint: SyncRate needs to be divided by 65536 to get a floating point value for horizontal kHz or vertical Hz). This means the EDID is the overridden version created by SwitchResX. Getting the real EDID requires a different method (e.g. connect the display to an Intel Mac and use AllRez from there).
The custom mode exists in the "ALL MODES" list and the BetterDisplay displayModeList output as ID 90. This mode is the basis for mode 8 (960x540@55Hz HiDPI).

Do you not see this custom mode 1920x1080 55Hz in SwitchResX and BetterDisplay?

Did you read the link I posted at https://forums.macrumors.com/thread...een-resolution-in-macos.2482428/post-34595597 ?

Does BetterDisplay have these options?
- "Allow resolutions marked as invalid"
- "Show display modes marked as unsafe or invalid"

Try this command:
Code:
./BetterDisplay set -n="19" -displayModeNumber=90
Does it do 1080p55?

What does the low level mode list look like?
Code:
./BetterDisplay set -n="19" -connectionModeListAll
 

Attachments

Hi @joevt - the app uses `CGSGetNumberOfDisplayModes` to get display modes. But the app does not match each mode line to `TimingElements` - those are listed separately with the `-connectionModeListAll` (that is actually timing elements and their `ColorModes` combined). Until now it did not occur to me that connecting the two would be useful, especially as on recent Apple Silicon Macs non-scaled "unsafe" resolution switch using the standard methods usually simply fails - so in order to properly change the output display mode, the user needs to override the "native resolution" to one matching some other timing (resolution entry, the refresh rate of course can be changed freely) - then macOS will use that timing for output and as a basis for scaled resolutions.
 
  • Like
Reactions: joevt and tony359
so in order to properly change the output display mode, the user needs to override the "native resolution" to one matching some other timing (resolution entry, the refresh rate of course can be changed freely) - then macOS will use that timing for output and as a basis for scaled resolutions.
Ha! You know, I looked at that field and I was wondering whether that was the trick!

I am on a different monitor today but I tried to pretend the native resolution of the panel was 1920x1080 and it worked, the monitor is now receiving 1920x1080 instead of the native 3440x1440! It was simple in the end! 😀

I'll test it a bit more but this seems to be a simple workaround. Thank you @waydabber and also @joevt for the extensive support!
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.