Why BBEdit is my text editor of choice

I'm a relatively new user of BBEdit. I bought a license last year in August 2024 after using the free version for a few months before that, and I have been enjoying it immensely. There's no doubt it does text editing really well, but there's more to its appeal than just being good at editing text.
BBEdit is artisan software
BBEdit is developed by Bare Bones Software, a small private company based in Massachusetts. It has been developed over 33 years and is a paid product. I love open source software, but I also love to support software developers that use their skills to make a commercial product and maintain a profitable business. BBEdit is what I would call artisan software: it is developed by a master craftsman who has honed their skills over decades, it continues to be refined with every release, it is lovingly supported, and has a sustainable business model based on providing maximum value to the user. A major version of BBEdit is released every few years and free feature updates and revisions keep things fresh in the meantime. There is something genuinely admirable and aspirational about this entire model so I've happily paid for a license. Why not pay for good software? Sure, Visual Studio Code is free. It's really popular and there are tons of extensions. It's a cross-platform Electron application, so it relies on web technologies. It's open source and developed by Microsoft. And BBEdit is the antithesis of this all, which I kind of love. It costs $60 for a license after a 30 day evaluation period, at which point it enters a basic but still usable free mode if you don't pay up. It's a native macOS application and benefits immensely from this; it's super snappy. I'm directly supporting a small developer instead of a megacorp. It has a smaller user base and it doesn't have an extensive plugin ecosystem, but instead packs a ton of functionality in by default with existing support for many popular programming languages. There is support for user-generated "packages" which take the form of language modules (syntax highlighting, text completions, and function browsing), clippings, scripts, text filters, etc., but these aren't akin to the kind of extensions you could get in VS Code. However, I prefer this. I like my text editor to be an extremely capable text editor and not much more than that—right tool for the right job, and all that. I'll note that BBEdit may not be extensible in the sense that entirely new features can be added by users, but it is still heavily customizable and scriptable. All that said, there are already tons of built-in features and I haven't found myself wanting for too much yet.
BBEdit is feature-rich
One of the standout features of BBEdit is the great search experience. ⌘F invokes the Find Window and ⌘⇧F the Multi-File Search Window (shown below). There's ton of utility here, but to put it shortly: I love the saved search patterns (⌃⇧P), support for regex search patterns (toggled with ⌃⇧G), the regex cheat sheet (⌃⇧C), and recent search history (⌃⇧H). You can also save a custom "Search Set" in the Multi-File Search so if you tend to search a specific directory that isn't already represented in the list (see screenshot), you can create your own.
Key Legend for the uninformed Symbol Key ------ ------- ⌘ Command ⌃ Control ⌥ Option ⇧ Shift ⏎ Return

Related to the search feature is BBEdit's Pattern Playground. Here, you can construct search patterns using regex and test them on existing files or in a scratch text area. I've already gotten use out of this testing a pattern to match valid non-private IP addresses. Any patterns you have decided to save will exist in the easily accessible saved search patterns (⌃⇧P) in the Find Window. For me, this feature has replaced regex101.com. I don't use it everyday, but it's incredibly handy!

You might have noticed: BBEdit has great keyboard shortcut support! There is an entire section of the Settings menu, Menus and Shortcuts, that is dedicated to toggling menu bar items and changing their keyboard shortcuts. The defaults are pretty good and worth learning, though over the past year I've adjusted just a few shortcuts to my liking. Shortcuts are easy to customize to your preferences with the built-in interface versus using the standard macOS System Settings > Keyboard > Keyboard Shortcuts > App Shortcuts settings which has a clunkier UX, though I'm happy that option exists for all other applications. One of my favorite features related to keyboard shortcuts is the keyboard-accessible context menu, invoked with ⌃⇧2. Prior to this feature being added system-wide to macOS 15, bound to ⌃⏎, you could not access the context menu in macOS without right clicking your mouse like some kind of animal—unless you were using BBEdit! I love this feature. I use a Happy Hacking Keyboard, so the position of the Control key (above Shift) works very comfortably for this use case: pinky on Shift, ring finger on Control, middle finger on 2. For any other keyboard I'd recommend you bind Caps to Control 🙂.

