Leading professional HTML and text editor for Mac

BBEdit for Mac

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe
Download BBEdit 14.0

BBEdit 14.0

  -  21.8 MB  -  Trial

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system. Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of BBEdit 14.0.


For those interested in downloading the most recent release of BBEdit for Mac or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • BBEdit 14.0 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

What's new in this version:

Additions:
BBEdit 14 enables the following new and/or enhanced features for source code editing:
- Improved language-specific completions while typing
- On-demand display of function parameters and (if available) documentation
- In-editor highlighting of errors, warnings, and notices from "linters" and syntax checkers;
- Reformatting of entire documents and/or selection ranges
- Enhanced "Go to Definition"
- Navigation to declarations, definitions, and symbol references (reverse lookup), where applicable
- Interactive symbol search via "Find Symbol in Workspace" and "Go to Named Symbol"
- BBEdit 14 implements these additions and enhancements via new built-in support for the Language Server Protocol (often referred to as "LSP", not to be confused with Lightspeed Pascal).
- (Note: Despite the term "server", nothing is transmitted over a network, nor does any data otherwise leave your computer by means of LSP support.)
- Complete information on BBEdit's support for LSP is documented here: Language Server Protocol Support in BBEdit 14
- You know that thing where you have a whole bunch of untitled documents open, because it's so easy to make one and type some notes, and then just leave it open? And you rely on BBEdit's amazing crash recovery and document restoration to not lose your carefully kept notes? You can keep doing that if you want, but we have a new feature to make the whole thing faster and easier: Notes.
- Notes are mostly like ordinary text documents, except that you don't have to remember to save them or even make up a name if you don't want to. BBEdit keeps notes all together in a "notebook". Notes exist on disk as text files; there's no secret file format involved.
- Although notes are stored as text files, some of BBEdit's commands for working with text files are disabled or modified when a note is active, in order to avoid confusion. (For example, you can't relocate a note file since that would break lots of things, but you can use "Save a Copy" to save a copy of a note's contents as an ordinary text file somewhere else.)
- There are many ways to make a note, so you can use whatever fits your workflow and style:
- Choose "Note" from the "File → New" menu. This makes a new empty note, into which you can type or paste text
- Choose "Note (with selection)" from the "File" → New menu. If you have a range of selected text in a BBEdit text document, this command is enabled and choosing it will create a new note with the selected text.
- Choose "Note (with Clipboard)" from the "File → New" menu. If this command is enabled, choosing it makes a new note with the contents of the Clipboard
- Choose "Save as Note" from the File menu. This command is available for untitled text documents (which have never been saved to disk)
- Right-click on some selected text in a BBEdit editing window and choose "New Note (with selection)" from the contextual menu
- Right-click on some selected text in another application, and choose "New Note in BBEdit" from the Services submenu of the contextual menu; or from the Services submenu of the  menu
- Open the Notes window (on the Window menu), and use the "+" button at the bottom of the sidebar, or the contextual menu in the sidebar, to add a new empty note
- With the Notes window open and its sidebar visible, drag a file or some text into the sidebar. If you drag a file, the original file is left undisturbed.
- After installing the command line tools, pipe some text into bbedit --note; BBEdit will create a new note from the text. Additional details are available in the bbedit(1) man page.
- The "Notes" command on the Window menu opens the Notes window, which displays all of the notes that you've created. Drag notes in the sidebar to rearrange them; you can also use the "+" menu or contextual menu in the sidebar to create Collections to organize your notes.
- When you create a note, and as you edit it, BBEdit will change the note's title based on the text at the beginning of the note. If you would like to make a note's name "sticky", right-click on it in the Notes window sidebar and choose the "Rename Note" command from the contextual menu. The name you apply there will become that note's name forever (or until you "Rename Note" again), and subsequent edits to the note's content won't affect the note's name.
- To permanently delete a note, use the "Remove" command in the Notes window's sidebar contextual menu. You can right-click on any note to remove it; or on a selected range of notes; or on a selected range of collections and notes. (Removing a collection will remove all of the notes within it.) You'll need to confirm that you wish to permanently delete the note(s), since the operation is not undoable. When you delete a note, BBEdit will place the note's backing file in the Trash, so if you change your mind you can open the file and recover its contents.
- If for some reason you need to export all of your notes, use the "Export Notes" command on the File menu. This will create a folder with all of your notes in it, with subfolders for collections. This command is always available if any notes exist.
- Use the "Notes" item in the list of search sources in the Multi-File Search window to have BBEdit search your notes when doing a multi-file search (or replace, or extract).
- You can quickly go to a note using the "Open File by Name" window; enter all or part of a note's title, and matching notes (and other files) will appear in the results.
- If you are using Anaconda via the conda or miniconda tools, BBEdit will list your available environments on the "#!" menu, and you can change the active environment (which has effect only within BBEdit) by choosing it from the menu.

