Groups & four views
File tabs into coloured groups by dragging. Then look at the same tabs as a Tree, By Age, By Domain or By Group, depending on what you need to find.
Native macOS · Safari
BaoTabs docks a vertical tab list to the left of your Safari window. Tabs you open from a link nest under the tab you opened them from, so a morning of research reads as a tree instead of forty identical favicons.
macOS 14 or later · Apple silicon & Intel · Free
Try it: click a row, or the triangle to fold a branch.
Swift, SwiftUI and AppKit. No Electron, no bundled browser, no local server. It is a menu bar app that uses about as much memory as a text editor and almost no CPU when idle.
Not a copy or a bookmark list. Click a row and you land on that exact tab. Drag a row and Safari's own tab bar reorders with it.
No account, no sync, no in-app analytics. BaoTabs makes exactly two kinds of network request: fetching a site's own favicon and, only if you allow it, checking whether a new version exists. Nobody else ever holds a copy of your tabs.
The idea
Safari has no concept of which tab opened which. Every tab sits in the bar at the same level, in the order it happened to arrive. BaoTabs works out the link and draws it. Open three references from one article and they sit indented beneath it, foldable in a click, closable as a group.
Features
File tabs into coloured groups by dragging. Then look at the same tabs as a Tree, By Age, By Domain or By Group, depending on what you need to find.
Rank every open tab by title, URL, domain and group as you type. Nothing is indexed or cached, no page text is read and no remote service is involved.
Pin a tab into its own section so bulk closes step around it. Lock one so it cannot be closed at all. Park anything in a Read Later queue that outlives the tab.
Restore a closed tab to the branch, group and pin it had before. Closing a tab never throws away what BaoTabs knew about it.
A versioned, portable archive of tabs, groups and settings, designed to move to another machine rather than to copy this one's session.
Optional: reclaim Safari's own horizontal tab strip and draw a breadcrumb of where the current tab came from, which a horizontal tab bar cannot show.
Choose from a growing range of colour themes. Collapse the whole thing to a favicon-only rail and hand the freed space back to Safari.
Rides beside Safari's frontmost window, same height, following moves and resizes. Switch apps and it drops behind rather than floating over your work.
Privacy
The long version, covering this website as well as the app, is in the Privacy Policy.
There is nothing to sign in to and nothing uploaded. What BaoTabs knows lives in a JSON file in your own Application Support folder.
Automation access to Safari, the same mechanism any script uses to list your tabs. macOS asks the first time and you can revoke it in System Settings whenever you like.
Requested only when you switch immersive mode on, and used only to read where Safari's tab row sits inside its window. Never to type, click or read a page.
Icons are fetched from the site itself and cached on disk. No favicon service gets handed a list of every host you have open.
BaoTabs asks once before it starts checking for new versions, and never checks on its own until you say yes. The request carries nothing about you or your machine, not even which version of macOS you are running.
Free and small. Drag it to Applications, allow Automation when macOS asks, and your tabs appear immediately.
Requires macOS 14 Sonoma or later and Safari. Universal build.
FAQ
No. BaoTabs is an ordinary macOS app that reads and controls Safari through Apple Events, the same scripting interface AppleScript uses. There is an optional web extension that supplies one identifier Safari otherwise withholds, but everything works with it uninstalled, and it can never be required.
No. Safari is polled about once a second while you are in it, and roughly every three seconds while you are working elsewhere. Window position is read from the window server, which costs no round trip into Safari at all.
It is the only way to ask Safari what is open and to tell it which tab to switch to. macOS asks once, per app, and you can withdraw it in System Settings → Privacy & Security → Automation at any point.
No. Safari's private windows are not scriptable, so they do not appear in the sidebar, which is the right behaviour for a private window.
Not yet. Within a window, dragging reorders and re-nests properly. Across windows a nested branch would have to be broken apart to survive the move, so the feature is left out for now.
No. Every assumption in BaoTabs is about Safari specifically, from how tabs are addressed to how its window is measured. Supporting another browser would mean starting again rather than adding an option.
In a versioned JSON file in your Application Support folder, plus a
few window preferences in UserDefaults. You can export the whole thing to a
portable archive whenever you want, and delete it by deleting the folder.