BBEdit also has a solid diff tool that can be called from the GUI with the Search > Find Differences menu item, or anywhere in Finder by selecting two files and selecting Services > Compare with BBEdit in the right-click menu, or with an optional CLI tool, bbdiff
. There are a few other CLI tools included, such as bbedit
which you can invoke in your terminal to, you guessed it, open a file in BBEdit. Another is bbfind
: a simple find tool that will return results in the terminal and optionally in the BBEdit GUI if you use the --gui
option. There are probably better find tools that are exclusive to the CLI, but it's useful to have this return results directly in the application; the interface is quite good.
There are tons of other features; here are but a few I'd like to note:
- Git integration
- Unix Text Filters
- Run any command you would in a terminal against a selection of text or an entire document
- FTP Browser
- Shell Worksheets
- A text document where you can run any command you would in your terminal and get the results right in that document
- Run scripts (Ruby, Python, bash, or anything as long as you have an interpreter installed) directly from an editor window with ⌘R
- A Commands window, functionally similar to the Command Pallette in VS Code
- Support for the Language Server Protocol (a recent addition)
- A 450 page user manual (yes, this is a feature!)
- Text Factories
I'll go into a bit more depth for that last one. Text Factories are a neat feature. You can think of it like a workflow builder for text transformations. There are a ton of operations that you can string together, some of the most powerful being Run Unix Filter, where you can call a script (bash, Ruby, whatever) or executable, or Run Unix Command where you can run your text through a pipeline you've built ad hoc within the interface. For example, one simple use case is using this to send your text through an external code formatting tool or a syntax checker, but that just constitues one step. You can do lots more. These Unix options give you a ton of power and you can combine them with any of BBEdit's built-in text operations. Another simple use case I've had for a Text Factory is stringing together a bunch of find and replace actions to anonymize some text. In my Anonymize text factory I have one action to replace any references to my name with a generic one, another to replace my domain name with example.com, and a few more find and replace actions, of which the final one replaces non-private IP addresses with the literal text <external-IP-address>
. I can find this action under Text > Text Filter > Anonymize but I can invoke it more quickly if I bind this to a keyboard shortcut using BBEdit's built in rebind feature I mentioned earlier. You're thinking, "Why is this particular text factory useful at all?" Let me tell you. BBEdit has another really neat feature: AI Chat Worksheets.

I use my Anonymize text factory to clean up text that I intend to feed into an LLM. BBEdit has an AI Chat Worksheets feature that has been incredibly useful to me. You can select ChatGPT, Claude or Ollama and the model you want to use. The feature is well-integrated into BBEdit: I can open a new Chat Worksheet document within the window I'm already working in using ⌥⌘C (a custom binding, I believe there isn't a shortcut by default), ask a question and paste some log files or output, use my Anonymize text factory if necessary, and hit ⌃⏎ to send the query to Claude 3.5 Sonnet. I love that I can do this all without leaving my text editor. This is the sweet spot for integrating an LLM into my workflow; I don't necessarily need code auto-completion. A Q&A session with Claude suits my needs!

See the screenshot below to get an idea of the user experience.

Another neat thing about the AI Chat Worksheet is that it is a markdown document and BBEdit has a good markdown (and HTML) preview feature. Hit ⌃⌘P to get a prettier view. You can even provide your own stylesheet: place a css file in ~/Library/Application Support/BBEdit/Preview CSS
. To make it the default, name it DefaultCSS_Markdown.css
. Otherwise, you can select your stylesheet from the CSS dropdown at the top of the window.

BBEdit is an ode to the native text editor of yore, yet looks to the future. AI Chat worksheets are just one of the modern features that this old reliable software has. As mentioned before, it now has LSP support as of version 14.0 (the latest version as of this writing is 15.1.4). There is support for workspaces, similar to VS Code, in a pre-release version. BBEdit already has a Project feature that kind of serves the purpose of a workspace, but the more general utility of an official workspace feature is a welcome addition. Here's an excerpt from the release notes:
Introducing "workspaces", a way to switch between arrangements of open documents and windows. A workspace includes the same application state that is saved and restored across quit and relaunch, but can be activated at any time while the application is running. This is useful for (for example) switching between working setups for different clients, or for different types of projects (writing vs programming vs web development).
Thus far, I have been quite satisfied with BBEdit. I'll share my experience with other features in more detail when I use them more thoroughly. I haven't tried the prerelease version yet and I did intend to wait until the general release of this new feature update, but I'm tempted to give it a shot. Either way, I want to share my experience with workspaces when I finally try them. Side note: I learned about this pre-release version of BBEdit from the BBEdit Talk mailing list. The main developer, Rich Siegel, is quite active. He posted an extensive changelog full of goodies. There's also a community of friendly users happy to answer questions.
I'm excited for BBEdit to continue building on its foundation of awesome text editing features crafted over 30+ years of development. Sure, some IDE's might be better suited to a very specialized workflow but BBEdit is a Swiss Army knife, continuously sharpened and extended by its creator. I'm a fan of the ethos of the product and there is a lot of utility packed in. It is always open on my Mac. I'm happy to continue supporting Bare Bones Software because I love to support the little guy. BBEdit is my text editor of choice!