The following notes and limitations apply:
- Scripts and filters that you run from the #! menu's commands, as well as from the Scripts menu, Apply Text Filter, and text factories, will use the additional environment variables contributed by the current virtual environment.
- This includes, but is not by any means limited to $PATH, and so switching virtual environments may alter the behavior of Unix script operations in ways that only make sense if you keep this in mind
- Shell Worksheets do not participate in virtual environment awareness or switching
- Added "Repeat Last Command" to the Edit menu. This command literally repeats the previous menu command selection. This includes base menu commands as well as items on the Scripts, Clippings, Apply Text Filter, and Stationery submenus.
- Note that that choosing the Repeat command only repeats the selection of the previous menu command, not necessarily its effects. If the state of your document or the application has changed so that the previous command would be disabled, "Repeat" will be disabled.
- The only repeatable commands are the ones that also appear in the "Commands" command window. Therefore, items on the "BBEdit" menu are not repeatable, nor is the "Repeat Last Command" command itself, nor is the "Commands" command.
- Some menu commands will not affect the "Repeat Last Command" state, specifically: commands on the Window menu, Close commands, and "Next Document"/"Previous Document" will leave the Repeat Last Command state alone. So (for example) if you did "Change Case" on a document, and then switched to another document, "Repeat Last Command" would repeat the selection of "Change Case".
- The factory default keyboard equivalent for "Repeat Last Command" is Command-Y. As always you can adjust this in the "Menus & Shortcuts" preferences.
- Added "Automatic completion" to the language-specific preferences, in the "Editor" tab. You can employ this as desired, either to turn completion off by default and then re-enable it for specific languages, or (more likely) turn off automatic completion for Markdown and other content- oriented (vs code-oriented) languages.
- Added the extract command to the scripting dictionary
- The Clipboard window makes a triumphant return. (Choose "Show Clipboard" from the Edit menu to make it visible.)
- When dragging an image or an HTML file into a Markdown document, BBEdit will generate appropriately formatted Markdown references. (As when doing this in an HTML document, you can bypass the behavior by holding down the Option key while dragging and dropping.)
- BBEdit now displays Finder tag information for files in sidebars. You can control this using the "Show Finder tags in sidebar lists" setting in the Sidebar preferences.
- File (and folder) filters include a new term: "Any Finder tag". You can enter the name of a single Finder tag in the string field, and if the file has any Finder tags applied and any of the applied tags matches the tag name you entered (using any available string test), the file or folder will match the filter.
- "Remove Blank Lines" is now available as a text transformation on the Text menu, in text factories, and via the AppleScript interface. This transformation will remove blank (only whitespace) and empty (no characters before the line break) lines from the document. This saves you the trouble of having to come up with a Grep pattern to do the same work, as well as the effort of trying to misuse "Process Lines Containing" for the job.
- Added "Alternate Case" to the available options for Change Case (in the menu command, submenu, text factories, and scripting interface). This option will force the character case of everything in the processed range, starting with lower case and alternating between upper and lower; and resetting at sentence boundaries. hErE'S aN eXaMpLe Of WhAt ThIs LoOkS lIkE. sOmEtImEs It's CaLlEd "sPoNgEcAsE".
- The "Replace All" panel for text factory windows now provides a "history" menu button, providing access to the Find window's history. That way, if you've spent time sorting out a search/replace pair in the Find or Multi-File Search window, you can easily reuse it in a text factory without resorting to copying and pasting it like some kind of cave dweller.
- You can now control whether any given language appears in the Languages menu (as used in the status bar and in the "Text Options" panel). In the "Languages" preferences, click the "Installed Languages" button to see the list; you can use the check box in the "Menu" column to show or hide the language. Hiding a language from the menu does not affect BBEdit's ability to open files in that language.
- When "Show matches" is turned on in the Find window, a status line appears at the bottom of the window to indicate the live-match results.
- BBEdit will now provide docset information to Dash when you use "Find in Reference". Most of BBEdit's factory-supplied languages specify a default docset list, derived (where applicable) from information provided by the developer.
- Custom language settings (in the "Languages" preferences) have a tab for "Dash". In here, you can customize (or set up) the list of Dash docsets that BBEdit will request when using Dash for "Find in Documentation".
- The Languages preferences pane now has settings to control the default language. There are separate settings for new vs. existing documents, the latter which affects files that already exist, but which don't carry any metadata (such as a mode line, EditorConfig file, or filename extension) to identify their language.
- Added two commands to the Text menu: "Reformat Document" and "Reformat Selection". These are enabled when the current document's language module supports reformatting intrinsically, or if the language module has a configured running language server which supports the respective capabilities.
- Added "Expand Emmet Abbreviation" to the Edit menu. If you have Emmet installed (see below), this command will ask Emmet to expand the abbreviation on the line containing the insertion point, based on the line's contents and the position of the insertion point.
- This feature requires that Emmet be installed, which you can do using "npm install emmet"". That means you must also have Node and npm installed. You can do this using Homebrew (use "brew install node") or some other utility; or by downloading the installation package from the Node.js web site.
- As long as the emmet package has been installed as of application launch, BBEdit will be able to run Emmet
- Added JSON formatting support to the factory-supplied JSON language module. Choose "Reformat Document" from the Text menu to reformat the document's text.
- Added built-in support for R syntax coloring, function navigation, and folding
- Added a built-in language module for Lisp (its base keyword set comes from Common Lisp), Scheme (whose keyword set is derived from MIT scheme), and Clojure
- Added built-in support for Go: syntax coloring, function navigation, and folding
- Added a built-in language module for Rust
- Added a built-in language module for TOML
- Added built-in support for syntax coloring and function navigation in Arduino source files. The "Arduino" language is treated similarly to C++, so that counterpart navigation and other relevant features behave as they would for such files.
- Note: If you previously were using an outboard Arduino codeless language module, we recommend that you remove it from your Language Modules folder, or else it will override the built-in support
- Added "Vue.js" as a distinct language setting, to allow separate filename extension mappings and language server configuration for Vue.js source files
- Added a language module for USDA, the ASCII interchange format for Universal Scene Description files
- Added Grep syntax coloring to the text factory "Replace All" sheet (when "Use Grep" is turned on)
- Added support for ~~strikethrough~~ syntax coloring in Markdown documents, as defined in GitHub-flavored Markdown
- Added an adjustable splitter to the Pattern Playground window, so that the Search Pattern area can be enlarged
- Packages can now contain a Custom Keywords folder and thus contribute additions to any language's built-in keywords
- Changed the HTML syntax coloring scanner so that "sloppy" comments which contain runs of dashes are allowed, as long as they begin with ""
- Added support to Markdown module for syntax coloring of footnote references and footnote definitions, as supported by some flavors of Markdown
- A footnote definition must start at the beginning of a line, and looks like [^theName]: the footnote text
- An inline footnote reference is just [^theName]
- URLs from inline links in Markdown documents are now listed in the includes menu at the top right of the editor window. Selecting one of these URLs from the menu will do the regular thing: try to open the contents of that URL in a new document.
- If the system trackpad preference for "Look up & data detectors" is set to "Force Click with one finger", then doing so on a word in a text document will open the Dictionary panel on that word.
- Added the ability to drag files (not folders) from an FTP/SFTP browser window to the Finder (and other applications that want files). When the item is dropped in its destination, BBEdit will download the file as indicated.
- This is intended strictly as a convenience
- The "Add Items" file panel for projects gets a "Show hidden items" check box, which allows you to add normally invisible files/folders to the project
- Added "Show in Project List" to the contextual menu for a single item in the Currently Open Documents list of a project window

