Welcome to my carefully curated list of the best free programs for MacOS, Windows, and Linux!
This is the free software that I find essential for personal/hobby use. These are the programs that I either immediately install when I set up a new computer, or I end up installing as I need them. I have tried a number of solutions in each category before choosing one that I like the most. I maintain this list for my own convenience so I can quickly remind myself of (and find) all the software that I thought was best the last time I evaluated a category. In some cases I have listed alternatives, honorable mentions, or close seconds. Having said that, I try not to include redundant programs unless they bring something to the party. I’m not trying to make a comprehensive list of all free software; this is a decidedly opinionated list of the software I have chosen as my favorites out of the myriad of options.
Many of these programs are cross-platform, but if an app doesn’t support at least Windows and Mac I will make a note of that and usually list alternatives. All of these programs are free for personal use, and many (if not most) are open-source as well. If there are commercial versions available for a program, the free version listed here is not a time-limited trial, and it is useful without upgrading to a paid version.
Have a suggestion for a great program that should be on my list? Let me know about it so I can try it out! Have a comment or correction on something on this website? Click on the Feedback link and let me know!
Graphics & Video
Video Player
- VLC: Cross-platform
video player for nearly any format imaginable. Especially useful
for when you need to do uncommon things like adjust
audio/Bluetooth sync or load custom subtitles. The interface
isn’t fancy, but it has the features you need (and many you
don’t) and stays out of your way.
- An honorable mention has to go to PotPlayer if you’re on Windows. The interface is arguably better and it has a few features VLC doesn’t.
- IINA: While VLC works great on any platform, Mac users may prefer IINA. It’s a full-fledged media player with a clean interface and features like picture-in-picture mode and built-in subtitle downloading. If I’m on a Mac, I’m using IINA over VLC 99% of the time. (Mac)
- Friendly Streaming Browser is a weird name for a cool app. It’s just a front end for various streaming services (YouTube, Netflix, etc.), but it excels at multitasking by offering a Picture-In-Picture mode. I didn’t realize I needed this until I tried it. This is what you want when you’re working on something and need an easy way to play a 4-hour instrumental playlist from YouTube in the background, or maybe you’re editing photos or something, and you want to watch a mindless episode of a cooking show in a tiny window at the corner of your screen. (Mac)
Photo/Image Editor
- GIMP: Robust image editor similar to Photoshop. It might not be appropriate for a casual user who just wants to crop some photos, but it’s not really suited for DTP pros either since it’s missing native CMYK support. Having said that, if you’re doing non-print stuff, it will almost certainly get the job done if you have the patience to learn the tool. Bonus: the scripting allows for complex plugins and automation.
- Paint.NET is a fantastic alternative to GIMP for those weary of the learning curve (or the name). It is less powerful than GIMP, but it’s easy to use and really polished. It’s the Paint program Microsoft should have shipped with Windows. (Windows)
Photo Management/Viewing (and Casual Editing)
- Photoscape X: Great program for photo viewing and basic touch-up. It makes it easy to do common tasks like cropping to standard sizes and removing red-eye. There is a Pro version with extra features, but the free version boasts a truly impressive feature set that is more than enough for most people. If you buy the Pro version it’s because you like it so much, not because you felt forced into it because the free version was so crippled.
Honorable Mentions
- If the Photoscape X workflow doesn’t agree with you, my runner up is XnView MP. It has an old school interface with simple controls that may be more intuitive for some people. It has all the essential functions and more.
- FastStone Image Viewer is a fantastic photo viewer with a truly impressive set of editing features. After Google retired their Picasa software I used FastStone for about a year, but I just couldn’t get on board with the (for me) unintuitive interface, and I ended up switching to something else. While it didn’t work out for me, it might be perfect for you. (Windows)
- If all you need is a super-fast, image viewer (that incidentally has some robust editing features), look no further than IrfanView. I started using it in the late 1990s, and it is still going strong. This is a great program to make your default action when clicking on JPEGs, GIFs, and PNGs. (Windows)
Image Processing/Workflow
- darktable: If you
work with RAW photo files or want to get the most out of your
photos, you need a non-destructive post-production software like
darktable. This isn’t about “photoshopping” a picture; instead
it’s all about histograms, levels, curves, sharpening, colors,
lens correction, noise, etc.
- RawTherapee is another app worth having in your toolbox. While it seems to me that darktable is overall the better option, RawTherapee has a few features/functions that I think are superior, so I like having both installed.
Vector Image Editor
- Inkscape: Incredibly capable vector image editor for creating professional quality, scalable diagrams, logos, you-name-it. Its functionality rivals Adobe Illustrator, although sometimes the tools don’t map one-to-one.
Digital Sketching/Painting
- Krita is fantastic digital painting software. If you’re into illustration or digital painting, it has what you need. Krita has plenty of great features, but one thing that stands out to me is that it comes with a large selection of high quality brushes that are excellent. Personally, I have moved my digital painting to an iPad, so I’m not using Krita much these days, but I still would recommend it for desktop use.
Stable Diffusion AI Image Generation
- Draw Things is the
easiest to install and use AI image generator on Mac. One-click
install, download a few models, and you’re in business. It
handles inpainting/outpainting without the user even having to
know what that means. Having said that, the current state of AI
means you have to know a bit of jargon and whatnot before you
can really use this tool, but the toolset is robust, the in-app
help is decent, and the results are excellent even running on a
M1 Mac Mini. AI is a rapidly changing landscape, and the
developer is keeping up and adding impressive features at a fast
pace. (Mac)
- Diffusion Bee is the other “beginners” AI program that is easy to install. It isn’t as good as Draw Things at the moment, but it is certainly worth an honorable mention. There is a Windows version in the works, which will probably quickly make it the easiest way to run Stable Diffusion on Windows. (Mac)
- ComfyUI is probably the closest thing we have to a “one-click” install of Stable Diffusion on Windows so far. Just download it, extract the archive, and put your models in place. There are lots of web interfaces to Stable Diffusion, but many of them are harder to install and configure.
Screenshots/Screen Capture
- ShareX: You don’t know
how useful a good screenshot tool is until you start using it.
It’s really handy to automatically save screenshots (or portions
of screens) to a predetermined folder and keep it on the
clipboard as well. ShareX takes it one step further and will
upload the image to pretty much any site you like, and the OCR
functionality is really cool. The icing on the cake is the
screen capture capability that will let you record portions of
your screen and save it to a GIF (or other formats). It’s great
for playing tech support with family to show them how to do
stuff. (Windows)
- Greenshot was my old favorite, and you may want to use it if ShareX is confusing or seems like overkill.
- It’s worth noting that recent versions of Windows 10 now come with a tool called “Snip & Sketch” that does something similar (use SHIFT + WINDOWS + S key combo to access it), although it doesn’t automatically save the image to a file.
- Shottr is an amazing tool
for screenshots on Mac. It has all the usual features plus cool
stuff like scrolling captures (for long webpages) and OCR text
recognition so you can cut and paste text from images on your
screen. (Mac)
- If you don’t need/use anything beyond simple screenshots on Mac, it’s worth mentioning the SHIFT + CMD + 4 shortcut gets you a portion of the screen and automatically saves the file to the desktop.
Live Streaming/Screen Recording
- OBS Studio is a solid choice for live streaming because of the massive feature list, but it can be pretty overwhelming for a beginner. The price is right though (free), so it’s worth the learning curve. Even if you aren’t a streamer, OBS is still useful for recording your screen in case you need to make a quick tutorial to send to someone.
Video Conversion
- HandBrake: Convert video from/to nearly any format. While incredibly powerful and complex, HandBrake makes it really simple to get started. If you don’t want anything special, just drag and drop a file, select a preset target format (e.g. Roku 1080p30 or Android 720p30), and hit start.
- Gifski is a super easy way to convert video to high-quality GIFs. (Mac)
Video Editing
- Openshot: is a capable multi-track editor with a nice interface that is fairly intuitive compared to other apps in this space. If I don’t need anything special, this is the first place I reach. Feature-wise, it seems like it falls right between Shotcut and kdevlive, but I have run into weird bugs that can be annoying. Having said that, one feature I especially enjoy is the captioning support which includes some great appearance customization. I initially started using Openshot because iMovie was so limited in video formats and aspect ratios, and I quickly discovered Openshot is more capable in a dozen other ways as well. I don’t even bother with iMovie anymore.
- kdenlive: If you do need something special that Openshot can’t handle, it’s great to have kdenlive in the toolbox. Openshot has it beat in a few areas, so I still prefer it in general, but kdenlive has some features that make it worth having around.
- LosslessCut is a lossless video editor that doesn’t require reencoding the entire video for simple operations. This is a great option if you just need to trim or cut out a section from a video file.
Also check out:
- DaVinci Resolve is a professional package, but they have a free version that’s very impressive. It outshines the above editors in features, but I’m reluctant to learn a free tool that could be retracted at a whim, so in general the open source tools get my vote.
- Shotcut should at least be on your radar, and perhaps you find it to your liking more than Openshot, but it’s limited functionality (especially subtitles/captioning) and steeper learning curve make it hard to recommend over the other options.
Animation
- Blender: 3D modeling and animation. Has more power than I have skill, but other people do really cool things with it. It’s fun to play with though and is worth the download.
- Synfig Studio: Nice 2D
animation package. I dabble with projects, and when I do, this
works for me. It’s simple and intuitive for the level of
projects I make.
- OpenToonz is really cool 2D animation software that’s most well-known for being used by Studio Ghibli and Futurama. It is possible that OpenToonz is better than Synfig, but I don’t do enough animation to know the difference, and OpenToonz is less intuitive to me.
Media Server
- Plex is my reluctant choice for the best personal media server for most people. This is what you want for steaming your media to your Roku, Fire Stick, smart TV, etc. Just tell Plex where you store your movies, TV shows, and music and it will do the rest, including downloading cover art and show descriptions. My main reservation is they are monetizing the service more, and the free features feel sparse. For instance, you need a “Plex Pass” subscription to download shows to your client device for offline viewing. However, presently the core functionality is still free, and the easy setup and overall user experience is still worth giving Plex a try.
- Jellyfin is the more consumer-friendly, open-source alternative to Plex. Setup is fairly simple, although you may need to add some plugins to get all the functionality you want. Otherwise, it’s a fine alternative and arguably better than Plex in some regards. I would recommend trying Jellyfin first if you are more tech savvy. There are Jellyfin clients on every platform as well, so streaming to any device is easy.
Comic Reader
- YACReader is actually two programs in one. It comes with an excellent comic reader and a comics library browser. It reads every popular format (cbr, cbz, cb7, pdf, etc.), and it has all the features I need, and quite a few I don’t. Works equally well on Windows, Mac, and Linux, which is handy so I can use the same solution everywhere.
Music & Audio
Music Library Organization and Playback
- MusicBee: A great way
to organize and play your local music library. Includes handy
features like gapless playback and auto-tagging. An app like
this is has become mostly obsolete since I’ve moved to streaming
services like Spotify, but when I do want to work with local
music files, it’s hard to do better than MusicBee.
(Windows)
- I’m not listing a Mac alternative for playback here because the default Apple Music app is fine, and a third party app just isn’t necessary for me.
- MusicBrainz
Picard is the best cross-platform solution for identifying
and organizing a large collection of music files. It can figure
out what files are based on tags and even audio fingerprints.
Besides tagging it will rename and move files as well. Even if
you’re using Apple Music or MusicBee to organize your music
library, this is still a handy tool to clean up the incorrectly
tagged files before adding them to your library.
- If Picard isn’t to your liking, I would suggest MP3Tag . It is a universal batch tag editor that handles MP3s along with every other popular audio format. The robust file renaming/retagging tools and online database lookups make this powerful option for cleaning up your audio collection. This is only free for Windows. It’s a paid app on the Mac App Store. (Windows)
Audio Conversion
- fre:ac: free audio converter and CD ripper for various formats and encoders including MP3, MP4/M4A, AAC, and more. This category of software is basically obsolete for me now, but I’m keeping it on my list for completeness if not for utility.
Audio Editor
- Audacity: Simple
multi-track audio waveform editor. From recording, to basic
mixing, to filters and effects, Audacity has you covered. Just
keep in mind this isn’t a full-blown DAW, so don’t expect
non-destructive mixing and whatnot.
- A simple single-track alternative to Audacity is AudioDope . If you just need to quickly trim an audio file or apply some basic filters, AudioDope is a good choice. (Windows)
Digital Audio Workstation (DAW)
- Cakewalk:
This used to be a commercial DAW that is now free as of 2018.
It’s a rebranded version of SONAR Platinum, and it’s incredibly
powerful. This is a great place to start if you want to make
some music. (Windows)
- Another great DAW is Waveform Free. While there is a Pro version with more features, the free version has no limitations and is very capable.
- Ardour is worth checking
out if you’re a Linux user. It does all the basics really well.
From recording audio or MIDI, to editing, to mixing, you’re
covered. The only trick is if you really want it for free, you
should use your distribution’s packager manager and don’t
download it from the website.
- You may be asking why I limit my Ardour recommendation to
Linux users. The simple answer is on Windows and Mac it isn’t
really “free”. While it is open source and you can build it from
scratch for free, if you want a convenient, pre-built binary,
you need to either buy it or pay a subscription. The free/demo
version goes silent after 10 minutes, which I consider too
restrictive to still include here on my list of free
software.
- You may be asking why I limit my Ardour recommendation to
Linux users. The simple answer is on Windows and Mac it isn’t
really “free”. While it is open source and you can build it from
scratch for free, if you want a convenient, pre-built binary,
you need to either buy it or pay a subscription. The free/demo
version goes silent after 10 minutes, which I consider too
restrictive to still include here on my list of free
software.
- GarageBand is the obvious easy-to-use entry-level option for the Mac. It’s free on the App Store, so you might as well give it a try. It’s tough to beat the no nonsense workflow that works great with MIDI as well as recorded tracks. (Mac)
Step Sequencer
- LMMS: Its website says it’s a “sound generation system, synthesizer, beat/baseline editor and MIDI control system which can power an entire home studio”. I’d call it a nice step sequencer with VST and SoundFont support for creating music. I wouldn’t call it a DAW because it doesn’t record multitrack audio, but combined with Audacity, you can make some cool stuff. Honestly, I wouldn’t even list LMMS now that Cakewalk is free, except LMMS is open source, and Cakewalk may go away sometime in the future.
Synth Plugins
Text & Documents
There may be some redundancy here, but software such as text editors are like knives: you wouldn’t use a Bowie knife when you need a scalpel or a steak knife when you need a machete, so I use multiple editors depending on the task.
All-Purpose Text Editors
- Notepad++ is easy to recommend for general text editing and quick file edits on Windows simply because it is blazing fast and the interface stays out of your way. This is my default application for text files, and over the years I’ve written many thousands of lines of code in Notepad++. Having said that, the antiquated syntax coloring system and somewhat clunky customization limits how well it scales to many tasks. But it is still a fast editor and it shines when opening a 1 GB log file… as long as it doesn’t need to be syntax colored as well. (Windows)
- CotEditor is my
favorite text editor on a Mac for quick and easy text editing.
It isn’t as well known as other editors, but it is fast and
capable. It isn’t trying to be an IDE, so don’t expect too much,
but the amount of customization and the total feature set is
fantastic. It has an inspired and flexible scripting interface
which lets you write plugins in Python, bash, Applescript, and
several other languages. And did I mention it was fast?? This is
a great choice for your default text file handler.
(Mac)
- If CotEditor is too barebones for you, the next step up without going to an IDE is TextMate . It opens slower than CotEditor, but it has some robust functionality including an impressive array of text manipulation tools and extensive language support with syntax highlighting, while still staying fairly lightweight. (Mac)
- Neovim:
vi
was a legendary, powerful keyboard-based text editor with a steep learning curve, Vim is its most successful clone (itself being a derivative of Stevie), and Neovim aims at pushing Vim into the 21st century with a clean code base and features like Lua extensibility and asynchronous plugins which allow for things like async linters. Some people think it’s silly to use avi
clone more than four decades after it was introduced, but there are some tasks that are orders of magnitude faster in avi
clone than modern mouse-oriented text editors.- If a console-based text editor is what you need and you
don’t love the
vi
modal editing and key bindings, you should really check out micro. Micro works from a console, but it has modern capabilities like mouse support, multiple cursors, Lua plugins, tabs, tmux-like splits, and syntax color schemes. Best of all, the normal Windows key bindings like CTRL-C, CTRL-V, CTRL-S, and CTRL-Z work as expected.
- If a console-based text editor is what you need and you
don’t love the
Honorable Mentions
- Sublime Text is a fast, clean, good looking editor, and it gets points for popularizing (if not actually inventing) the command palette and document map (and maybe even multiple cursors?), but I want to like it more than I actually do. Maybe I’m just too old to learn new key bindings? You should check it out though. Sublime is truly excellent software. The real reason it’s just an honorable mention is it technically doesn’t meet my criteria for this website as “free”. You can evaluate Sublime Text for free with no feature limitations or time limits, but you should pay if you continue to use it.
- Geany is a jack-of-all-trades that is good at everything, but not best-in-class in anything. It is a versatile cross-platform programmer’s text editor that you can configure to be anything from a simple Notepad.exe replacement to an ultra-lightweight IDE. It’s just hard to recommend because while it’s good for quick edits and opening text files, Notepad++ or CotEditor are even faster for those quick tasks. And while Geany is really nice for light coding, VS Code is even better. Geany is rarely the best tool for the job, but it might be the right choice for a computer that just needs an all-purpose, do-it-all editor. If you do try it, there are lots of great features hidden in the official plugin package, so be sure to grab it as well.
Writing/Markdown Apps
This category of apps is appropriate for writing long-form prose like papers, articles, essays, or even books. I’m only including Markdown editors here as I think that’s just a standard requirement for me at this point.
- Obsidian is probably best known as a note-taking app, but it has comprehensive Markdown support, live preview, and a plugin ecosystem that can turn it into just about anything you want. Personally, I like to install plugins for LanguageTool, smart quotes, and Git (for document version control). Obsidian’s support of math blocks and diagrams also makes it a viable contender for technical papers as well.
- Zettlr advertises itself as a “one-stop publication workbench”, and that’s an apt description. While excellent for notes, it handles long projects without breaking a sweat, especially if you need to handle citations. Like Obsidian, it has a very nice live-preview which I find mandatory for a modern writing app.
Honorable Mentions
The above options can honestly be a bit overwhelming if you just want to edit a simple Markdown file. Also worth considering:
- uFocus is a lightweight distraction-free editor for the Mac. Its Markdown support and clean interface make it a perfect choice for quick prose writing. Even though it is simple, there are plenty of customization options to make it work and look just like you want it to. It’s a wonderful app if you don’t need live-preview. (Mac)
- WriteMonkey is a distraction-free text editor with a few handy features that pushed it to the front of the pack back when distraction-free editors were new and all the rage. Its development has slowed down (stopped??), but it still works fine even if it feels a bit outdated at this point. (Windows)
- MarkEdit reminds me more of a code editor that supports Markdown than a modern writing app, but it is excellent at being a “Markdown code editor”. There is no in-app rendering, but the syntax highlighting is helpful. (Mac)
- MarkText is a cross–platform option that I probably would have included as one of my first choices due to its excellent live-preview and intuitive interface, but development seems to have stopped, so I question its longevity. MarkText looks like a clone of Typora (a paid app), so if you like Typora, you may prefer the free MarkText instead.
Note-Taking
- OneNote is easy to recommend given the comprehensive functionality and the fact that it is free. For most tasks, I’m a plain text file guy. However, I use OneNote at work extensively, and I really like it. I can integrate emails, pictures, tables, and all the rest into a workflow organized by notebooks, sections, and pages. However, if you don’t use Office 365 and/or Outlook, OneNote might not have as many advantages for you.
- Obsidian is listed above
in the general writing app category, but it is great for notes
as well. Images and tables are supported through Markdown, so
they aren’t as easy to include as in OneNote, but Obsidian
excels when it comes to text. The Canvas feature is also really
cool. It lets you visualize and connect data in interesting
ways, a bit like a mind mapper. Obsidian’s biggest shortcoming
is you have to figure out your own file-sync solution unless you
pay them for their sync service. Saving your vaults to Google
Drive, iCloud, OneDrive, etc. will solve this for you, but you
still won’t be able to work with some combinations (like saving
a vault to Google Drive on desktop and opening it on an iPhone).
- Zettlr (also mentioned above with the writing apps) is a Markdown-based app great for note-taking, and (unlike Obsidian) it is completely open source. While powerful on the desktop, Zettlr does not have a mobile app counterpart, so your notes aren’t easily accessible on your mobile devices. You are also on your own for syncing, but that is easily overcome by saving your notes to a cloud service like Google Drive or iCloud. Unless open source is incredibly important to you, I would still recommend Obsidian over Zettlr.
- Tot is a Mac-only app that sits in your menubar waiting to save quick notes and snippets of text. This is not a general purpose notes app like the above apps. It is very limited, and it just has seven Markdown-supported “pages” of notes where you can type or paste whatever you like. This weird limitation carves out a unique use-case that I didn’t know I needed until I started using it. As a bonus, syncing is automatic and seamless, so if you install Tot on a laptop and desktop (for instance), it serves as a common clipboard where you can pass information. (Mac)
Text Comparison
- Meld: My favorite
graphical file comparison (AKA “diff”) program. There is 2 and
3-way file diff and merge, as well as directory comparison. It
also plays nicely with many version control systems including
Git.
- WinMerge: WinMerge has been around for a long time, and it’s still one of the best all-around solutions. I’m listing it here because I like it better than Meld for directory comparison, and for that task alone, it’s worth having it installed. (Windows)
- KDiff3 is the other venerable option that’s been around forever, and does a few things better than Meld (namely directory comparison), but overall, it’s never my first choice. (Tip: they hide the downloads here.)
Text Snippet Managers
- SnippetsLab is a
great way to manage snippets of text for easy reuse. I use this
for boilerplate in emails and coding as well as command-line
one-liners. The SnippetsLab Assistant lives in the Menu Bar and
can be activated with global keyboard shortcuts from any program
to easily find and insert your snippets. (Mac)
- If you need a cross-platform solution, massCode is a snippets manager heavily inspired by SnippetsLab. It has Markdown and Mermaid support, as well as interesting features like integrated mind-mapping that generates graphics representations from Markdown hierarchy. My main complaint is that it doesn’t have global hotkey support, so actually using the snippets can be tedious and harder than it should be.
Text Manipulation
- Boop is a text scratchpad that provides a large host of text manipulations useful for programming or writing. You paste in your text, and then run a script on it. It can be anything you can think of, like running it through ROT13, trimming whitespace, hashing it, html encode/decode, sorting, removing duplicate lines, converting cases, or tons of other operations. If you don’t see what you need, you can create your own script or download someone else’s. (Mac)
Grammar Checking
- LanguageTool is an AI-based grammar checking tool that integrates with a number of other apps or works as a standalone app. If you’re writing prose, this is a handy tool to have around.
PDF Viewing/Editing
- PDFgear is amazing if
you work with PDFs often. If you only have one PDF program on
your computer, it should be PDFgear. You can use it as a viewer,
but it also is an incredible editor. It can edit text,
extract/reorder/delete pages, convert formats, merge and split
PDF files, and it includes robust annotation tools. PDF editing
has traditionally been the territory of commercial programs, so
the fact that PDFgear is free is awesome. (Windows &
Mac)
- If you’re on Linux, your best alternative to PDFgear is PDFsam Basic. It will handle all your basic PDF editing needs. It will merge, split, and rotate PDFs, as well as extract pages. There is a premium offering that does more, but PDFsam Basic covers the most frequent uses cases.
- Adobe Acrobat
Reader: The original PDF viewer. While not my first choice,
I always install it just in case because it is the gold standard
PDF reader. However, the interface has become bloated over the
years and many of the tools require you to upgrade for access to
the premium features. Pro-tip: the mark-up/annotation
capabilities are hidden under View➞Tools➞Comment .
- For a lighter-weight solution to reading and marking up PDFs on Mac, it’s hard to beat Skim. While being fast and free, it is still has plenty of features. (Mac)
eBook Utilities
- Calibre: All-in-one ebook manager. Whatever you need to do to/with an ebook, this will do it. It organizes, converts, downloads covers, etc.. Absolutely indispensable if you have a non-DRM ebook collection. With plug-ins you can even strip DRM to backup your purchases.
- FBReader is a cross-platform ebook reader with a nice clean interface that stays out of the way. It’s simple, but it still has all the customization you need to make it look exactly how you like it . The real killer feature is the “book network”. It uses your Google Drive to store books and sync progress and bookmarks across platforms. If you read from multiple devices, this is a huge bonus.
- Freda: A
nice standalone e-reader that handles the popular formats like
mobi and ePub. The main advantage it has over Calibre’s built-in
reader is the extensive customization options and font
rendering. (Windows)
- The honorable mention on Windows goes to Sumatra PDF because it is a convenient all-in-one reader for PDF, EPUB, MOBI, CBR, CBZ, CHM, and XPS. While Sumatra might not be the best solution for ebooks or comics, it’s handy to have around, and some books even look better in Sumatra (usually because of font rendering). (Windows)
Markup Conversion/Publishing
- Pandoc: Convert markup formats to other formats. Handles Markdown, HTML, EPUB, LaTeX, etc. This is an extremely powerful program, and I like to use it to build websites through the use of its robust template system.
TeX/LaTeX Tools
- MiKTeX: A port of the TeX
document publishing system that converts source files into
beautifully typeset documents. If you know what TeX/LaTeX are,
you need this. If you don’t know what they are, and you care
about breathtaking documents, then you need to learn TeX. The
main advantage MiKTeX has over other TeX distributions like TeX Live (the de
facto standard TeX system for Unix-like systems) is that it
downloads packages on-the-fly as needed and streamlines
installation and updates.
- This isn’t a software link, but a really useful site about LaTeX fonts is here. And while I’m breaking the rules and posting web links, here’s a really good website for LaTeX info.
- The two other MiKTeX alternatives that I want to note are MacTeX, which is a Mac-only distribution of TeX Live, and Tectonic, which is a modern TeX/LaTeX engine that has some cool tricks, including on-demand automatic package installation. Tectonic is not a bad place to start if you have never used TeX before.
- TeXstudio:
Lightweight portable LaTeX IDE, including editor, spell checker,
and symbol toolbars. For those keeping track, this was forked
from TeXMaker back in 2009, and it’s clearly outpaced it. If I
need to edit TeX, this is a nice solution.
- While I love TeX, unless I’m writing a technical paper with extensive math notation or formatting requirements, I’m probably going to use a Markdown editor that supports TeX math blocks instead of a dedicated TeX editor.
- Another nice alternative is to just use VS Code with the appropriate LaTeX extensions installed.
Office Suite
- LibreOffice:
Provides all the usual “office” suspects, like a word processor,
spreadsheet, and presentation applications. While still lacking
the polish of MS Office, for most use cases this is a reasonable
replacement. The key functionality is there, and the major gaps
of the early releases (e.g. Goal Seek and Pivot Tables) have
long since been filled. Worth noting: LibreOffice Draw works
well for flowcharts (similar to Visio).
- Full disclosure, I don’t find LibreOffice essential in the sense that I use it often. I like LibreOffice as a convenience so I can easily open an MS Office file or perform the odd task, but I actually far prefer working in the cloud with Google Docs and Sheets. In some ways, Sheets is even better than Excel or LibreOffice Calc with conveniences like the split() function.
Desktop Publishing
- Scribus is the best free desktop publishing solution out there; perfect for making flyers, invitations, banners, stationary, and even full books. When a casual user needs something more than Word, but can’t justify buying something like Adobe InDesign, Scribus is probably your best option.
Sheet Music
- MuseScore:
Easy-to-use interface for creating sheet music. With great
documentation and abundant resources like videos, tutorials, and
how-tos, you will be creating great looking sheet music
documents in no time.
- If you want to make sheet music and have complete control over every aspect of the output, LilyPond is where it’s at. There’s no GUI, it’s super niche software, so it’s not for everyone, but the results are sublime.
Network & Internet
Web Browser
- Firefox
is a great choice for your default web browser. The robust
feature set and impressive array of extensions make it easy to
recommend. It’s arguably far more pro-consumer than Chrome with
its stance on ad-blockers.
- Google Chrome should get a mention since it was my default browser from 2008 until 2024. Its most recent policy on ad-blockers was a deal breaker for me, and I left to try other options.
- If customization is important to you, Vivaldi may be of interest. It’s doing some cool things and even integrates features like an RSS reader.
- And because you can never have too many browsers, the DuckDuckGo browser is another nice option if privacy and security are a high priority.
Remote Shell Access
- PuTTY: Awesome ssh/telnet client. It’s been the premier free terminal client for so many years because it’s simple and works while not skimping on features. (Windows)
- Tabby is the only client that has ever tempted me away from Putty. At first it doesn’t seem as full-featured, but keep digging and you’ll see all the SSH options you need in a really customizable terminal, including built-in SFTP and cross-platform support. If I’m on a Mac, this is my chosen SSH client. Tabby also makes a wonderful terminal for local shells.
File Transfer
- WinSCP: Great ftp/sftp/scp client with lots of extra features like bandwidth limiting and shutting down the program or computer after file transfers are done. (Windows)
- PortX is a simple,
bare-bones cross-platform option if you want to transfer files
over SFTP or even Amazon S3 or Google Cloud storage. It’s also a
ssh client, but I don’t typically use it for that since the
customization is limited. This is what I generally use on a Mac
since WinSCP is Windows only.
- If you need more features than PortX, Cyberduck is a fantastic alternative that supports a ton of protocols. While it is free, the main drawback is you will see a nag screen asking for a donation every time you close the program.
- My go-to ftp/scp solution for many years was FIleZilla. It’s cross-platform and it worked great. The problem is they did some shady stuff years ago with their installer in an attempt to monetize the software. You would try to install FileZilla, and the next thing you knew you had McAfee installed too. Since then, they aren’t bundling bloatware with FileZilla anymore, and they are offering a Pro version with extra features instead. I have used FileZilla more recently, and it’s still a decent choice.
- qBittorrent: Lightweight, yet powerful, BitTorrent client. There’s no ads and the features are all there. If you need a standalone BitTorrent client, this is a great place to start.
- Transmission
Remote GUI is the perfect companion to Transmission. This is
really the best choice for when you want to remote control a
Transmission session running on a server. This is handy if you
have a torrent box and you just want to add/monitor torrents
from another computer. So to be clear, you would need to run
Transmission on the server/torrent box and Transmission Remote
GUI runs on your desktop/laptop.
- Electorrent is the a great alternative when you want a nice, clean-looking client with a modern UI to manage your torrents remotely. It isn’t overly complicated, it supports all the popular torrent backends, and it has all the usual functionality that you want without overwhelming you with options.
- Soduto makes it easier to for your Mac to interact with your Linux and Android devices. Similar to AirDrop, you can share files between systems, but you can also share clipboards and even send SMS messages from your Mac through your Android phone. (Mac)
Remote Desktop Control
- Chrome Remote Desktop: For the simplicity, it’s hard to beat this solution to remote access and support. It makes it easy to check something on my desktop computer while I’m away from the house, and it’s also handy if you are the “IT Guy” for your friends and family. They can set this up pretty easily and share their screen with you so you can fix their issue.
- UltraVNC:
If you need full-blown, full-featured remote desktop control,
UltraVNC will do the job fine. I just don’t find myself using
VNC as much as I used to as I move more data to the cloud. This
is a more cumbersome solution because it requires
port-forwarding and either a static IP or a dynamic DNS solution
to make it useful outside of your home network.
(Windows)
- I’m not listing a VNC client for Mac because it has a VNC client built in. Search for “Screen Sharing.app” in Spotlight to find it.
Chat/Messenging
- Discord: The apparent de facto standard chat app in the gaming world as well as other communities. I have no particular affinity to the app itself, but it works fine on both desktop and mobile, and there are some cool communities that made their home on Discord. Of particular note is that Discord has become the “new IRC” for many programming communities.
Honorable Mentions
- Telegram: I really don’t need another chat protocol in my life, but Telegram is doing some things right like real cross-platform support/sync and no size restrictions when sharing media or documents. It’s a polished experience, and features like group voice chat work exceptionally well.
- If privacy or security is paramount to you, then Signal has Telegram beat. In Telegram, end-to-end encryption is only optional, and you can’t encrypt group chats. Signal fixes those shortcomings, but falls short of Telegram in other areas.
IP/Port Scanner
- Angry IP Scanner is the cross-platform solution I reach for when I need to find out what’s on my local network. You get IPs, hostnames, open ports, MACs, vendors, and more. The default settings out of the box aren’t great for my uses, but I can configure it to be exactly what I need. For instance, some of the results are hidden by default, so I configure the “fetchers” to include vendors, and I like to hide all the IPs except the ones that respond to ping, and I scan more ports (like 445, 20-23).
Utilities
Local File Search
- DocFetcher is the search tool you need if you want to search file contents. You choose the folders you want to index, and a low-resource process watches for changes in real time. Searching for filenames or contents works just as expected. The functionality is great even if the interface looks very dated.
- Everything: If you just want to search filenames, Everything is your best bet. It supports wildcards, boolean operations, exact cases/phrases, and regular expressions. Just type a filename, and you’ll get immediate results from all your drives instantly. If you want to search network drives, you will need to go to Options and add them to your search folders under Indexing. You can also search file contents, although that will take much longer because it doesn’t support (or require) indexing. (Windows)
Compression
- 7-Zip: Archiver with great compression, command line support, functional GUI, and Explorer integration. Plus it’s really fast. This is my go-to on Windows. (Windows)
- Keka is easy to
recommend because it does more than Mac’s built-in Archive
Utility by supporting more formats and adding compression with
encryption. It’s free from the website, or a paid app on the
AppStore. (Mac)
- If you don’t need fancy compression options, and you just want something that will automatically decompress just about every format you’ve probably ever heard of, you may prefer The Unarchiver. The interface is non-existent. You just click on an archive in Finder to decompress it. (Mac)
- PeaZip is worth a look if 7-zip doesn’t work for you because you’ve encountered some really obscure format, or if you’re on Mac or Linux. It supports basically every format that you would conceivably (or inconceivably) run into. The interface doesn’t look native (especially on Mac), but it is very usable and great for previewing an archive before decompressing it.
Disk Imaging/Formatting/Repair
- balena Etcher: A
nice clean, easy-to-use program to write disk images to flash
devices (USB drives, microSD cards, etc.). This is great for
putting Linux distros on bootable USB drives or setting up a
microSD card for a Raspberry Pi.
- Runner up goes to Rufus. It gives you more options than Etcher at the cost of some added complexity. I have also run across some images where Rufus works where Etcher fails, so it’s handy to have Rufus around even if I use Etcher most of the time. (Windows)
- Ventoy serves the same purpose as a traditional disk imager, although it adds more flexibility and functions quite differently. You install Ventoy onto a USB drive via the handy installer, and then you can drop as many bootable disk images (ISO, IMG, etc.) as you like onto the drive. When you boot to the USB drive, Ventoy will give you a menu to let you choose which image to boot. Super handy way of carrying several OSes in your pocket, all on a single drive. (Windows, Linux)
- Macrium Reflect Free: Great for making disk images or transitioning a computer from a traditional harddrive to an SSD. The Free edition has all the essentials, and the last SSD transition I did was seamless. I highly recommend. (Windows)
- EaseUS
Partition Master: The Windows 10 disk management tools are
limited in functionality, and sooner or later you may need a
tool like this to fix/partition/format a drive. My most common
use case is recovering all the space on a USB drive that has a
Linux image on it, perhaps with multiple partitions, one of
which is the EFI boot partition. The Windows Disk Management
tools might let you delete some (but not all) partitions, while
the free version of Partition Master will have you back in
business in seconds. It also resizes partitions and clones
disks, but the free version won’t create an image of a live OS
like Macrium Reflect Free, hence I still have both listed here.
(Windows)
- SD Memory Card Formatter may be a simpler solution if all you need is to fix an SD card. Some devices can be finicky about the format of SD/microSD cards, and this official application from the SD Association has fixed some obscure issues I’ve had in the past. This is especially true of SDHC/SDXC cards since Windows 10 seems to like formatting higher capacity cards as NTFS instead of FAT32.
- TestDisk: If you need this, you’ve probably done something really bad like accidentally deleting a partition table. TestDisk can help you recover lost partitions, make a disk bootable again, or even recover files from deleted partitions (among other things).
Windows File Recovery
Between these programs you should be able to recover any file that is physically possible to recover without special hardware. I’m listing them all because sometimes one can get the job done where another can’t.
- PhotoRec: Comes in two flavors: command line and a simple graphical interface. This is the first thing I try when I need to “undelete” pictures I accidentally deleted from an SD card. Comes with TestDisk (see above). (Windows)
- Recuva: Very polished interface, and the free version has enough features for most people.
- Zero Assumption Recovery: The free version has some limitations, but the digital image recovery mode has no functional limitations. (Windows)
- DiskDigger: Lightweight, single exe so no install necessary. While it is free for personal use, it will nag you before recovering each and every file, so if you have a lot of files to recover, it is worth just buying it. (Windows)
Disk Performance
- CrystalDiskMark:
If you want to check the read/write speed of any storage device,
you can’t do much better than this free MIT-licensed app. A tool
like this really helps weed out the trash if you like to buy
cheap SD cards or flash drives. Some are worth buying again
while others aren’t, and CrystalDiskMark gives you the data to
make that decision. (Windows)
- The Mac port of CrystalDiskMark is AmorphousDiskMark . It is written by a different developer, but it is the same right down to the interface look/feel. (Mac)
File Deletion
Note: The advent of modern SSD drives has thrown a monkey wrench in secure deletion, so do some research before trusting that your file is really gone. (Hint: it’s probably not.)
- Eraser: Secure deletion with a nice GUI and Explorer integration. Useful if you don’t like the idea of having remnants of tax returns and whatnot on drives. (Windows)
- Permanent Eraser: Great file shredder for Mac. It will either wipe the files in Trash, or it will integrate into Finder in the Services menu to delete individual files. Once you get it set up (which takes a little fiddling with permissions and Automator settings) it is super easy to use. (Mac)
Disk Encryption
- VeraCrypt: On-the-fly disk and file encryption. Works absolutely seamlessly with the OS so you wouldn’t even know you are using an encrypted disk. This is a continuation of the old TrueCrypt program.
Disk Usage
- WizTree: The best way
to see which files are eating up your diskspace. It is INSANELY
fast because it uses the master file table instead of querying
each file. (Windows)
- Windirstat was my favorite for years, and it’s still a great option, but it is slower than Wiztree. (Windows)
- GrandPerspective creates a visual representation of your drivespace, and it excels at highlighting single files. At a glance you know where your big files are located. This helps you find that forgotten virtual machine or iso file that is eating up space. (Mac)
- OmniDiskSweeper displays its data in a directory tree structure, so it’s helpful for finding entire directory structures that are hogging space (perhaps an app with a ton of small files that add up). This is a simple but effective program. (Mac)
Batch File Rename
- WildRename:
Wonderfully robust file renaming utility that supports regular
expressions. (Windows)
- I’ve already listed Microsoft PowerToys elsewhere in this list, but it’s worth mentioning that it comes with PowerRename. PowerRename has less features than WildRename, but it is still incredibly powerful while the simple interface is easier to figure out. (Windows)
- Another option is Bulk Rename Utility. It is arguably the better option as it is actively maintained and has more functionality (at the cost of added complexity), but it is only free for personal use.
- Transnomino: This is my go-to renaming utility on Mac. Regular expressions, prefixfes, suffixes, numbering, case changes, you-name-it and Transnomino can do it. (Mac)
Local File Synchronization
- FreeFileSync: Local backup and synchronization program to do things like make a nightly backup copy from one hard drive to another. As a bonus, the file comparison functionality is great for just seeing if two directories are the same. Be aware this is just making a copy of your data or synchronizing two folders. See the Incremental Backup section below for something more robust.
Incremental Backup
- Kopia is my current favorite
backup solution due to its feaure set and (relative) ease of
use. Backup software tends to be difficult to use, but Kopia
does a decent job of making a complicated thing slightly less
complicated. This is different than a simple “file copier” like
FreeFileSync as Kopia saves all your incremental changes (not
just a current snapshot), which lets you rollback to any point
in history. It supports encryption, deduplication, and
compression, and it’s also available on every platform
(including Docker images).
- Honorable mention goes to Vorta, which is a frontend for Borg Backup, which is a robust incremental backup solution. (Mac, Linux)
Cloud Synchronization
- Google Drive for Desktop: For real-time cloud backup and synchronization, this is an easy solution if you just want an off-site copy of your data that is accesible everywhere, including mobile devices.
- Syncthing: If you don’t trust someone else with your data or you want more control of your data, you can host your own cloud with Syncthing . If it’s confusing why this is different than something like FreeFileSync, Syncthing shines at realtime continuous synchronization while FreeFileSync is geared towards a file backup that runs (for instance) once a day. The big bonus is Syncthing’s Android app, allowing you to sync files between your computer and your phone, but the lack of an iOS app is a serious problem for me.
Windows Package Management/Software Installer
- winget: If you wish you had Linux-like package management on Windows (e.g. apt, yum, or pacman), winget has you covered. Microsoft’s new package manager isn’t exactly well-advertised, but it works well and the list of supported packages is growing. On a recent Windows build, you probably already have it installed. The best feature is that it works with existing programs whether they were installed with winget or not. It integrates with the Windows “Apps and Features” interface in Settings (or the older “Programs and Features” in Control Panel) so it knows what you have installed. It isn’t perfect though. Sometimes it can be frustrating working with packages with the same or similar names, or multiple versions of the same package. There’s room for improvement, but I still think it works better than Chocolatey (see below).
- Scoop is a command line package manager focusing on non-GUI tools to make Linux users feel at home on Windows. For instance, need to quickly install nmap or curl? Scoop is a great way to do that. There is also an “extra” bucket (i.e. repo) of tools that includes GUI apps and other tools that don’t fit into the main inclusion criteria for scoop. The real selling point here is that it installs everything in your home directory (or other specified location), so you don’t need admin privileges and you won’t see UAC prompts every time you add or remove a program. Scoop may look redundant to winget, but it works differently enough that it is the better choice for certain situations. For me, Scoop is essential if you’re stuck on a company computer without admin rights.
- UniGetUI is a GUI frontend for command line package managers like winget, Scoop, Chocolatey, pip, npm, and more. However, it doesn’t just add a GUI to command line functions; it also gives you the ability to backup and restore lists of packages as well as do bulk installations or removals with ease.
Honorable Mentions
- Patch My PC is pretty cool. If you don’t want an overbearing package manager, but you do want up to date programs, this is a good option. It scans your installed programs, shows you which ones have available updates, and then it helps update them. It supports a decent selection of popular software, although it isn’t going to cover every app on your computer. This is great for casual users.
- Not long ago Chocolatey was probably the most well-known solution to package management on Windows. It may still be a better choice for some people as it has broad package support. It supports thousands of packages, and the vast majority of the software listed on Blake’s Essentials can be found there. Having said that, I wish it were more robust. I’ve had plenty of headaches where Chocolatey wouldn’t let me uninstall software or I had weird conflicts from multiple versions of packages that I couldn’t remedy. I switched to winget largely because of these issues.
- I’m guessing the most popular graphical package manager out there is Ninite . It’s great software, it’s easy to use, but it just doesn’t include enough packages to really be a full-fledged package manager. If Ninite supports all the packages you want, you might want to try it first. Personally, I see Ninite as something I can use on my parents’ computer to keep their software up to date.
Mac Package Management/Software Installer
- Homebrew: If you want an easy
way to install command line tools and even some GUI apps,
Homebrew gets you going with minimal hassle. There is plenty of
debate on whether its approach is technically sound, but it
works for me. For instance, if I want to install git, I just
type:
brew install git
- The other popular option out there is MacPorts. You should at least understand how it is different before choosing Homebrew.
- Latest: This is a handy tool to keep your apps up to date to the latest version. (I see what they did there.) It currently supports apps downloaded from the Mac App Store and apps that use Sparkle for updates, so it might not have your favorite app, but it has enough to be useful.
Uninstaller / System Cleaner
Revo Uninstaller Free: Uninstalling programs using the usual methods often leaves a lot of junk around. Revo does a better job at really removing a program. (Windows)
AppCleaner is the best way to really uninstall apps on Mac. It gets rid of all the leftover bits that often stay behind. (Mac)
- While AppCleaner is my first choice due to its easy-of-use, a good companion app is Pearcleaner. It’s harder to use, but it can find ophaned files and do other things AppCleaner doesn’t.
Bleachbit will delete stuff you don’t need hanging around like logs, temporary files, “recently used” lists, thumbnails, you-name-it. Be aware that mucking about in the registry is a bad idea and isn’t really necessary on modern Windows, but Bleachbit can do way more than registry pruning, and it’s worth looking at all of its functionality before dismissing it. (Windows) ## Console/Command Line
Windows Terminal is a newer offering, but the features have been steadily expanding, and it quickly became my console of choice with handy features like themes, panes, and a command palette. It happily handles PowerShell, cmd.exe, and WSL shells, as well as REPL interpreters like IPython or Julia. (Windows)
- Tabby is a ridiculously customizable terminal app that handles essentially any local shell as well as serial and SSH connections. I’ve run into some bugs that keep me from using this exclusively, but I could see this being someone’s first choice due to endless customization and a beautiful interface.
iTerm2 is the terminal you should be using instead of the default MacOS terminal. The customization options are extensive. It’s one of the best terminals on any platform. (Mac)
Warp is a modern terminal app that has some cool innovations in a space that has not changed much over the years. While I can setup a very capable shell and prompt with something like zsh, Warp takes care of all the hassle and the out-of-the-box experience includes smart command completion, customized prompts with git integration, and AI plain language processing. I am watching this project with optimistic curiosity. (Mac, Linux, w/ Windows coming soon)
Swiss File Knife: This is the essential command line tool set for Windows. It does a little of everything, and you need to just read the list of commands on the website to believe it. It’s a single executable, so it’s portable as well.
eza is a modern replacement for ls that works on every major platform. There are a few cool innovations here including the integration of git status in your listing, icon support, and recursive tree view.
Clipboard Manager
- CopyQ extends the standard clipboard so you can access more than just the last item copied. Advanced scripting, editing, and keyboard shortcuts make this a real powerhouse of productivity once you learn the tool.
- Maccy is my preferred clipboard manager for Mac. CopyQ does work fine on Mac, but Maccy just does it better and cleaner for my usual use cases. If you don’t need CopyQ’s advanced scripting, Maccy gets the job done while integrating seamlessly into the Mac desktop. (Mac)
Password Manager
- Bitwarden is the best open source, cross-platform password manager that I’ve ever tried. And the best part is the free version is more than enough for most people. There are desktop and mobile clients, browser extensions, a web app, and a command line interface. Bitwarden works everywhere you need it.
Hex Editor
- HxD: Has everything I need in a hex editor. Simple and lightweight. (Windows)
- Hex Fiend: Simple and clean hex editor with all the basics. (Mac)
Virtualization
- Virtualbox is a
great free solution for running virtual machines. It is an easy
and robust way of running Linux (and other OSes) under Windows
or Mac, which is often handy for some toolchains or just testing
out a script or something in a Linux environment.
- QEMU is also an option worth considering as it can be significantly faster than Virtualbox in some situations, and it can emulate systems that Virtualbox can’t. For simple use cases, I would still start with Virtualbox though.
- UTM is my first choice for virtual machines on Mac, including Apple Silicon Macs. It’s just easy to use and does what I need it to do. It’s great for creating Linux sandboxes where I don’t have to worry about messing up my Mac when I’m building out certain toolchains. (Mac)
Windows System Utilities
- Windows
Sysinternals: This is a collection of tools that has been
around since the 1990s, and was eventually acquired by Microsoft
because they are so good. (And they are still being updated!)
You can download the whole suite, or individual tools. I’m going
to highlight just a couple here to give you the flavor of the
suite, but it’s worth perusing the whole list and seeing what’s
available:
- Process Explorer: If you can’t delete a file because some program has it locked, Process Explorer will tell you what program has the file handle open.
- Process Monitor: Sometimes you need to know what files a process is changing, or maybe you want to know which program is changing a file. Process Monitor, um, well, it monitors your processes to find that out.
- Microsoft PowerToys: Old-timers will remember this suite for decades ago, but it’s back and better than ever (and open sourced!). This collection of Windows enhancements include adding Markdown and SVG support to the Windows Explorer preview pane, windows snapping, PowerRename, a color picker, easy image resizing, a keyboard manager that lets you remap keys, plus lots more. (Quick tip: use this to remap your CapsLock key to act like a Shift key so you aren’t aCCIDENTALLY TURNING CAPSLOCK ON. I hate that.)
- ProduKey is super handy when you want to reinstall Windows or Office after your hard drive crashes or you just want to start fresh. Just run this program, save the output somewhere safe, and you have your Microsoft product keys ready to go for Windows and Office.
Mac Desktop Tweaks & Utilities
- Rectangle allows for complex window manipulation with key strokes. This is super handy.
- Amphetamine is probably the best known app to keep your screen on. There are all sorts of reasons you might need this, but I often use it when I’m sketching from a reference photo and I don’t want the screen going to sleep on me.
- Karabiner-Elements lets you remap keys. I have used it to swap the Command and Control keys so I can use my muscle-memory from Windows to cut and paste.
- Hyperkey is so simple, yet it has become essential for me. It lets you remap the caps-lock key to any combination of meta keys. It can be configured in any number of ways, but I have it setup so when I press caps-lock, it is the same as pressing shift-command-ctrl. Then I map that combo to whatever I like in my various apps. e.g. in VS Code, pressing caps-lock and P will run the current file in Python.
- Folder Peek gives you quick access to your choice of folders right from your menu bar.
- Actions adds additional functionality to Shortcuts. If you use Shortcuts, you probably can benefit from this app. The list of functionality is impressive.
- System Color Picker is a simple color explorer for choosing colors and getting a text representation (hex, rgb, etc.) useful in programming, web design, and digital imagery. Includes an eye-dropper tool.
- Keyboard Cowboy is a must-have tool to boost your productivity. It lets you assign global keyboard shortcuts to apps, automations, text replacements, etc.
- TinkerTool gives you access to hidden system preferences and tweaks not available in the normal System Preferences dialogs. While there are a lot of options I don’t care about, they are a couple in here that are worth the download.
- MonitorControl is one of those apps I didn’t know I needed. I wouldn’t have looked for it, but after stumbling across it and trying it out, it’s amazing. If you have an external monitor, you need this so you can control the brightness through your keyboard. It also normalizes brightness between the build-in screen and an external monitor. Super handy app.
Programming
Coding Editors
Note: See the All-Purpose Text Editors section for other text editors useful for programming.
- Visual Studio
Code: VS Code is a legitimately great editor for just about
any language. From linter to debugging, everything you need can
be integrated into a seamless workflow. Check out the extensions
to add nearly any functionality you could want, turning VS Code
into a legitimate IDE (depending on your requirements for an
IDE). A huge bonus is the excellent Jupyter Notebook support.
For many use cases, there’s no reason to run a standalone
Jupyter server anymore. Note: Don’t confuse Visual Studio
Code with Visual Studio
which is a full-blown IDE with more advanced features that I
don’t find necessary for the hobbyist.
- Two things worth mentioning: First, you can run VS Code directly in a web browser here. The experience is pretty incredible all things considered. Second, VS Code is very actively developed, so if you want the latest and greatest, you may want to run VS Code Insiders. On paper it is a beta version of VS Code where the new features are tested out, except I have found Insiders to be stable enough for production work. I honestly haven’t noticed a difference in reliability.
- Zed is another code editor that I’m keeping my eye on. It is a newer offering, but it’s already doing some cool things, and it seems to be faster than VS Code for those quick code edits. It still has a way to go to be competitive with VS Code, but I like where it’s going.
Version Control
- Git: A distributed version
control system that quickly took over the open source world, and
with good reason. If you’re a programmer, you already know what
this is.
- A big bonus on Windows is that the installer includes all
the Unix command-line tools you know and love. If you need
ls
,cat
,grep
,awk
, and all the rest, I think this is the easiest way to add them to your Windows system.
- A big bonus on Windows is that the installer includes all
the Unix command-line tools you know and love. If you need
- Git Extensions: Sometimes a GUI is convenient to visualize branches and handle more complicated tasks when when you don’t feel like looking up the correct commands/switches, and I think Git Extensions is far superior to the official Git GUI. I wish it was cross-platform, but the latest versions are built on .NET and Windows only. (Windows)
- Gittyup is a good cross-platform option for a Git GUI. On Mac there are less options for a good GUI that isn’t proprietary, but this works well for me. It makes complex Git operations more manageable.
Compiled Language
- Go: Even though I don’t do
a ton of programming in compiled languages anymore, when I do, I
am usually making command line programs like file utilities,
text manipulators, number crunching programs, etc, and Go fits
the bill nicely. With a robust standard library and simple
syntax, Go is great for Python programmers like myself.
- I will also mention Rust here simply because it is the heir-apparent to venerable languages like C and C++, and when Go isn’t the right tool for the job, Rust often is.
Scripting Language - General Purpose
- Python: My favorite
general purpose programming language. It’s perfect for getting
the job done quickly without a lot of boilerplate and heavy
lifting. I’m a pragmatic engineer, so I just want to solve a
problem as efficiently and elegantly as possible, and I’ll leave
the arguing about static typing and whatnot to the real
developers and CS engineers.
On Mac I prefer to use pyenv to install the various Python versions. Once you install it (which is trivial with Homebrew), you can just issue a command like:
pyenv install 3.10.4
All the essential Python libraries are on PyPi, so here is a pip command line (for easy cutting and pasting) useful for STEM programming to get you started. This is a short list, but it pulls the more important dependencies like scipy, pandas, and numpy:
pip install jupyterlab seaborn PyQt6 sympy
And a quick description of a couple of packages vital for STEM:
- SciPy is a scientific package useful for everything from statistics to linear algebra.
- Pandas handles data structures and data manipulation.
- NumPy is the foundation for numeric arrays, and math functions.
- SymPy is a symbolic computer algebra system.
- Matplotlib is a robust plotting library.
- Seaborn is a higher level package built on matplotlib that can really improve your productivity.
- PyQt: Probably the best looking, best featured, cross-platform GUI toolkit.
Scripting Language - Math/Science
- Julia: Just an
incredible tool for mathematical or scientific computing of any
kind. The lightweight syntax is a delight even by Python
standards, and its speed usually matches or beats compiled
languages due to its JIT compiler and language design. Julia is
made for speed (both in writing and execution), and I think it
combines the best of Python, Fortran, MATLAB, and R. I use it
more as a math tool than a general purpose scripting language,
hence this separate category.
- For interactive Julia sessions, there is nothing like Pluto.jl . It is a must see experience. It’s like a Jupyter Notebook, but better.
- If you like Julia, you might like the JuliaMono font. I can’t justify listing this with the other fonts below because it’s so specific to Julia, but this is an interesting font intended to leverage Julia’s excellent Unicode support for actual math operations. Check out the website for examples.
Programming Fonts
Below are a few excellent fonts suitable for programming, consoles, terminal windows, PuTTY, etc. While just one font should be sufficient, I typically have all of these installed as one font may look better in a certain terminal or editor, at a particular size or scaling, or on a particular monitor.
- Dina: Great bitmap font in 6, 8, 9, and 10 points with normal, bold, italic, and bold/italic faces. I like the 8 and 10 especially well. Dina is so clear and crisp on even the worst monitors that it is actually pleasurable to read. It’s not really necessary on a decent monitor though.
- Source Code Pro: This font from Adobe looks very clean on high resolution monitors. This is just a simple, no frills font that’s easy to throw on a random computer to get a decent font quickly. Perfect for when the fonts below can be overkill.
- Input: Incredibly flexible font system that lets you customize letters (a/g/i/l/0) and symbols (asterisk/braces) to your liking, as well as choose from 7 weights and 4 widths, and sans, serif, and mono variants. There are 168 styles in all, so you will find one that works for any given situation.
- Iosevka: Similar to the Input font, Iosevka raises the bar by adding ligatures, more weights, more variants, and incredible character coverage with thousands and thousands of supported glyphs. There are plenty of variants with different character and symbol styles, so you should be able to find one that has the look you want. There are so many choices it can be confusing, but if want a general purpose font that works everywhere (but doesn’t have ligatures), start with the “Iosevka Fixed” font. At the end of the day, this is the only font I need because I can configure it to look any way I want.
Science, Math, and Engineering
Calculators
- SpeedCrunch sports fast start-up and plenty of functionality. The interface is deceptively simple, but lurking under the hood are constants, variables, an impressive list of math functions, and equation support. Unfortunately, while SpeedCrunch is cross-platform, it looks fuzzy/blurry on Mac. The graphics toolkit doesn’t seem to upscale well on hi-res monitors, so I just don’t use it on Mac.
- Numi is one of the best free options on Mac for a notebook-stye calculator. The paid version supports multiple pages/notebooks, but the free version has full functionality otherwise. Intuitive calculations (e.g. “5% of 20”) and unit conversion (although somewhat basic) make Numi a solid desktop calculator. (Mac)
- Qalculate! is a good place to start if you want a scientific calculator on Windows or Linux. It can do everything from integration to units. The interface is not my favorite, but it is packed with features. (Technically this works on Mac too, but with no .app or installer, you have to use Homebrew or MacPorts, and there isn’t even a shortcut/icon for it, so the experience is subpar.)
- NCalc: A robust scientific calculator for Mac. This has pretty much everything you would commonly need in a calculator. There is a Pro upgrade that unlocks graphing and other bells and whistles, but it is still useful without the upgrade. I actually did end up buying the lifetime license for $3.99, which is worth it to me. (Mac)
- GeoGebra is an app suite you might want to check out if you need a graphing calculator. This suite is five calculators in one, including modules for graphing, geometry, algebra, and probability. The graphing is fairly robust and the customization is impressive for what it is. It’s really great for high school level math or maybe even low-level college problems. For higher level math, see the real CAS systems below.
Unit Conversion
- ConvertAll is what you need if you are looking for a flexible, powerful unit conversion solution. It really shines at combining fundamental units to build more complex units. The interface is a strong point. Instead of scrolling through long lists of supported units, you can just start typing and the list is automatically filtered. (Windows, Linux)
- Unit Converter looks super generic (even the name sounds generic), but it has the units I need as an engineer that other apps don’t. The interface is as spartan as you can get, but it really is quite powerful. Be sure to read the help because there is some hidden (or at least non-obvious) functionality like “favorites”, simple math evaluation, and time conversion. (Mac)
Graphing/Plotting
Note that this section is dedicated to standalone graphing/plotting software, but apps in other categories (e.g. statistics, CAS, and office suites) have graphing/plotting capabilities as well. Also worth noting, Python libraries like Matplotlib and Seaborn (see Programming) make standalone graphing software somewhat redundant for me, but the feature sets and easier-to-use interfaces make these apps below still the best tool for some jobs.
- gnuplot: While it has a steeper learning curve than a typical GUI driven program, gnuplot’s spartan interface helps you plot and tweak quickly without having to know the commands. This venerable GNU program has been around since the 1980s quietly excelling in its domain. If something can be plotted at all, it can probably be plotted by gnuplot. You might want to start with the demo gallery to see what it can do.
- Veusz is a great plotting package that has a robust graphical interface and an impressive array of supported plot types. From 2D to 3D, from box plots to polar plots, Veusz has you covered. The main selling point for me is that you have total control of everything you see on the graph: colors, lines, fonts, you name it. You should be able to get exactly what you want. There are some downsides, most notably: strange handling of error bars, lackluster data manipulation, and the histogram functionality could be more robust.
- LabPlot is fantastic software for XY plots, although it does excellent histograms as well. It is incredibly customizable, but be aware it takes some exploration to really figure out everything it can do (which is a LOT). You can make some incredible looking plots that would look at home in even the prettiest info-graphics. There are plot “themes” which make it easy to quickly try out some different looks. Labplot will definitely produce something that doesn’t look like just another Excel plot. Other notable features include impressive data manipulation, interactive plots, XY plot digitizer, as well as robust curve fitting.
XY Plot Digitizer
- Engauge
Digitizer is a lifesaver when you need to extract X-Y data
from a raster format image or a printed graph from a book or
pdf. Instead of breaking out the ruler, just click on some
points and Engauge will scale, transform, and orient the plot
for you, exporting the XY data to a CSV file.
- LabPlot (mentioned above) also has a “data extractor” tool that works great for digitizing XY plots from images.
Computer Algebra Systems & Numerical Analysis
- SageMath aims to replace commercial software like Mathematica, Maple, and Matlab, and it has advanced enough that it really does make those packages unnecessary for many use cases. Sage brings some of the best tools in the open-source world together under one interface to create an incredibly powerful package that’s useful to nearly every STEM field. The main problem with Sage is the complete absence of a user interface. The novice is presented with an empty prompt, and is expected to know what to type. It could really benefit from a cohesive graphical interface that guides the user a little better (like wxMaxima or the commercial options).
- Maxima:
Symbolic computer algebra system with robust plotting. Be sure
to use the bundled app called wxMaxima, which is an easy-to-use
graphical interface that wraps the Maxima backend. Given that
SageMath has Maxima built in, this standalone version may seem
redundant, but novices will find wxMaxima easier to jump into
and start using right away.
- An alternative to a standalone app like Maxima for simple symbolic algebra is SymPy, which technically isn’t an application, but rather a Python library. If you use Sympy in a Jupyter notebook inside VS Code, you have a pretty incredible environment for CAS. This is actually my preferred solution, but you need to be fluent in Python for this to be viable.
- GNU
Octave: A numerical computation program that started off as
a MATLAB clone, so porting programs is fairly trivial. The use
cases of a program like this (for me) are pretty narrow these
days given the accessibility and capabilities of programming
languages like Julia and Python (along with libraries like Scipy
and Numpy), and the advancement of more broad-purpose software
like SageMath. Octave is still immensely powerful though, and a
great environment for mathematical exploration, so I’m leaving
it on my list. Also note that SageMath has an Octave interface,
so if you have it in your path, you can call Octave functions
directly from Sage.
- The obvious runner-up here for numerical computation is Scilab, which has a long history as a capable numerical analysis package and has always had significant overlap in functionality with Octave (and MATLAB for that matter). You may like Scilab better for some reason, so if you’re serious about math you should check it out, but the Octave community is more active and there are more libraries available for Octave, so I’d still start there.
Interactive Programming/Data Environment
- Jupyterlab (or Jupyter)
is an interactive notebook where you can embed code and plots
and easily share the sessions with others or save them for
later. This is a front end for scientific computing languages
like Python, R, and Julia that is perfect for interactive
exploration. I could have easily listed this under the
Programming category, but Jupyter is really more of a scientific
computing platform than a programming environment. This is where
you do math or data science, explore statistics, and slice,
dice, and manipulate data before analysis and visualization.
- If you are a Julia programmer, we can’t talk about interactive environments without mentioning Pluto. It’s a relatively new project, but it’s really doing amazing things, and it’s definitely showing up the veteran Jupyter in a number of areas.
Statistics
- Jamovi: This is a
great package for quickly analyzing some data and making
decent-looking stats plots with very little effort. If I want
simple descriptive statistics, a histogram, or a quick t-test,
Jamovi makes it easy (although honestly, if I need much more
than that I’m probably in Jupyter using Python with libraries
like Pandas to help slice and dice the data.) Jamovi looks very
polished, and the core functionality is there, but I wish there
were more customization options for the graphs and more data
manipulation tools. Also, it’s worth noting that Jamovi is one
of the many front-ends for R, the 800-pound-gorilla of stats
packages, so there are a number of modules available to add
functionality. Jamovi is under very active development, and new
releases come out at least monthly, so I’m excited to see what’s
coming in the future.
- JASP looks very similar to Jamovi, and in fact, at first glance the interfaces appear to be near clones. While I find Jamovi just plain better in a number of ways, I’m keeping my eye on JASP because it appears to be under active development as well, and JASP supports some analyses that Jamovi doesn’t while still offering an easy-to-use interface.
- On paper, BlueSky Statistics should be the easy winner in this category. It has many, many more features than Jamovi. However, I don’t find the interface as intuitive for casual analysis, and by default the plots look fairly bad. The plots can certainly be tweaked through the R language, but it isn’t transparent to the casual user. Besides the impressive collection of analysis methods, the real reason I might reach for BlueSky instead of Jamovi is the robust set of data manipulation tools.
- PAST is the only app in this category that isn’t just a front-end for R. If you look past the deceptively plain interface, this is a super powerful stats program chock-full of functionality. There’s no safety net or hand-holding to help you interpret the results, but it has an amazing manual describing the equations used and even includes extensive citations, so this is no black box. It has a very robust set of statistical plotting tools, and the histograms are actually pretty good with a fair amount of customization (including overlaying a normal distribution).
CSV Files
- Tad is a CSV file explorer that lets you view, filter, pivot, and analyze very large CSV files. In STEM, sometimes you need to work with large CSV data sets, and this is a great way to do it.
- Miller is an incredible tool for working with CSV files (and others) from the command line. You reshape, filter, and even create new columns based on operations performed on other columns. If you work with CSV files, especially large files or large numbers of files, Miller can be a lifesaver.
2D/3D CAD Modeling
- FreeCAD is the best
open source solution for making parametric 3D models and
generating professional-looking drawings/prints, even if it
makes it harder than it should be. Its capabilities are pretty
incredible for what it is (especially after coming out of beta
and releasing v1.0), but if I’m being honest, it still falls
short of any of the top-tier commercial products. The interface
can be clunky and often works against me, and for some tasks I
just can’t figure out an efficient workflow. Having said that,
there is a lot of great functionality here, including a good
constraint manager, impressive assembly capabilities, and a
decent CAM module that generates usable G-code. At the end of
the day, FreeCAD is easily the best totally free CAD solution
out there, and it gets the job done without spending hundreds
(or thousands) of dollars on expensive commercial
software.
- Autodesk Fusion 360: I hate to rely on proprietary software that might be pulled behind a paywall tomorrow, but Fusion 360 is a professional-grade 3D modeler that can’t be passed up when they’re giving it away for free. Professionally, I’ve used everything from Pro/E to Catia to I-DEAS to NX to Inventor and a half dozen more CAD packages, and Fusion 360 is as good as any of them for creating 3D models. The interface is incredibly intuitive if you’ve used any real CAD package before. I use Fusion on both Windows and Mac and switching between platforms is seamless. If you sign up as a hobbyist (i.e. not for commercial use) you can get a free license. They recently further crippled the free hobbyist version (e.g. file format support and number of active documents allowed), but it’s still very usable for personal projects.
Honorable Mention
- Solvespace is such a tiny, fast, quirky, unique, and capable program, I had to mention it. Don’t let the retro look fool you. This is a powerful 2D/3D parametric modeler with a legit constraint solver. Besides FreeCAD, that is a very rare find in free CAD software. This interface is nothing like a standard CAD package, but if you are into making 3D objects for 3D printing, this program is an interesting option. For normal use, I think the glaring omission in its feature set is a tool for adding fillets/rounds. That’s a deal breaker for me.
Electronics Schematics
- KiCad: If you’re
looking for an electronics design program, you’re probably
looking for KiCad. I t can do everything from creating a
schematic to designing a PCB. The learning curve is a bit more
than I would like for doing simple schematics, but it’s worth
learning.
- TinyCAD is a good alternative to KiCad if you do circuit design. I don’t know that it can do anything that KiCad can’t, but I think it is easier to use in some ways and I find it better for some jobs. Its chief short-coming is that it’s Windows-only. (Windows)
- ExpressSCH: This is a really simple program for making quick schematics. It’s like the Notepad.exe or Windows Paint of the schematics world. Not very glamorous or loaded with features, but it works in a pinch. (By the way, when you click on the ExpressSCH link, you’ll want to download ExpressPCB Classic and you’ll get ExpressSCH too.) (Windows)
3D Printing Slicer
- Ultimaker
Cura: Cura is a great slicer that works with any printer
(not just Ultimaker’s). I think it’s the most user-friendly
slicer out there, especially for those new to 3D printing. It
has plenty of features without overwhelming the user, but most
importantly, the defaults are all good enough to slice your
first model without fiddling with parameters or knowing too
much.
- The other leading general-purpose slicers out there are PrusaSlicer, SuperSlicer (which is a fork of PrusaSlicer, which is a fork of Slic3r ), and Orca Slicer (which is a fork of Bamboo Studio, which is a fork of PrusaSlicer as well). I would say that all three are more powerful than Cura, but with added complexity and harder to setup out of the box, but all are a solid choice with certain advantages over the others. I would probably go with Orca if I were to choose a slicer that isn’t Cura.
GPX Viewer
- GPXSee is a simple GPX viewer with basic conveniences like speed/elevation graphs and several map source options (including topo maps). It’s the perfect track viewer for hikers and other outdoor sports where you might record a path with a GPS or one of the many mobile apps that does offline mapping.
Geographical Mapping Software
- JOSM is fairly niche software, but if you want to edit a GPX file (or even OpenStreetMap data), this is probably your best bet. It is shocking how many terrible GPX editors are out there, and JOSM stands out as a truly capable package in comparison, even if it can be unintuitive at times. If you need to edit a GPS track to clean it up before uploading to a website or archiving, JOSM is your best bet.
- QGIS is where you go when you want to work with GIS data to make custom maps, combine map data from various sources, etc. There is overlap between QGIS and JOSM for sure, but they really do different things, so it’s worth having both in your toolbox if you are into maps. My favorite function in QGIS is the Georeferencer tool which lets you map a raster image map onto actual coordinates. This is handy for doing things like superimposing a scanned trail map onto a topo map. Speaking of which, QGIS also supports GeoPDF files, which is handy for tracing trails as well.
Astronomy
- Stellarium: A great planetarium for the hobbyist astronomer.
Large Language Model Server
- Ollama is the place to go if you want to run a LLM locally. There are a number of popular models to choose from, and they can be run from Mac, Windows, and Linux.
Gaming
I’m not going to list actual games here, but rather just some gaming related software which facilitates playing games.
Games Launchers
- Steam: Must-have for PC gaming. I prefer Steam every time I have a choice.
- GOG Galaxy is the official launcher for games bought on GoG.com, but it also serves as a decent universal game library since it will work with any PC game regardless of where it was bought.
- Epic Games: I’m mostly here for the free games. Occasionally there are exclusives or sales that might be worth using the Epic store.
Console Emulation
- RetroArch has you covered if you’re looking to play some old school games from retro systems like the Atari 2600, NES, SNES, and many more.
- OpenEmu is a slick emulator for the Mac. It is easy to use and works great. (Mac)
Game… um… Enhancement
- Cheat Engine: Okay, look, I don’t hate fun, but I have limited time for gaming, so sometimes when I’m enjoying the story of a single-player game but it’s kind of grindy, I’ll use Cheat Engine to give myself resources or something to reduce grinding. It’s not trivial to figure out, but it can do amazing things.
Interactive Fiction (IF) Tools
- Windows
Frotz: My favorite Z-machine interpreter on Windows. If you
play interactive fiction games or know what Infocom games are,
you probably already know what this is. This supports all the
various Infocom formats: zip, dat, z5, z8, etc., including z6.
(Windows)
- Frotz8 is a native Windows app based on the frotz interpreter that supports touch screens, and it has handy integration with the IF Archive. It appears to be stagnant since 2013, so I’m not expecting anything new. (Windows)
- Yazmin is a capable Z-machine interpreter for the Mac. It has fairly decent feature set including dark mode, and it supports v3, v4, v5, v7, and v8. To top it all off, it comes with a nice suite of stories to get you started. (Mac App Store Link)
- Lectrote:
This is my current choice for a multi-format interpreter that
handles more than just Z machine files, and while it’s the new
kid on the block, it has novel features like autosave. It looks
really nice to me (great fonts and themes), but it uses ZVM as
the Z interpreter, so it only supports Z3, Z4, Z5, & Z8.
Other format support includes Glulx, Hugo, TADS, and Ink. This
seems to be under active development, so we’ll see where it
goes.
- Gargoyle deserves a mention because it supports every format I’ve ever run across because it is basically just a wrapper for a number of interpreters. The default (and excellent) Bocfel Z machine interpreter has partial support for z6 files too. Its other claim to fame is its focus on good typesetting, which is a really interesting niche. But be warned, it essentially has no user interface, so you need to edit a text file to change fonts and whatnot.
- Filfre: This is easier to use than Gargoyle for sure, so I’m mentioning it here, but it has minimal customization options. You might want to choose this if you need Glulx support and want an interface similar to Windows Frotz. It’s probably not the best choice for Z-Machine files because it only supports versions 3, 4, 5, and 8 story files. The project has been stagnant since 2013, so what you see is what you get. (Windows)
- Trizbort: If you play
IF games, you know mapping is essential, and Trizbort helps you
do that. There is even an automap function that works pretty
well. (Windows)
- A good cross-platform alternative is Trizbort.io which is a webapp version of Trizbort with most of the same functionality. Works great in any browser. This is what I use on Mac and Linux.
Just for easy reference, here are some websites to find and download some great IF stories to use with the interpreters: