Get Mac System Info From Terminal (system_profiler)
About This Mac shows five lines. The command behind it, system_profiler, knows hundreds — chip, serial number, battery health, connected displays, storage layout, every installed app. When you need a spec for a support ticket, a script, or a second-hand sale listing, Terminal gets it faster than clicking ever will. Everything here is read-only.
The one command that answers most questions
# the essentials: model, chip, memory, serial number
system_profiler SPHardwareDataType
The output includes the model name and identifier, the chip (or processor on Intel Macs), the number of cores, the amount of memory, and the serial number — the exact set of facts AppleCare, an IT department, or a buyer asks for. Copy it straight from Terminal instead of screenshotting About This Mac.
Never run bare system_profiler with no arguments unless you mean it: it collects every report, takes a minute or more, and produces thousands of lines. If you do want the full dump, send it to a file: system_profiler -detailLevel mini > ~/Desktop/specs.txt. The mini detail level also omits personal identifiers like serial numbers — useful when posting output publicly.
Find the report you need
system_profiler organizes everything into datatypes. List them all, then request just the one you want:
# every available report name
system_profiler -listDataTypes
# battery health: cycle count, condition, capacity
system_profiler SPPowerDataType
# displays: resolution, refresh rate, how they're connected
system_profiler SPDisplaysDataType
The names to remember:
SPHardwareDataType— model, chip, RAM, serial.SPPowerDataType— battery cycle count and condition, charger wattage. The fastest battery-health check on a Mac laptop.SPDisplaysDataType— every connected display with its resolution and refresh rate; the first place to look when an external monitor claims the wrong mode.SPStorageDataType— volumes with capacity and free space.SPSoftwareDataType— macOS version, computer name, uptime since last boot.SPUSBDataTypeandSPBluetoothDataType— what's physically and wirelessly attached, invaluable when a device isn't showing up.
You can request several at once — system_profiler SPHardwareDataType SPStorageDataType — and script-friendly output formats exist too: add -json or -xml and parse the result with any tool you like.
Quick companions: sysctl and uname
For single facts inside a script, system_profiler is heavyweight. Two smaller commands return one answer apiece, instantly:
# the chip's marketing name
sysctl -n machdep.cpu.brand_string
# installed memory, in bytes
sysctl -n hw.memsize
# architecture: arm64 (Apple silicon) or x86_64 (Intel)
uname -m
sysctl reads live kernel values — run sysctl -a to browse the whole catalog (it's long; pipe it through grep). uname -m is the standard check in install scripts that behave differently on Apple silicon and Intel. None of these change anything; they only report.
Audit your apps while you're here
# every installed app, with version and architecture
system_profiler SPApplicationsDataType > ~/Desktop/apps.txt
This one takes a minute — it inspects every application on the Mac — which is why sending it to a file beats watching it scroll. The payoff is the Kind field on each entry: Apple Silicon, Universal, or Intel. On an Apple silicon Mac, anything marked Intel runs through Rosetta 2 translation — worth knowing when one app feels inexplicably slower than the rest. Search the file instead of scrolling it: grep -B 3 "Kind: Intel" ~/Desktop/apps.txt lists just the translated apps with their names. Delete the file when you're done — it's a snapshot, not something macOS maintains.
Once you know exactly what Mac you have, Mainspring helps you make the most of it — 90+ hidden macOS settings surfaced as labelled, reversible toggles.
Try Mainspring free →Signed & notarized by Apple · 1-day free trial · $29 once
The version question
The other spec every bug report needs is the exact macOS version and build. That's a different, even smaller command — sw_vers — covered in our guide to checking your macOS version from Terminal.