The Appearance preferences provide the following options for which application icon to display in the Dock:
- Default: the factory application icon
- Classic: the icon used in BBEdit versions 11-13
- Legacy: the icon used in versions of BBEdit first shipped in the 20th century
- TextWrangler: the TextWrangler application icon
- Added the ability to use wildcard filename extension mappings, both in the custom mapping list (Languages preferences) as well as in the defaults for a language module, in its BBLMFilenameExtensions list.
- Added "Precompose Unicode" to the Text menu. This command will convert decomposed Unicode pairs (such as a letter followed by a combining accent or diaresis) into a single Unicode character, where possible. Precompose Unicode is also available as a Text Factory operation as well as via the AppleScript interface.
- "Open in New Window" is available when right-clicking on an item in the Project section of the list, as well as in the Notes window, for documents that are not otherwise open in the current window. Likewise, for documents that are open in the current window, "Move to New Window" and "Open in Additional Window" are available on the contextual menu in the Project section (or Notes window sidebar).
- Text factory windows get a contextual menu; you can cut, copy, paste (if you previously cut or copied a text factory operation), and enable/disable selected items
- Added "Open Issues Panel" to the Navigation Bar section of the Menus & Shortcuts preferences; this keyboard equivalent can be used as a substitute for clicking on the diagnostics indicator in the navigation bar. In addition, using this keyboard gesture while the insertion point is in the middle of an underlined issue range will open an issue panel at that location.
- Added omni*js as a default mapping to TypeScript, to support Omni Automation composition.
- Added a new script attachment point, to provide additional control over the text generated when you drop an image file into a BBEdit editing view.
- The entry point for the script is documentWillInsertTextForDroppedImageFile, and the parameters are (listed in the order supplied):
- a reference to the BBEdit document on which the image file is being dropped;
- a reference to the image file being dropped;
- the text generated by BBEdit for the drop, if any. This will always be present, but may be the empty string.
- Unlike the other "will" attachment points, documentWillInsertTextForDroppedImageFile should return a value. This can be one of:
- the proposed text, which inserts what BBEdit would have inserted anyway had this script not been present
- the missing value pseudo-value, which will abort the drop operation (and insert no text)
- some customized string, generated at the script's sole discretion
- Note that BBEdit will wait for this function to return, so any work that it does must take minimal time (or be done asynchronously, perhaps in an "ignoring application responses" block)

