-
-
Save talkingmoose/1404492cb0326395f1040af15870eeb9 to your computer and use it in GitHub Desktop.
| https://www.apple.com/os/macos/ | |
| Published Date: June 8, 2026 | |
| Updated: June 10, 2026 | |
| Verification: https://regex101.com/r/GRwi7n/3 | |
| 1) Exact regex — Matches major model identifier numbers based on Apple's knowledge base article (more accurate): | |
| ^(Mac(BookPro1[78]|1[3-7]|BookAir10|mini9),\d+|iMac21,\d+)$ | |
| 2) Current or higher regex — Matches model identifiers based on Apple's knowledge base article and may match higher versions before this regex is updated (more future-proof). | |
| ^(Mac(BookPro1[78]|1[3-9]|BookAir10|mini9),\d+|iMac21,\d+)$ | |
| Current or higher regexes aren't available for some models where Apple has used the same model identifier schema for multiple models. | |
| Either regex will match any of the supported following model identifiers: | |
| MacBook Pro | |
| https://support.apple.com/en-us/108052 | |
| Exact regex: ^(Mac((BookPro1([78],\d))|1(4,([5679]|10)|5,([36-9]|1[01])|6,[15-8]|7,[126-9])))$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac17,9 | |
| Mac17,8 | |
| Mac17,7 | |
| Mac17,6 | |
| Mac17,2 | |
| Mac17,1 | |
| Mac16,8 | |
| Mac16,7 | |
| Mac16,6 | |
| Mac16,5 | |
| Mac16,1 | |
| Mac15,11 | |
| Mac15,10 | |
| Mac15,9 | |
| Mac15,8 | |
| Mac15,7 | |
| Mac15,6 | |
| Mac15,3 | |
| Mac14,10 | |
| Mac14,9 | |
| Mac14,7 | |
| Mac14,6 | |
| Mac14,5 | |
| MacBookPro18,4 | |
| MacBookPro18,3 | |
| MacBookPro18,2 | |
| MacBookPro18,1 | |
| MacBookPro17,1 | |
| Unsupported: | |
| MacBookPro16,4 | |
| MacBookPro16,2 | |
| MacBookPro16,1 | |
| MacBookPro16,3 | |
| MacBookPro15,4 | |
| MacBookPro15,3 | |
| MacBookPro15,2 | |
| MacBookPro15,1 | |
| MacBookPro14,3 | |
| MacBookPro14,2 | |
| MacBookPro14,1 | |
| MacBookPro13,3 | |
| MacBookPro13,2 | |
| MacBookPro13,1 | |
| MacBookPro12,1 | |
| MacBookPro11,5 | |
| MacBookPro11,4 | |
| MacBookPro11,3 | |
| MacBookPro11,2 | |
| MacBookPro11,1 | |
| MacBookPro10,2 | |
| MacBookPro10,1 | |
| MacBookPro9,2 | |
| MacBookPro9,1 | |
| MacBookPro8,3 | |
| MacBookPro8,2 | |
| MacBookPro8,1 | |
| MacBookPro7,1 | |
| MacBookPro6,2 | |
| MacBookPro6,1 | |
| MacBookPro5,5 | |
| MacBookPro5,4 | |
| MacBookPro5,3 | |
| MacBookPro5,2 | |
| MacBookPro5,1 | |
| MacBookPro4,1 | |
| MacBookPro3,1 | |
| MacBookPro2,2 | |
| MacBookPro2,1 | |
| MacBookPro1,2 | |
| MacBookPro1,1 | |
| --------------------------------------------------- | |
| MacBook Air | |
| https://support.apple.com/en-us/102869 | |
| Exact regex: ^(Mac(1([56],1[23]|4,(2|15)|7,[34])|BookAir10,1))$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac17,4 | |
| Mac17,3 | |
| Mac16,13 | |
| Mac16,12 | |
| Mac15,13 | |
| Mac15,12 | |
| Mac14,15 | |
| Mac14,2 | |
| MacBookAir10,1 | |
| Unsupported: | |
| MacBookAir9,1 | |
| MacBookAir8,2 | |
| MacBookAir8,1 | |
| MacBookAir7,2 | |
| MacBookAir7,1 | |
| MacBookAir6,2 | |
| MacBookAir6,1 | |
| MacBookAir5,2 | |
| MacBookAir5,1 | |
| MacBookAir4,2 | |
| MacBookAir4,1 | |
| MacBookAir3,2 | |
| MacBookAir3,1 | |
| MacBookAir2,1 | |
| MacBookAir1,1 | |
| --------------------------------------------------- | |
| MacBook Neo | |
| https://hw-model-names.services.jamfcloud.com/1/computerModels.xml | |
| Note: MacBook Neo may not support versions of macOS Tahoe lower than 26.3. | |
| Exact regex: ^Mac17,5$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac17,5 | |
| Unsupported: | |
| None. | |
| --------------------------------------------------- | |
| MacBook | |
| https://support.apple.com/en-us/103257 | |
| Supported: | |
| None. | |
| Unsupported: | |
| MacBook10,1 | |
| MacBook9,1 | |
| MacBook8,1 | |
| MacBook7,1 | |
| MacBook6,1 | |
| MacBook5,2 | |
| MacBook5,1 | |
| MacBook4,1 | |
| MacBook3,1 | |
| MacBook2,1 | |
| MacBook1,1 | |
| --------------------------------------------------- | |
| iMac Pro | |
| https://support.apple.com/en-us/HT210222 | |
| Supported | |
| None. | |
| Unsupported:: | |
| iMacPro1,1 | |
| --------------------------------------------------- | |
| iMac | |
| https://support.apple.com/en-us/108054 | |
| Exact regex: ^(Mac1((6,[23]|5,[45]))|iMac(21),[12])$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac16,3 | |
| Mac16,2 | |
| Mac15,5 | |
| Mac15,4 | |
| iMac21,2 | |
| iMac21,1 | |
| Unsupported: | |
| iMac20,2 | |
| iMac20,1 | |
| iMac19,2 | |
| iMac19,1 | |
| iMac18,3 | |
| iMac18,2 | |
| iMac18,1 | |
| iMac17,1 | |
| iMac16,2 | |
| iMac16,1 | |
| iMac15,1 | |
| iMac14,4 | |
| iMac14,3 | |
| iMac14,2 | |
| iMac14,1 | |
| iMac13,2 | |
| iMac13,1 | |
| iMac12,2 | |
| iMac12,1 | |
| iMac11,3 | |
| iMac11,2 | |
| iMac11,1 | |
| iMac10,1 | |
| iMac9,1 | |
| iMac8,1 | |
| iMac7,1 | |
| iMac6,1 | |
| iMac5,2 | |
| iMac5,1 | |
| iMac4,2 | |
| iMac4,1 | |
| iMac,1 | |
| --------------------------------------------------- | |
| Mac mini | |
| https://support.apple.com/en-us/102852 | |
| Exact regex: ^(Mac(1((6,1[015])|(4,(3|12)))|mini9,1))$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac16,11 | |
| Mac16,10 | |
| Mac14,3 | |
| Mac14,12 | |
| Macmini9,1 | |
| Unsupported: | |
| Macmini8,1 | |
| Macmini7,1 | |
| Macmini6,2 | |
| Macmini6,1 | |
| Macmini5,3 | |
| Macmini5,2 | |
| Macmini5,1 | |
| Macmini4,1 | |
| Macmini3,1 | |
| Macmini2,1 | |
| Macmini1,1 | |
| --------------------------------------------------- | |
| Mac Studio | |
| https://support.apple.com/en-us/102231 | |
| Exact regex: ^(Mac1((3,[12])|(4,1(3|4))|5,14|6,9))$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac16,9 | |
| Mac15,14 | |
| Mac14,14 | |
| Mac14,13 | |
| Mac13,2 | |
| Mac13,1 | |
| --------------------------------------------------- | |
| Mac Pro | |
| https://support.apple.com/en-us/102887 | |
| Exact regex: ^Mac14,8$ | |
| Current or higher regex: Not available | |
| Supported: | |
| Mac14,8 | |
| Unsupported: | |
| MacPro7,1 | |
| MacPro6,1 | |
| MacPro5,1 | |
| MacPro4,1 | |
| MacPro3,1 | |
| MacPro2,1 | |
| MacPro1,1 |
^Mac((BookPro1(6,4|[78],\d)|(1[3-9]|BookAir10|mini9|),\d+))|iMac21,\d+$
Seems to exclude the last 2019 Intel MBP's I have.
Thanks for the catch, @chilcote!
@jhbush According to https://www.apple.com/os/macos/, macOS Golden Gate 27 supports MacBook Pro with Apple silicon (2020 and later. It appears to end Intel support altogether.
MacBookPro16,4 is also an Intel and should be in the unsupported list.
I have made the reverse regex (e.g. macOS 27 NON-compatible) like this:
^(MacPro[1-7],[0-9]|iMac,1|iMacPro1,1|iMac([1-9]|1[0-9]|20),[0-9]|Macmini[1-8],[0-9]|MacBookAir[1-9],[0-9]|MacBook[0-9,]+|MacBookPro([1-9]|1[0-6]),[0-9])$
I find it better to search for non-compatible to avoid issues when new models are added.
I got the list by grabbing all the Board IDs from "/Volumes/Shared Support/com_apple_MobileAsset_MacSoftwareUpdate/com_apple_MobileAsset_MacSoftwareUpdate.xml" and comparing against mdm data to map the Model IDs. Supported models afaict are:
MacBookPro18,1,J316sAP
Mac16,12,J713AP
Mac16,7,J616sAP
Mac16,5,J616cAP
Macmini9,1,J274AP
Mac16,11,J773sAP
MacBookPro18,3,J314sAP
Mac14,12,J474sAP
MacBookPro18,2,J316cAP
Mac16,8,J614sAP
MacBookAir10,1,J313AP
Mac16,6,J614cAP
Mac15,12,J613AP
Mac14,2,J413AP
Mac15,7,J516sAP
Mac15,6,J514sAP
Mac15,9,J516cAP
Mac14,14,J475dAP
Mac15,8,J514cAP
Mac17,6,J716cAP
Mac13,2,J375dAP
Mac16,10,J773gAP
MacBookPro17,1,J293AP
Mac16,9,J575cAP
Mac14,9,J414sAP
Mac17,7,J714cAP
Mac16,13,J715AP
Mac14,10,J416sAP
Mac15,13,J615AP
Mac15,10,J514mAP
Mac15,11,J516mAP
Mac14,6,J416cAP
Mac14,15,J415AP
Mac14,13,J475cAP
Mac17,2,J704AP
MacBookPro18,4,J314cAP
Mac14,5,J414cAP
Mac15,14,J575dAP
Mac17,8,J716sAP
Mac17,9,J714sAP
Mac17,3,J813AP
Mac13,1,J375cAP
Mac15,3,J504AP
Mac14,8,J180dAP
Mac16,1,J604AP
Mac17,4,J815AP
Mac14,7,J493AP
Mac16,2,J623AP
Mac14,3,J473AP
Mac16,3,J624AP
Mac17,5,J700AP
iMac21,1,J456AP
iMac21,2,J457AP
Mac15,4,J433AP
Mac15,5,J434AP
@talkingmoose Love it, thank you! Can you do tvOS and ipadOS too! Please.
Hi @talkingmoose and others...
Thanks for sharing this. I tested the Board ID mapping idea against Jamf Pro inventory.
Jamf Pro does not appear to expose Board ID as a native computer inventory field. The standard hardware inventory gives Model and Model Identifier, but not the lower-level Board ID / hardware compatibility identifier. So for a fleet-wide Jamf workflow, an Extension Attribute seems to be the practical route.
On Intel Macs, the classic EFI board-id can be collected with ioreg. On Apple Silicon, board-id itself was not useful in my testing, but the first value from the device tree compatible property worked well.
For example, one Apple Silicon Mac returned:
Here is an example of the Jamf Pro Extension Attribute...
#!/bin/bash
hardware_id=""
arch="$(/usr/bin/arch)"
if [[ "$arch" == "i386" ]]; then
hardware_id="$(/usr/sbin/ioreg -l 2>/dev/null | /usr/bin/awk -F'"' '/board-id/{print $4; exit}')"
else
hardware_id="$(/usr/sbin/ioreg -l -p IODeviceTree 2>/dev/null | /usr/bin/awk -F'"' '/"compatible" = </ {print $4; exit}')"
fi
[[ -n "$hardware_id" ]] || hardware_id="NOT_FOUND"
echo "<result>${hardware_id}</result>"
J414cAP
from:
"compatible" = <"J414cAP","Mac14,5","AppleARM">
That gives a workable Jamf mapping path:
Apple installer metadata hardware IDs
→ Jamf Extension Attribute hardware compatibility ID
→ Jamf native Model Identifier
→ Jamf Smart Group / Advanced Search regex
So yes, your approach helps, but for Jamf Pro the missing piece is collecting that hardware compatibility ID with an Extension Attribute first.
To make this easier to repeat, I built a small script that authenticates to Jamf Pro with an API Client stored in the macOS Keychain, reads computer inventory, and exports a CSV mapping of the Extension Attribute hardware compatibility ID to Jamf’s native Model Identifier. It can also list available Extension Attribute names and export Model Identifier counts, which makes it useful for validating compatibility regexes before using them in Jamf Smart Groups or Advanced Searches.
iPadOS 27-compatible iPads
https://www.apple.com/os/ipados/
- Exact regex
^(iPad8,9|iPad8,10|iPad8,11|iPad8,12|iPad12,1|iPad12,2|iPad13,1|iPad13,2|iPad13,4|iPad13,5|iPad13,6|iPad13,7|iPad13,8|iPad13,9|iPad13,10|iPad13,11|iPad13,16|iPad13,17|iPad13,18|iPad13,19|iPad14,1|iPad14,2|iPad14,3|iPad14,4|iPad14,5|iPad14,6|iPad14,8|iPad14,9|iPad14,10|iPad14,11|iPad15,3|iPad15,4|iPad15,5|iPad15,6|iPad15,7|iPad15,8|iPad16,1|iPad16,2|iPad16,3|iPad16,4|iPad16,5|iPad16,6)$
Current or higher regex: Not available. iPad model identifier generation is not stable enough to safely infer future compatibility.
Supported model identifiers:
iPad8,9
iPad8,10
iPad8,11
iPad8,12
iPad12,1
iPad12,2
iPad13,1
iPad13,2
iPad13,4
iPad13,5
iPad13,6
iPad13,7
iPad13,8
iPad13,9
iPad13,10
iPad13,11
iPad13,16
iPad13,17
iPad13,18
iPad13,19
iPad14,1
iPad14,2
iPad14,3
iPad14,4
iPad14,5
iPad14,6
iPad14,8
iPad14,9
iPad14,10
iPad14,11
iPad15,3
iPad15,4
iPad15,5
iPad15,6
iPad15,7
iPad15,8
iPad16,1
iPad16,2
iPad16,3
iPad16,4
iPad16,5
iPad16,6
tvOS 27-compatible Apple TV models
- Exact regex
^(AppleTV11,1|AppleTV14,1)$
Current or higher regex: Not available. tvOS values should be kept under review against Apple's published compatibility details.
Supported model identifiers:
AppleTV11,1
AppleTV14,1
iPadOS 27-compatible iPads https://www.apple.com/os/ipados/
1. Exact regex^(iPad8,9|iPad8,10|iPad8,11|iPad8,12|iPad12,1|iPad12,2|iPad13,1|iPad13,2|iPad13,4|iPad13,5|iPad13,6|iPad13,7|iPad13,8|iPad13,9|iPad13,10|iPad13,11|iPad13,16|iPad13,17|iPad13,18|iPad13,19|iPad14,1|iPad14,2|iPad14,3|iPad14,4|iPad14,5|iPad14,6|iPad14,8|iPad14,9|iPad14,10|iPad14,11|iPad15,3|iPad15,4|iPad15,5|iPad15,6|iPad15,7|iPad15,8|iPad16,1|iPad16,2|iPad16,3|iPad16,4|iPad16,5|iPad16,6)$
Current or higher regex: Not available. iPad model identifier generation is not stable enough to safely infer future compatibility.
Supported model identifiers:
iPad8,9 iPad8,10 iPad8,11 iPad8,12 iPad12,1 iPad12,2 iPad13,1 iPad13,2 iPad13,4 iPad13,5 iPad13,6 iPad13,7 iPad13,8 iPad13,9 iPad13,10 iPad13,11 iPad13,16 iPad13,17 iPad13,18 iPad13,19 iPad14,1 iPad14,2 iPad14,3 iPad14,4 iPad14,5 iPad14,6 iPad14,8 iPad14,9 iPad14,10 iPad14,11 iPad15,3 iPad15,4 iPad15,5 iPad15,6 iPad15,7 iPad15,8 iPad16,1 iPad16,2 iPad16,3 iPad16,4 iPad16,5 iPad16,6
@uurazzle Great! Thank you.
AI gave me (I believe I used Gemini)
^iPad(8,(9|1[0-2])|[1-9]\d+,\d+)$
Heres an iPhone regex I came up with
Exact (matches only currently known supported generations):
^iPhone(1[2-9]|20),\d+$
Current-or-higher (future-proof, matches 12 and above):
^iPhone([2-9][0-9]|1[2-9]),\d+$
I created a Bash script to help automate generating Apple OS 27-compatible model identifier regexes for Jamf Pro workflows.
The script can generate regex output for macOS 27, iOS 27, iPadOS 27, and tvOS 27, including Jamf-friendly copy/paste output, documentation-style reports, supported model identifier lists, and quick model testing.
It is meant to make it easier to build smart groups, extension attributes, or documentation around OS compatibility without manually maintaining long regex strings by hand.
Example session output:
OS 27 Compatible Model Regex Generator 1.0.5
Choose platform:
1) all
2) macos
3) ios
4) ipados
5) tvos
Platform [1]: 1
Choose output format:
1) plain - platform label plus regex
2) jamf - Jamf Pro criterion copy/paste format
3) markdown-report - documentation-friendly report
4) list - supported model identifiers only
Format [2]: 3
For example...
macOS 27 Golden Gate-compatible Macs
https://www.apple.com/os/macos/
1. Exact match regex
^(Mac(BookPro1[78]|1[3-7]|BookAir10|mini9),\d+|iMac21,\d+)$
Use this when you only want to match the Mac model identifiers listed below.
2. Current and newer Mac regex
^(Mac(BookPro1[78]|1[3-9]|BookAir10|mini9),\d+|iMac21,\d+)$
Use this when you want the regex to also match newer Mac model identifiers, such as future Mac18 or Mac19 models, before this script is updated.
Supported model identifiers:
Mac13,1
Mac13,2
Mac14,2
Mac14,3
Mac14,5
Mac14,6
Mac14,7
Mac14,8
Mac14,9
Mac14,10
Mac14,12
Mac14,13
Mac14,14
Mac14,15
Mac15,3
Mac15,4
Mac15,5
Mac15,6
Mac15,7
Mac15,8
Mac15,9
Mac15,10
Mac15,11
Mac15,12
Mac15,13
Mac15,14
Mac16,1
Mac16,2
Mac16,3
Mac16,5
Mac16,6
Mac16,7
Mac16,8
Mac16,9
Mac16,10
Mac16,11
Mac16,12
Mac16,13
Mac17,1
Mac17,2
Mac17,3
Mac17,4
Mac17,5
Mac17,6
Mac17,7
Mac17,8
Mac17,9
MacBookAir10,1
MacBookPro17,1
MacBookPro18,1
MacBookPro18,2
MacBookPro18,3
MacBookPro18,4
Macmini9,1
iMac21,1
iMac21,2
---------------------------------------------------
iOS 27-compatible iPhones
https://www.apple.com/os/ios/
1. Exact match regex
^(iPhone12,1|iPhone12,3|iPhone12,5|iPhone12,8|iPhone13,1|iPhone13,2|iPhone13,3|iPhone13,4|iPhone14,2|iPhone14,3|iPhone14,4|iPhone14,5|iPhone14,6|iPhone14,7|iPhone14,8|iPhone15,2|iPhone15,3|iPhone15,4|iPhone15,5|iPhone16,1|iPhone16,2|iPhone17,1|iPhone17,2|iPhone17,3|iPhone17,4|iPhone17,5|iPhone18,1|iPhone18,2|iPhone18,3|iPhone18,4|iPhone18,5)$
Use this to match only the iPhone model identifiers listed below.
2. Short current and newer iPhone regex
^iPhone(12,(1|3|5|8)|1[3-9],\d+)$
Use this when you want a shorter regex that also matches newer iPhone model identifiers before this script is updated. This is broader than the exact match regex.
Supported model identifiers:
iPhone12,1
iPhone12,3
iPhone12,5
iPhone12,8
iPhone13,1
iPhone13,2
iPhone13,3
iPhone13,4
iPhone14,2
iPhone14,3
iPhone14,4
iPhone14,5
iPhone14,6
iPhone14,7
iPhone14,8
iPhone15,2
iPhone15,3
iPhone15,4
iPhone15,5
iPhone16,1
iPhone16,2
iPhone17,1
iPhone17,2
iPhone17,3
iPhone17,4
iPhone17,5
iPhone18,1
iPhone18,2
iPhone18,3
iPhone18,4
iPhone18,5
---------------------------------------------------
iPadOS 27-compatible iPads
https://www.apple.com/os/ipados/
1. Exact match regex
^(iPad8,9|iPad8,10|iPad8,11|iPad8,12|iPad12,1|iPad12,2|iPad13,1|iPad13,2|iPad13,4|iPad13,5|iPad13,6|iPad13,7|iPad13,8|iPad13,9|iPad13,10|iPad13,11|iPad13,16|iPad13,17|iPad13,18|iPad13,19|iPad14,1|iPad14,2|iPad14,3|iPad14,4|iPad14,5|iPad14,6|iPad14,8|iPad14,9|iPad14,10|iPad14,11|iPad15,3|iPad15,4|iPad15,5|iPad15,6|iPad15,7|iPad15,8|iPad16,1|iPad16,2|iPad16,3|iPad16,4|iPad16,5|iPad16,6)$
Use this to match only the iPad model identifiers listed below.
2. Short current and newer iPad regex
^iPad(8,(9|1[0-2])|[1-9]\d+,\d+)$
Use this when you want a shorter regex that also matches newer iPad model identifiers before this script is updated. This is broader than the exact match regex.
Supported model identifiers:
iPad8,9
iPad8,10
iPad8,11
iPad8,12
iPad12,1
iPad12,2
iPad13,1
iPad13,2
iPad13,4
iPad13,5
iPad13,6
iPad13,7
iPad13,8
iPad13,9
iPad13,10
iPad13,11
iPad13,16
iPad13,17
iPad13,18
iPad13,19
iPad14,1
iPad14,2
iPad14,3
iPad14,4
iPad14,5
iPad14,6
iPad14,8
iPad14,9
iPad14,10
iPad14,11
iPad15,3
iPad15,4
iPad15,5
iPad15,6
iPad15,7
iPad15,8
iPad16,1
iPad16,2
iPad16,3
iPad16,4
iPad16,5
iPad16,6
---------------------------------------------------
tvOS 27-compatible Apple TV models
1. Exact match regex
^(AppleTV11,1|AppleTV14,1)$
Use this to match only the Apple TV model identifiers listed below.
Current and newer Apple TV regex: Not available. Future Apple TV model numbers should be checked against Apple's published compatibility details before adding them.
Supported model identifiers:
AppleTV11,1
AppleTV14,1
If there is interest, I can clean it up and share it through a GitHub repository.
Here is my reverse (not compatible with Golden Gate) regex for macOS.
Appears to satisfy everything on the unsupported model list.
^(MacPro[1-6],[0-9]|iMac([1-9]|1[0-9]|20),[0-9]|iMacPro1,1|Macmini[1-8],[0-9]|MacBookAir[1-9],[0-9]|MacBookPro([1-9]|1[0-6]),[0-9]|MacBook([1-9]|10),[0-9])$
MacBookPro16,1, MacBookPro16,2, and MacBookPro16,3 are Intel models, so are not supported.