Free tools Windows power users keep installed
One-click scans. No signup required.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
For a new macOS app, use Apple’s ScreenCaptureKit framework. For a one-off screenshot, select the display, app, or window with an SCContentFilter, configure the capture, then call SCScreenshotManager. Your app also needs the user’s screen-recording permission and an NSScreenCaptureUsageDescription entry in its Info.plist. The example below captures a display and writes a PNG; check the API signatures and availability against the SDK you build with, because Apple’s documentation is versioned.
Choose the right macOS capture method
ScreenCaptureKit is Apple’s current framework for capturing screen content with control over displays, apps, and windows. It supports both continuous capture through SCStream and single-frame capture through SCScreenshotManager. If the feature needs one image, start with the screenshot manager; if it needs an ongoing sequence of frames, investigate SCStream instead. A single screenshot and a stream are different jobs, even though they use the same framework.
The older Core Graphics window-image approach, including CGWindowListCreateImage, belongs to a legacy path. Apple’s WWDC23 material describes the newer screenshot API as bringing ScreenCaptureKit’s streaming benefits to screenshots and explains how older window-list image options map to SCStreamConfiguration. For new code, prefer ScreenCaptureKit rather than building on the older path.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchThe built-in Screenshot app is separate: it lets a person capture the full screen, a window, or a selected area manually. It is useful when a user simply wants to take a screenshot, but it does not provide an API integration for an app that must initiate, process, or save captures in code.
#1 Best Overall
- AN AMAZING MAC AT A SURPRISING PRICE — With an incredibly portable and durable aluminum design, up to 16 hours of battery life,* and the A18 Pro chip, MacBook Neo is ready to go wherever school takes you.
- FOUR STUNNING COLORS. ONE DURABLE DESIGN — Choose from four beautiful colors — Silver, Blush, Citrus, or Indigo — each with a color-coordinated keyboard. And MacBook Neo is made with a durable recycled aluminum enclosure that helps it reach 60 percent recycled content by weight — the most ever in any Apple product.*
- FLY THROUGH EVERYDAY ASSIGNMENTS — Whether you’re cramming for finals, using Apple Intelligence* to summarize class notes, creating presentations, or even playing the latest Apple Arcade game,* MacBook Neo delivers the performance and AI capabilities you need to get things done.
- UP TO 16 HOURS OF BATTERY LIFE — MacBook Neo delivers all day battery life, so you can power through from early morning classes to late night study sessions without worrying about plugging in.
- A VIBRANT 13-INCH DISPLAY* — The gorgeous Liquid Retina display on MacBook Neo supports 1 billion colors, so photos and videos pop and text is crisp for easy reading.
Set up the target and request permission
- Add the ScreenCaptureKit framework to the macOS target and import
ScreenCaptureKitin Swift. - Add an
NSScreenCaptureUsageDescriptionstring to the target’s Info.plist. Explain in plain language why your app needs to capture screen content. - Request screen-recording permission through the system privacy flow before relying on capture. The user must grant access; a usage-description string is not itself permission.
- Handle denied or unavailable access as a normal failure path. Do not present an empty or invalid image as a successful screenshot.
Apple’s ScreenCaptureKit guidance says to request screen-recording permission before capturing content. On first use, the operating system may show a consent prompt. If permission is denied, tell the user what feature is blocked and direct them to the relevant macOS privacy settings; do not repeatedly trigger capture without explaining the requirement. The exact settings labels and authorization behavior can vary by macOS version, so validate the flow on the versions your app supports.
Select the content to capture
ScreenCaptureKit makes the capture source explicit. Obtain shareable content, identify the intended display, window, or running application, then create an SCContentFilter for that source. This is preferable to assuming that a particular screen index or window identifier will always represent the intended content.
Let the user choose
When the person using the app should decide what to share, Apple recommends SCContentSharingPicker. That system picker gives users a native way to choose a display, app, or window. It also avoids making your app invent a parallel selection interface for a sensitive action.
Rank #2
- BUILT FOR COLLEGE. AND BEYOND — MacBook Air with the M5 chip packs blazing speed and powerful AI capabilities into an incredibly portable design. And with up to 18 hours of battery life,* this thin and light powerhouse is ready to take on almost any major, just about anywhere.
- TEAR THROUGH TOUGH ASSIGNMENTS — With its faster CPU and unified memory, the M5 chip delivers even more performance and fluidity across apps, making multitasking and creative workflows smooth and responsive. A powerful Neural Engine and next-generation GPU with Neural Accelerators give you a powerful platform for AI.
- MAKE QUICK WORK OF YOUR TO-DO LIST — Apple Intelligence helps you write, express yourself, and get things done effortlessly — whether it’s for school or everyday life. With groundbreaking privacy protections, it gives you peace of mind that no one else can access your data — not even Apple.*
- UP TO 18 HOURS OF BATTERY LIFE — MacBook Air delivers incredible battery life with amazing performance, so you can power through a full day of classes without worrying about plugging in.
- A BRILLIANT 13.6-INCH DISPLAY* — The gorgeous Liquid Retina display on MacBook Air supports 1 billion colors, making photos and videos pop with rich contrast and sharp detail, and text appears supercrisp. So everything — from class presentations to movies to games — looks truly stunning.
Choose a source in app logic
For a capture initiated by your application, obtain the available shareable content and choose the intended SCDisplay, SCWindow, or application according to your product’s logic. Build the corresponding content filter and handle the case where the target is no longer available by the time capture begins. A window can close or a display configuration can change between selection and capture.
Configure and capture a display image in Swift
The following is an implementation outline using the asynchronous completion-handler style of the ScreenCaptureKit APIs. It selects the first available display, requests an image, and encodes that image as PNG. It is not a suitable source-selection policy for a multi-display product without adapting the selection step. Confirm the precise overloads and availability in the macOS SDK you target.
import AppKit
import ScreenCaptureKit
import ImageIO
import UniformTypeIdentifiers
func captureFirstDisplay(to destination: URL) {
SCShareableContent.getExcludingDesktopWindows(
false,
onScreenWindowsOnly: true
) { content, contentError in
if let contentError {
print("Could not list shareable content: (contentError)")
return
}
guard let display = content?.displays.first else {
print("No display is available to capture")
return
}
let filter = SCContentFilter(
display: display,
excludingApplications: [],
exceptingWindows: []
)
let configuration = SCStreamConfiguration()
configuration.width = display.width
configuration.height = display.height
SCScreenshotManager.captureImage(
contentFilter: filter,
configuration: configuration
) { image, captureError in
if let captureError {
print("Screenshot failed: (captureError)")
return
}
guard let image else {
print("Screenshot returned no image")
return
}
guard let destination = CGImageDestinationCreateWithURL(
destination as CFURL,
UTType.png.identifier as CFString,
1,
nil
) else {
print("Could not create PNG destination")
return
}
CGImageDestinationAddImage(destination, image, nil)
guard CGImageDestinationFinalize(destination) else {
print("Could not finish writing PNG")
return
}
print("Saved screenshot to (destination.path)")
}
}
}
This example shows the important control flow: content discovery can fail, there may be no display to select, capture can fail, the image may be absent, and file encoding can fail. In production, surface those errors to the caller or UI rather than relying only on console output. Run file writing off the main UI path when appropriate, and choose a destination policy that does not silently overwrite user data.
Rank #3
- AN AMAZING MAC AT A SURPRISING PRICE — With an incredibly portable and durable aluminum design, up to 16 hours of battery life,* and the A18 Pro chip, MacBook Neo is ready to go wherever school takes you.
- FOUR STUNNING COLORS. ONE DURABLE DESIGN — Choose from four beautiful colors — Silver, Blush, Citrus, or Indigo — each with a color-coordinated keyboard. And MacBook Neo is made with a durable recycled aluminum enclosure that helps it reach 60 percent recycled content by weight — the most ever in any Apple product.*
- FLY THROUGH EVERYDAY ASSIGNMENTS — Whether you’re cramming for finals, using Apple Intelligence* to summarize class notes, creating presentations, or even playing the latest Apple Arcade game,* MacBook Neo delivers the performance and AI capabilities you need to get things done.
- UP TO 16 HOURS OF BATTERY LIFE — MacBook Neo delivers all day battery life, so you can power through from early morning classes to late night study sessions without worrying about plugging in.
- A VIBRANT 13-INCH DISPLAY* — The gorgeous Liquid Retina display on MacBook Neo supports 1 billion colors, so photos and videos pop and text is crisp for easy reading.
The configuration dimensions above use the selected display’s reported dimensions. Treat output dimensions, scaling, and pixel format as deliberate choices: higher-resolution output can require more memory and produce larger files, while smaller output may suit thumbnails or previews. Validate the resulting image on Retina and non-Retina displays rather than assuming logical points and output pixels are interchangeable.
Choose an output type that fits the pipeline
SCScreenshotManager documents operations that return a CGImage, a CMSampleBuffer, or an SCScreenshotOutput, as well as rectangle-based capture methods. Use the image-returning operation when the app needs a normal image for encoding or display. Choose a sample buffer when the downstream media pipeline needs buffer-oriented data or metadata. Use the screenshot-output form when the newer screenshot configuration and its associated output are the right fit. Select the method supported by the SDK and deployment target you actually use.
For PNG or JPEG files, encode the returned image using an image destination API and check the finalization result. PNG is a lossless choice for interface captures; JPEG can reduce file size where lossy compression is acceptable. The capture API supplies captured content, not a complete product decision about file format, compression quality, destination, naming, or retention.
Rank #4
- AN AMAZING MAC AT A SURPRISING PRICE — With an incredibly portable and durable aluminum design, up to 16 hours of battery life,* and the A18 Pro chip, MacBook Neo is ready to go wherever school takes you.
- FOUR STUNNING COLORS. ONE DURABLE DESIGN — Choose from four beautiful colors — Silver, Blush, Citrus, or Indigo — each with a color-coordinated keyboard. And MacBook Neo is made with a durable recycled aluminum enclosure that helps it reach 60 percent recycled content by weight — the most ever in any Apple product.*
- FLY THROUGH EVERYDAY ASSIGNMENTS — Whether you’re cramming for finals, using Apple Intelligence* to summarize class notes, creating presentations, or even playing the latest Apple Arcade game,* MacBook Neo delivers the performance and AI capabilities you need to get things done.
- UP TO 16 HOURS OF BATTERY LIFE — MacBook Neo delivers all day battery life, so you can power through from early morning classes to late night study sessions without worrying about plugging in.
- A VIBRANT 13-INCH DISPLAY* — The gorgeous Liquid Retina display on MacBook Neo supports 1 billion colors, so photos and videos pop and text is crisp for easy reading.
Capture a window, app, or rectangle
- Window: identify the intended
SCWindowand construct a filter for that window. Check that it remains available at capture time. - Application: select the intended running application and use an application-based filter. Decide explicitly whether other windows should be included or excluded.
- Display: select the desired
SCDisplayrather than assuming the first item is the user’s intended monitor. - Rectangle: use the documented rectangle-based screenshot operation when the capture should be constrained to a region. Verify coordinate assumptions and bounds against the selected content and SDK documentation.
The comparison is about scope and output, not a promise that every surface is capturable:
| Need | ScreenCaptureKit choice | Consideration |
|---|---|---|
| One image of a display, app, or window | SCScreenshotManager with an SCContentFilter |
Handle permission, source changes, and capture errors. |
| One image of a region | Documented rectangle screenshot method | Validate rectangle coordinates and bounds. |
| Continuous frames | SCStream |
Streaming adds ongoing lifecycle and media-buffer handling. |
| Manual user-initiated capture | macOS Screenshot app | Not an API for programmatic capture and processing. |
Migration from CGWindowListCreateImage
For a migration, map the old capture intent—not just the old function name—to the new API. Decide whether the old code represented a display, a window, or a bounded area; build the equivalent content filter and configuration; then choose the output representation the rest of the application needs. Apple’s WWDC23 transition material discusses mapping older CGWindowList image options into SCStreamConfiguration. Review the current SDK reference for exact option equivalents and availability rather than assuming every legacy flag has a one-to-one replacement.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- Replace implicit or index-based source assumptions with explicit display, app, or window selection.
- Move image sizing and related capture decisions into ScreenCaptureKit configuration.
- Review permission and Info.plist setup as part of the migration, not as a later polish step.
- Test behavior for denied permission, missing content, and protected surfaces. Do not promise universal capture compatibility.
Performance, reliability, and privacy decisions
There is no useful universal latency or throughput figure for a screenshot call: results depend on OS version, hardware, resolution, and configuration. Measure on the devices and macOS versions your app supports. Capture only the size and scope needed, and avoid repeatedly capturing a full display when a smaller window or region satisfies the feature.
Best Value
- SUPERCHARGED BY M5 — The 14-inch MacBook Pro with M5 brings next-generation speed and powerful on-device AI to personal, professional, and creative tasks. Featuring all-day battery life and a breathtaking Liquid Retina XDR display with up to 1600 nits peak brightness, it’s pro in every way.*
- HAPPILY EVER FASTER — Along with its faster CPU and unified memory, M5 features a more powerful GPU with a Neural Accelerator built into each core, delivering faster AI performance. So you can blaze through demanding workloads at mind-bending speeds.
- BUILT FOR APPLE INTELLIGENCE — Apple Intelligence is the personal intelligence system that helps you write, express yourself, and get things done effortlessly. With groundbreaking privacy protections, it gives you peace of mind that no one else can access your data — not even Apple.*
- ALL-DAY BATTERY LIFE — MacBook Pro delivers the same exceptional performance whether it’s running on battery or plugged in.
- APPS FLY WITH APPLE SILICON — All your favorites, including Microsoft 365 and Adobe Creative Cloud, run lightning fast in macOS.*
Keep capture work asynchronous so the UI remains responsive. Check every asynchronous error before updating the interface, and make cancellation or source disappearance understandable to the caller. If an operation is retried, avoid unbounded retry loops: a denied privacy permission will not be fixed by immediately submitting the same capture again.
Screen capture is sensitive. Explain the feature before invoking the system permission flow, capture only the selected scope, and avoid retaining images longer than the feature needs. Permission does not imply that all protected windows or media surfaces can be captured; the framework’s existence is not a universal compatibility guarantee.
Troubleshooting common failures
- Capture is denied or returns unusable content: verify the user granted screen-recording access and that the target includes
NSScreenCaptureUsageDescription. Explain how the user can review macOS privacy settings. - No display, window, or app appears: content discovery may have returned no matching source, or the target may have closed. Refresh shareable content and let the user choose again where appropriate.
- The wrong display is captured: do not rely on
displays.firstin a multi-display setup. PresentSCContentSharingPickeror implement a clear source-selection policy. - Capture call does not compile: check the overload and availability in the SDK used to build the target. Apple’s reference exposes versioned API material, so do not copy a signature from a different SDK without checking it.
- Output dimensions are unexpected: inspect the selected source and configured dimensions, and verify the distinction between display points and image pixels on the target hardware.
- PNG file is missing or invalid: check image-destination creation and finalization results, then verify the destination directory is writable.
- A protected surface is blank or absent: do not assume all content is capturable. Handle unsupported or protected content as a limitation rather than repeatedly retrying.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server, not a replacement for capturing a local macOS display, app, or window with ScreenCaptureKit. If your goal is a screenshot of a public web page, one GET request can return an image or PDF instead of setting up browser automation. The API accepts parameters also used by other screenshot APIs, which can make switching simpler. See the ScreenshotNeo service and API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie banners, newsletter popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents use screenshot tools. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month, with no card required.
Frequently Asked Questions
Can the built-in macOS Screenshot app be called as the screenshot API?
No. It is a manual capture tool; programmatic capture and processing require an API such as ScreenCaptureKit.
Does screen-recording permission guarantee every window can be captured?
No. Permission is required, but protected or otherwise unavailable surfaces are not guaranteed to be capturable.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →

