Text editors have been a crucial part of every computing system in history, and they’re also the tools that many, many people use every day to build the services, apps, and written-word that we love.
At its core, a text editor does what it says on the tin: it allows you to edit text. But wait, you say, I already have a way to edit text on my Mac. Maybe it’s Pages or Microsoft Word, or perhaps you use an online option, like Google Docs or Dropbox Paper. However, what separates these tools from a text editor, and what makes a text editor so compelling to a lot of people, is that a text editor removes almost every distraction between you and the text. There are no formatting toolbars, no adjusting the margins — just you and your code or words. For writing in HTML, CSS, or other programming languages, this is a necessity. For someone who isn’t writing code but still generates a large amount of copy, a text editor can be where you start your writing.
What makes a good text editor?
Few topics start such heated debates as what makes a good text editor. The problem with declaring any one editor better than another is that every editor we mention today is seemingly infinitely customizable. You can tweak, bolt on, or remove any array of features until any of the following applications fit your workflow perfectly. Additionally, once someone has spent more than a few months using a specific text editor, the muscle memory for certain actions or keyboard shortcuts becomes so second-nature that switching to any other editor can be as difficult and foreign as switching to a new operating system.
That said, a good text editor has to have enough features to be adaptable to your workflow, but not so many that it steers itself toward any one usage. Editing text encompasses a wide range of activities. How do you design an app that will potentially be used by both programmer and screenwriter? Good text editors will get out of your way, but they never hide functionality too far out of reach — this means our top pick needs to be an editor that’s well-designed and approachable by beginners without stifling professional users.
Finally, this review is about the best text editor for macOS, not the best macOS application that’s also a text editor. Atom is our top pick for most people, but its design follows a different set of principles than those laid out in Apple’s Human Interface Guidelines for macOS apps. Every text editor we look at in this review has design tradeoffs, but at the end of the day, we feel Atom balances modern functionality and interface design in a way that makes it the best starting point for almost any type of user.
Why you should trust us
My first real writing tool was my grandfather’s heavy-as-sin Underwood typewriter on which I — around eight at the time — hammered out an endless amount of content. I eventually graduated to a giant Dell desktop and later to my first MacBook, but the writing never stopped. Throughout high school, I realized that I enjoyed writing for computers as much as I did for people, and I went to college to later graduate with degrees in both English and computer science.
During the day, I work for a software company where my role is a blend of design (writing for people) and programming (writing for computers). Officially, I’m the lead user experience designer for our team of eight, and I’m also the sole developer for several internal web applications written primarily in Ruby on Rails. I also spend time helping out our web design team, where we write custom HTML and CSS for a variety of clients. At night, I’m either writing for my small privacy/design web column or I’m refactoring the Swift code of my current iOS project. Today though, I’m your guide through some of the best text editors for macOS. Of each of the text editors we’ll discuss, whether for writing or programming, I’ve spent more than a week with each while professionally developing Ruby on Rails applications and writing an array of smaller Go, PHP, and Swift files.
Although I approach this review with the consideration that a writer could use any of the apps we mention — and writers certainly do — if you’re looking for something a little more focused towards prose, I encourage you to check out The Sweet Setup’s Best Writing App for Mac and iOS.
An aside about how text editors differ from Markdown editors
We recognize there are different text editors for different types of work. If you’re looking to write blog posts, emails, research papers, or novels and want an all-inclusive writing environment, we think Ulysses is the best writing app for Apple devices. If you’re looking for a Markdown text editor that works well with single files (think TextEdit for Markdown), we think Byword is the best app for writing in Markdown. But neither Ulysses or Byword are built with developers and web designers in mind. There aren’t immense customization features, package or plugin support, or built-in git functionality in either Ulysses or Byword, nor should there be. There’s an app that shines in each distinct category, and this category deals with the powerful, customizable text editors that handle the languages and workloads beyond Markdown and rich text.
Atom is an open-source, cross-platform text editor developed by GitHub, a company that helps other companies host and collaborate on software projects. The beta for Atom was announced in February of 2014 and was billed as a text editor that was both “deeply programmable but also easy to use.” Atom is not without flaws, but its balancing of ease-of-use with optional, deep customization means it serves both novice and professional users well — offering an approachable UI for the former, and almost unending customization and tweaking for the latter.
Available now: our video course for Things 3 users…
Notable Features: File Navigation
Atom makes it easy to navigate and switch between any of the files you currently have open. Hitting
CMD + T dims the interface and presents you with a text box in which to begin typing. As you type, Atom begins filtering down your open files to only the ones that have names matching your keywords.
You don’t need to remember the exact name of a file either. Atom uses a “fuzzy” type of matching, which lets you search on whatever part of the filename you remember. The searching is fast, and once you’ve grown accustomed to having any file only a few taps away, using your mouse to click through folders and files will feel painfully slow.
Notable Features: Multiline Editing
Multiline editing is one of those features that’s hard to explain in words, but once you see it in action, you’ll wonder where it’s been all your life:
Multiline editing works by letting you quickly select any instances of the word your cursor is currently in. Once you’ve selected all the words you want to change, you can begin typing and Atom will make those changes in each selected word. It’s like having multiple cursors scattered throughout your document, all acting in unison.
Technically, anything you can do with multiline editing you could do with Atom’s powerful find and replace feature, but multiline editing allows you to quickly — and in real time — jump into a find-and-replace-like mode within the current document. This makes cleaning up text a breeze, and it’s especially useful for development when you want to quickly rename a variable across a function.
Notable Features: GitHub and Git Integration
It’s not surprising that GitHub integration is baked in to Atom since it’s a GitHub product, but it also includes standard Git integration. The integration won’t replace a dedicated Git tool for power users (like Tower), but it delivers rock-solid performance for the basic git commands for version control and collaboration. Whether you use GitHub, Bitbucket, or another git solution for version control, Atom can help you save a step or two without leaving the app when it’s time to commit and push changes.
Notable Features: Teletype
This feature goes a bit above and beyond our expectations for a text editor, but it’s too cool to ignore. Atom recently launched a feature named Teletype that allows you to share documents with other Atom users (via a unique link) that allows you to open and edit the document together in real time, a la Google Docs. This is incredibly powerful and useful for peer reviews, pair programming, and other collaborative exercises, and also skips the step of needing to fire up a teleconference bridge to debug an annoying logic problem or review comments on an article.
As I mentioned earlier, all of the text editors in this review are extremely customizable. You can make any of them do just about anything. That said, Atom’s interface for tweaking, adding, or removing functionality is the easiest to use for most users and powerful enough for most professionals.
Atom’s preferences are logically arranged and straightforward to navigate. Opening the preferences page opens a new tab in Atom’s main window, and you are presented with a sidebar of setting categories. From here, you can adjust the editor’s typeface, create a new keyboard shortcut, or change the default theme.
The interface for these options is simple enough, but a far cry from how macOS would present similar preferences. For the audience, I don’t think it matters that much, but Atom’s settings are probably the best example of where Atom defines itself more as a text editor and less as a Mac app.
That doesn’t mean the settings are more difficult to use, though. For every checkbox or setting you can change, Atom includes a small bit of copy that explains — in relatively human terms — what that setting will do. This is a nice touch, as it allows Atom to help guide people who aren’t as familiar with more technical terms or development concepts.
If, however, you’re a seasoned developer and want complete control over the way Atom behaves, you can click the Open Config Folder button at the bottom of the settings sidebar, and you’ll see a directory of text files that you can edit to tweak almost every aspect of Atom. More experienced users will appreciate the ability to make these changes, and more novice users are never forced to stare at an intimidating list of oddly-named text files. It’s a decent design tradeoff.
One of Atom’s best features is one that you will either completely rely on or never use: packages.
Packages are small, often community-created, contained bits of functionality that you can add to Atom. There are packages for everything from new themes, to syntax support for obscure programming and markup languages. You can even remove some of the packages that Atom comes preinstalled with. It’s completely up to you and what you need Atom to do. Want to export the current document to Medium? There’s a package for that. Need a quick way to translate the current text into another language? No problem. Or maybe you just want Atom’s interface to look like R2-D2. Enjoy.
Atom’s not the only text editor that allows you to install packages, but it does make the process of installing, managing, and updating those packages incredibly easy. In Atom’s preferences page, clicking the Packages sidebar item will show you all the currently installed packages, each with links to either disable each package or adjust its settings.
Back in the sidebar, you can click Install to see some current featured packages or themes, as well as a search bar to find new ones. Once you’ve found a package you want to install, it’s a one-click process to get it loaded into Atom and start using the new functionality. This means all the installing and managing of packages is done right from within Atom’s main window. No manually downloading packages from some person’s website or digging through obscure
~/Library folders to add functionality.
When considering a tool as integral to your workflow as a text editor, you’ll want to make sure the app is backed by a strong development team and has a consistent update schedule. This ensures that bugs or performance issues are constantly being addressed and that the yearly OS updates from Apple don’t leave your primary tool inoperable.
Atom, being open source, has an advantage here compared to other options like Sublime Text or BBEdit. First, almost the entirety of Atom’s development is in the open, which means that users have both transparency and an opportunity to reach out directly to the development team. If there’s a bug that you find especially annoying, and you have the technical abilities to write a fix, you can even propose code changes to Atom itself, and they might get added to the next Atom release.
Second, because Atom is backed by GitHub — which has a strong incentive to keep developers happy and productive — there’s little chance that Atom will disappear or stop receiving updates in the near or far future. Even if GitHub were to stop actively developing Atom, the open source nature of the app would (probably) allow it to live on through collaboration of its users and other contributors. In that sense, Atom is about as future-proof as an app can be.
Atom is cross-platform, which means that you can download the app for macOS, Windows, or Linux. For someone with one computer, this availability might not seem like an important feature, but for anyone who bounces between a few different operating systems, being able to have your tool go with you is invaluable.
However, unlike the subatomic particle by the same name, Electron-the-framework isn’t necessarily known for its blistering speed. Because Electron applications are essentially web applications inside a native container, opening an app like Atom is similar to running a small, contained instance of Google Chrome in a separate window. Without going into the technical details, Electron apps are often criticized for being memory hungry and worse in performance than a truly-native application. For Atom, this means that its performance when opening large text files or handling giant folder directories with many files can lead to UI hiccups or lag. When compared to more native apps like BBEdit or Sublime Text, Atom still struggles to compete in the upper levels of performance.
That said, for people who aren’t trying to open up multi-megabyte text files or do find-and-replace across millions of words, Atom should be fine.
Given the feature set, it might surprise you to find out that Atom is free. GitHub’s reasoning here is probably equal parts self-serving and philanthropic. Atom ships with built-in support for GitHub-related activities, which will undoubtedly help GitHub if Atom becomes the de facto standard for developers everywhere. But GitHub also rose to prominence because of how many open source projects made GitHub their home. Atom feels a little bit like GitHub giving back to the community that helped make them.
Sublime Text was born at the beginning of 2007 by Jon Skinner, an ex-Googler. In his own words, in one of the earliest posts about what would become Sublime Text, Mr. Skinner had this to say about the current state of text editors: “I think they can be better.”
In many ways, Sublime Text is better than a lot of other text editors out there, and that’s why it’s our first runner up if you don’t find that Atom cuts the mustard.
Even though a text editor deals primarily with — well, text — sometimes the size of the files or complexity of the file structure you’re dealing with requires unflinching performance. I feel comfortable saying that most people don’t fall into this category (except you, Mr. Developer), but for anyone who’s looking for a similar feature set to Atom but with more power, look no further than Sublime Text.
Like Atom, Sublime Text is cross-platform, with versions for Mac, Windows, and Linux. However, Sublime Text isn’t built on Electron; instead, it’s primarily written using C++, which leads to some noticeable performance increases over Atom in tasks that require either large files or complex actions. Even in day-to-day usage, Sublime Text draws less CPU and RAM resources than Atom, so the overall impact on your machine is less.
Conceptually, Sublime Text offers a lot of the same features that we’ve highlighted in Atom. Both offer multiline editing, built-in package management, and robust customization. However, while Atom attempts to provide a user interface for accessing settings and preferences, Sublime Text goes in the opposite direction, directly exposing the underlying preferences JSON file.
This approach means Sublime Text’s preferences are probably one of the least user-friendly aspects of the editor. However, it’s also a design decision that puts the target audience (developers) above platform conventions and pretty interfaces. Hitting
CMD +, opens up a split view window with a JSON file in each pane. On the left is a plain-text manual of every preference available, and on the right are the preferences that you currently have enabled.
For a lot of developers, having quick, no frills access to the underlying configuration settings without needing to reach for a mouse is a beautiful design consideration. Even the preferences for any of Sublime Text’s packages operate in the same way — you directly edit a JSON file. Performance notwithstanding, Sublime Text’s approach to preferences and packages is probably its most divisive design decision, and depending on how comfortable you feel editing code just to change the text editor’s typeface or enable spell checking, you’ll either love Sublime Text’s approach or want to look elsewhere.
A license for Sublime Text costs $80 USD. However, for years, Sublime Text has allowed users to download and run a full-featured trial of the text editor — indefinitely. Every few app launches, a small window will appear, reminding you that you’re using Sublime Text in trial mode, but it’s a fair tradeoff for what happens to be an incredibly powerful text editor.
BBEdit, developed by Bare Bones Software, might be the oldest, most respected macOS text editor out there. It has a reputation for excellent performance (even with massive files), never crashing, and being a great macOS app.
I use BBEdit for working on web sites, processing text files with regular expressions, or just previewing the output from a blog feed I might be testing with Micro.blog. It’s my go-to text editor for all those random everyday tasks in between writing notes and coding on iOS or Mac apps. — Manton Reece, Developer and Founder of Micro.blog
Where Atom’s interface can sometimes feel like the embodiment of its tagline (“A hackable text editor for the 21st Century”), BBEdit is more closely aligned in design and behavior to what Apple would like all macOS apps to be.
Thing one is that I want a Mac app — because I’m a Mac user and I can be very productive when the app supports the standard Mac keyboard editing and drag-and-drop conventions.
Thing two is that BBEdit is fast, powerful, and flexible. In all these decades it hasn’t ever let me down: I can always do what I need to do.
I don’t think it’s ever even crashed on me. As an engineer I respect that; as a user I love that.
— Brent Simmons, Developer and Designer at The Omni Group
However, sidestepping its longstanding reputation, BBEdit has struggled to keep up with the pace of text editor innovation over the past few years. For example, although it has excellent find and replace functionality, there is no multiline editing support. Additionally — and more critically — adding themes or external packages to BBEdit requires you to find the package yourself, download a file, and then manually import the package. Compared to Atom and Sublime Text, adding and extending BBEdit feels painfully slow.
I’ve also run into oddities with BBEdit’s quick switcher. Unlike Sublime Text or Atom, both of which have quick switchers built into the main window, BBEdit’s interface for moving between open files is a smaller, separate window. This can be convenient if you want to keep both BBEdit and the quick switcher open side-by-side, but it’s problematic when you have BBEdit in fullscreen mode. Because macOS treats the quick switcher as a separate window, it actually creates a new, separate Space for the quick switcher. Once you’ve selected the file you want, the quick switcher disappears and the Space along with it. I’m not sure whether it’s a bug on BBEdit’s end or a limitation with how macOS handles Spaces and fullscreen apps, but it is a bit jarring and something that neither Atom nor Sublime Text have to deal with.
Speaking of file management, BBEdit’s approach to open files differs from all our other picks. Instead of having any open file represented as a separate tab (much like a web browser) across the top of the main window, BBEdit has a small pane at the bottom of the sidebar where you can see all of your currently opened documents. I personally find Atom’s and Sublime Text’s tab-based method more pleasing and familiar, but if you tend to have a lot of documents open and prefer to view them in a more information dense display, you’ll appreciate BBEdit’s approach.
BBEdit’s preferences are well-considered and organized in a straightforward, macOS way. When you consider how much you’re able to change or tweak from this one window, it’s somewhat amazing that Bare Bones Software managed to fit everything in. And should you feel lost amid the sea of options, at the bottom of the preferences window is a search box that lets you keyword-search for the preference you’re looking for. I wish more apps had this sort of feature.
Whatever BBEdit lacks in a bullet list feature comparison to Sublime Text and Atom, it makes up for in rock solid stability and unparalleled speed. For some users, that’s all that matters. BBEdit offers a free, 30-day trial. After the trial period, BBEdit continues to operate as a functional text editor, but some of the more powerful features are disabled. A full license costs $49.99 USD.
TextMate, developed by MacroMates, is another native macOS text editor like BBEdit and Sublime Text. I remember seeing TextMate rise to popularity along with the Ruby on Rails web framework during the late 2000s. As Rails was experiencing a high rate of adoption among various web startups, Ryan Bates launched a series of popular online video tutorials that featured a good looking, powerful text editor — TextMate. For a few years, TextMate experienced a number of great updates that made it a consistent contender in questions like the one we’re trying answer in this review.
However, over the past few years, TextMate’s development and viability as a modern text editor has diminished. It’s still a reliable piece of software, but the current state of affairs regarding licensing and longevity are a little confusing. The current story is that you can download the app and use it for free, the code is available on GitHub, and you can also pay for a license, if you feel so inclined.
One thing I’d like to praise TextMate for is the way in which it handles packages, or as TextMate calls them, bundles. TextMate does a good job of displaying packages/bundles in a more macOS way than Sublime Text or Atom, and you can search through or enable packages via a tab in TextMate’s preferences window.
Additionally, TextMate will automatically recommend a package to install based on the language of the text you’re currently editing. This is a nice time-saving feature, and it makes enabling support for new programming languages easy.
Given its somewhat shaky development past, TextMate’s ecosystem of bundles is still alive and well. As of this writing, 41 bundles have been updated since 2017, and there are still a few hundred packages available. So while there’s less activity than what Atom or Sublime Text have going on, it’s far from a ghost town.
Visual Studio Code
In 2015, Microsoft released Visual Studio Code. Visual Studio Code, like Atom, is built on Electron, so it’s got the built-in cross-platform compatibility. It’s quite popular, too, ranked as the #1 development environment in Stack Overflow’s 2018 developer survey.
Visual Studio Code offers many of the features that I’ve already discussed in other editors, but it also includes a number of features and integrations that make it more of an integrated development environment (IDE) instead of a text editor. It’s both, to be sure, but for most people, a simpler app will be better for them in the long run.
Importantly, and undoubtedly contributing to its popularity, Visual Studio Code is available for free. Meanwhile, Visual Studio — Microsoft’s full-featured, professional IDE — costs between $40 a month or $500 for a standalone license. Visual Studio falls well outside the bounds of what we’d consider a text editor, but it’s important to highlight, as it underscores why a free version under the same branding would attract such attention.
Not really, but maybe: TextEdit
I say this only half joking, but if all you really need to do is edit some basic text files, every Mac comes with a copy of TextEdit, and it’s adept at handling small, individual text files.
Available now: our video course for Things 3 users…
Despite some performance misgivings for more intense workloads, Atom’s price, functionality, and approachability when it comes to package management and settings make it our choice for the best text editor for macOS for most people. Backed by GitHub, Atom has a long life ahead, and the open source nature of the project mean that anyone can help make it better.
If you’re in the market for a text editor — whether you’ve been programming for 15 years or you’re just starting the first chapter of your next novel — you should give Atom a shot. Even if it’s not the editor you end up sticking with, we think there’s no better place to start.