Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

fiod3s

macrumors newbie
Original poster
Hi everyone!

I wanted to share a new utility I built to solve a long-standing pet peeve on macOS: changing file associations quickly and effortlessly.

If you've ever tried setting default apps natively on macOS, you know the drill. You basically have to go through:

Right click → Get Info → Open with → Change All...

...for one file type at a time, over and over. It's slow, repetitive, and clunky if you need to manage multiple file types at once.

Managing associations by UTI (Uniform Type Identifier)—like .txt, .mp4, .jpg, and custom developer formats—has always needed a better solution. For years, many of us relied on RCDefaultApp, which was discontinued long ago, or SwiftDefaultApps, which unfortunately hasn't seen updates in a while and lacks a native Apple Silicon build. I created UTIdefaults to fill this exact gap.

What is UTIdefaults?

It’s a lightweight utility that lets you choose which application opens or edits specific UTIs in just a few clicks. Built from the ground up with SwiftUI and a modern multithreaded architecture, it's designed to feel responsive and natively integrated into recent macOS releases.

Key features:
  • Instant & Responsive: Fast UTI scanning and zero-lag UI.
  • Fully Native: Universal Binary (native performance on both Apple Silicon and Intel).
  • Requirements: macOS 14.6 or later.
Recent Changelog
  • 1.05: Significantly reduced the UTI list to display only entries with a preferredMIMEType, filtering out clutter and keeping only actionable entries.
  • 1.04: UTI scanning performance improved by ~10%.
  • 1.03: Added a "Do Nothing" option for specific type associations.
UTIdefaults__screenshot2en.png


Links & Feedback
I’d love to get your feedback, feature requests, or thoughts on the app. Let me know if you run into any issues or if there's anything specific you'd like to see in future updates!
 
The list of UTIs is predetermined or read from the system?
I have some zip archives that I wanted to open with another app than the default one, so I changed their extension to .zipp and assigned the app.
Searching .zipp in UTIdefaults returns only Zipped Web Archive Collection with the extension wacz.
 
The list of UTIs is predetermined or read from the system?
I have some zip archives that I wanted to open with another app than the default one, so I changed their extension to .zipp and assigned the app.
Searching .zipp in UTIdefaults returns only Zipped Web Archive Collection with the extension wacz.
The list of UTIs is read dynamically from the system's LaunchServices database, with lsregister -dump.

Simply renaming a file extension to .zipp or assigning an app to open it via the Finder ("Open With") does not create or register a system-wide UTI. macOS only registers a new UTI into LaunchServices if an installed application explicitly declares it in its Info.plist (under UTExportedTypeDeclarations or UTImportedTypeDeclarations).

If no app on your Mac declares .zipp as an extension bound to a specific UTI, macOS treats it as an unknown/dynamic type. That's why searching for .zipp only returned .wacz (where "zipp" likely matched substring metadata in that specific UTI definition).

If you want .zipp to be recognized as its own distinct UTI, an app on your system needs to declare that extension in its bundle manifest, or macOS will continue to fallback to generic dynamic identifiers.

Hope this wasn't too technical, but you should get the general idea now!
 
Last edited:
  • Like
Reactions: bogdanw
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.