Changes:
- The "BBEdit Backups" folder now lives inside of the application's sandbox container, within the "Documents" folder. You can get there from the "Document Backups" command on the Folders submenu of the BBEdit application menu. Existing BBEdit Backups folders (including those in Dropbox, iCloud Drive, and the previous location in ~/Documents/) are recognized and used in place; there is no need to relocate them.
- "Reveal in Finder" and "Reveal in Project List" have been renamed to "Show in Finder" and "Show in Project List", respectively. They still do the same thing, though.
- Added a "System Diagnostic Folders" entry to the Folders menu, for quick access to diagnostic logs generated by macOS.
- "Entab" and "Detab" have had their names changed to "Convert Spaces to Tabs" and "Convert Tabs to Spaces", respectively. This is more verbose but less abstruse.
- The "none" indicator for unset keyboard equivalents in the Menus & Shortcuts preferences now reads "click to set", thus making it clear(er) that you need to do something to change an unassigned keyboard equivalent.
- The "Counterparts" navigation bar item has been renamed, and reworked. It's now called "Related Files", and the Appearance preferences have been changed to reflect that. The Related Files menu contains includes (as detected by the language module's function scanner, if any) as well as related "counterpart" files in the same directory. The "Includes" navigation bar item has been retired (and the Appearance preferences have changed to reflect that, too).
- Although BBEdit will avoid activating the "Unix Script Output" window when it's already open, you may find it desirable to do so anyway. If so, an expert preference exists for this purpose: defaults write com.barebones.bbedit AlwaysBringUnixScriptOutputToFront -bool YES
- When using a Unix command to generate HTML for previewing, BBEdit will set the current working directory to the directory containing the document, if possible. That way, processes which depend on being able to find data relative to the file can use getcwd(3) to find the appropriate location.
- File transfer progress for open/save via FTP/SFTP is now window-modal when possible.
- The Expert Preferences help is now exclusively served on our web site, at https://www.barebones.com/support/bbedit/ExpertPreferences.html. The button in the "Expert" preferences pane will take you there, as will the Expert Preferences link in the help book.
- Made a change so that shell worksheets don't show the language setting by default. (The language for worksheets is always "Unix Shell Worksheet".)
- If for some reason you need to show or change the language of a shell worksheet (which affects only its display, not its behavior), you can do so with an expert preference: defaults write com.barebones.bbedit ShowLanguageSettingInShellWorksheets -bool YES
- The old path overrides for git and svn are surplus to requirements and are no longer supported. If BBEdit can't find those tools in your $PATH, fix your shell environment configuration as needed. If you need to disable Git or Subversion support entirely, turning the appropriate menu off in the "Menus & Shortcuts" menu does that.
- Made a change to behavior when using "Save Default Text Window"/"Save Default Project Window" as follows: if the "Automatically show sidebar" preference is set to "as needed", BBEdit will store the current sidebar visibility of the window as part of the default window layout. Otherwise, if the sidebar preference is set to "Always" or "Never", then BBEdit will set the default sidebar state to be visible ("Always") or hidden ("Never"), respectively.
- BBEdit will always apply the font configured in the "Editor Defaults" preferences when opening an existing document, even if a different font was manually set in the document. That way, if you save changes to a file, close it, and subsequently change the default font setting, the new font setting will be in effect the next time you open that file, rather than the previous default. If you prefer the previous behavior, go to the Editor Defaults preferences and turn off "Override document setting".
- Added a setting to the Editing preferences, to explicitly collapse folds below a specified level when opening a document. This setting is off by default.
- When running on macOS Big Sur, the "Don't Save" button (or its equivalent) in the "save changes before closing" alert is now tagged as a "destructive action" button. The OS may elect to color this button accordingly and/or implement behavior changes to prevent its accidental use. (At this writing, there is no visible difference in the button's appearance.)
- Slightly tweaked the table layout in the Find Definition sheet for multiple results.
- Gave item badges for the completion/function/Find Definition/Go To Named Symbol lists a white border to increase legibility on dark backgrounds (in dark mode or when selected).
- Turned off "Check spelling as you type" by default for JSON and SQL. If you need this back on, you can add a custom language preference setting in the Languages preferences.
- The Includes menu will show icons for other include-file reference types, based on their name.
- Changed the factory default application appearance setting to "Use system appearance" rather than forcing Dark Mode. As always you can change this in the Appearance preferences. Existing preferences are unaffected by this change.
- Made BBEdit's clipboard processing aware of "transient" items placed on the system clipboard by utilities such as Typinator, TypeIt4Me, TextExpander, and others. Under those circumstances, BBEdit will avoid rotating the clipboard ring so as not to disturb the other contents of the ring.
- Changed the behavior of "Compare Two Front Windows" so that instead of always putting the newer document on the left, it will always put the front window's document on the left. In this way, if you want to alter the position of the compared documents, it's as simple as altering the front-to-back order of the desired windows.
- Changed the behavior of "Un/Comment Lines", so that if any lines in the selection range are uncommented, then all lines in the selection range will be prefixed with the line comment delimiter -- including lines which are already prefixed. If all lines are prefixed with the line comment delimiter, then BBEdit will remove the first occurrence of the line comment delimiter on each line, thus returning things to their previous state. This behavior is consistent with the "toggle comments" behavior of Xcode and others.
- Made some changes to how status bar items are laid out below the text area, so that they occupy a little less space. This allows the Text Encoding and Line End status bar items to be on by default. (As always you can adjust which items are visible using the Appearance preferences.)
- The document modification date status bar item will display only the time, in cases where the modification date is "today". If the document was last saved on a different day, the status bar will show the date and time.
- When you are running in Free Mode and choose a command that requires a paid license or active subscription (the latter only in the Mac App Store), BBEdit will now bring up its license panel, which provides a better experience than the previous alert.
- When aging out rescued items from the "Rescued Documents" window, BBEdit will place them in a "Rescued BBEdit Documents" folder in the Trash, so that their origin is a little less mysterious. (Reminder: you can control document rescue behavior in the "Text Files" preferences.)
- When doing an Extract operation (from the Find or Multi-File Search window), with Grep turned off, BBEdit will now extract the entire line containing the match, rather than just the exact match. Because when your spouse needs to process a gigabyte of CSV data across two dozen files in under ten seconds, you do what you have to do.
- Increased the maximum width of the Window palette, again.
- Changed (and normalized) the nomenclature: "Spaces per tab" is now used instead of "Tab width: xxx spaces" in the Editor Defaults preferences, Text Options sheet, text options popover, and the font panel.
- Added a stepper control to the tab width in the font panel (View => Text Display => Show Fonts) and modernized the control layout.
- Added stepper controls to the tab width setting in the "Text Options" sheet and the Editor Defaults preferences
- If a search/replace string pair is added to the history as the result of an Extract operation, the history menu will so indicate
- Changed "Find in Reference" on the Search menu to "Find in Documentation", which is less ambiguous now that "Find References to Selected Symbol" exists
- Added qualifying terms (AND, OR) to the file filter editor settings
- Updated the built-in cmark to version 0.30.0 (the current as of this writing)
- Language module developers: language modules (compiled and codeless) support a new (and recommended) property key: BBLMFilenameExtensions. This is an array of strings, and is intended to replace the legacy BBLMSuffixMap array of dictionaries.
- Each string in the BBLMFilenameExtensions array is a filename extension (which by definition does not include a period) which should map to the language being described.
- For backward compatibility, BBEdit will continue to recognize and load the legacy BBLMSuffixMap array, but you should not use it for new modules.
- Language module developers: string constants in the language module API have been redefined as global symbols rather than macros, so that they get stored in a single global section rather than being replicated every time "BBLMInterface.h" gets included. You will need to add "BBLMInterface.mm" to your project.
- Language module developers: if you would like to specify a default docset list for BBEdit to use, add a BBLMDashDocsets value to your language module's property list, with an array of strings. Each string is a docset name, and the list is provided to Dash in the order that you specify it.

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe