Welcome to my carefully curated list of the best free programs for Windows, MacOS, and Linux!
This is the software that I find essential when working on a desktop or laptop. These are the programs that I either immediately install when I setup a new computer, or I end up installing as I need them. In most instances I have tried a number of solutions 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 of the software that I thought was best the last time I evaluated a category.
Most 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 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. 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. Likewise, I won’t bother listing software commonly included with the operating systems (e.g. Apple’s Music or Photos apps).
Have a suggestion for a great program that should be on my list? Let me know about it! Have a comment or correction on something on this website? Click on the Feedback link and let me know!
Images & 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 stays out of your way.
- While VLC works great on any platform, Mac users may prefer IINA. It’s a full-fledged media player with a clean interface. (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 realized 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)
Raster 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.
Also check out:
If the Photoscape X workflow doesn’t agree with you, my runner up is XnView MP. It has a somewhat 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 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: Really nice 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.
- If you only need a Mac solution to vector graphics, the excellent Curve (formerly Vectornator) is hard to pass up. It’s one of those apps that looks so polished, it’s hard believe it’s free. It has all the essentials to make some incredible vector art. (Mac)
Artistic Image Editor
Krita: Great digital painting software. It actually could replace Gimp for many use cases, and it supports CMYK.
- Another cool option is Autodesk’s Sketchbook, which is now free (although you will need to create a free Autodesk ID to register it.) I just don’t want to invest the time in learning a program, saving a lot of files in their proprietary format, and then they yank the rug out. Autodesk has done that before, so I’m leery. Other than that, it’s great software… but so is Krita.
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
- OBS Studio: While not exactly my jam, if you’re into live streaming OBS is a solid choice.
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.
Also check out:
DaVinci Resolve: This 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 opensource 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: 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.
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 becoming less essential as I move to online services like Amazon Prime Music and 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 meets my meager needs.
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.
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. Having said all that, it might be worth your money, so check it out.
GarageBand is the obvious easy-to-use entry-level option for the Mac. 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 opensource, and Cakewalk may go away sometime in the future.
Synth Plugins
Text Editors
There may be some redundancy here, but 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. 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 TextMate 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.
Programming Editor/IDE
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. 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 VS 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.
Prose Text Editor
WriteMonkey: For writing prose, it’s hard to beat this distraction-free text editor. It has Markdown support and other handy features that push it to the front of the pack for its genre. Version 2 is Windows-only. (Windows)
Check out version 3 for the newest cross-platform codebase that adds support for Linux and Mac, HOWEVER, the Mac version isn’t working for me as of 2024.
FocusWriter: If the command palette interface of WriteMonkey 3 is a deal-breaker for you, a good runner-up is FocusWriter. It has a more classic distraction-free interface, and it has plenty of convenience features like smart quote conversion. ( Windows/Linux)
uFocus is a distraction-free editor for the Mac. Its Markdown support and clean interface make it a perfect choice for 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. (Mac)
Text Utility
- 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)
Programming
Note: See the Text Editors section for programming text editors and IDEs.
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. On Windows a big bonus is 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.
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.
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.)
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.
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.
Document Authoring & Viewing
See the Text Editors section for creating plain text files.
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 rea l 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)
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.
Markup & TeX/LaTeX Tools
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.
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.
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.
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, and I think note-taking apps are sometimes unnecessary when a simple text editor works fine. 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 where you might want to go if you want good Markdown support and you don’t need total inoperability on mobile devices. The Canvas feature is 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). Likewise, there was limited Canvas support for mobile (at least initially), so you could create a note on desktop that you couldn’t open on mobile. That isn’t true anymore, but be aware there isn’t always complete parity between desktop and mobile.
- If Obsidian is too unwieldy for you, Simplenote is a nice… um, simple note app that works across all platforms. This is a good choice if you don’t need multimedia integrated into your notes, and you want to access your notes anywhere. It supports Markdown and tagging, but otherwise it’s barebones. It does make syncing automatic though, and that’s the real selling point. If you use multiple platforms regularly, this is a great experience. You can jump from MacOS to Android to Windows to iOS to anything with a web browser without missing a beat, and the interface stays out of your way.
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)
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 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.
Science, Math, and Engineering
Calculators
Notebook-Style
Figr is a notebook style calculator with all the basic functionality along with unit conversions, and other handy operations, but it also enables real-time collaboration. This app really scales well because it works equally well as a simple scratchpad or in a more complicated scenario with calculation templates containing variables and lots of dependent calculations. The best feature is the cloud syncing so you can open it on any platform and your calculations are all there. There are native apps for Windows and Mac, but you can use the web version on Linux or any mobile device.
SpeedCrunch is a decent alternative for a calculator with 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.
For a non-cloud Mac solution, Numi is the best free alternative. 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)
Scientific
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)
Graphing
- 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 capabilties 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 let’s 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: Fairly full-featured 2D/3D parametric CAD modeler. This is the only open source CAD program that looks and functions even remotely like a real, commercial CAD program, and it’s capabilities are pretty amazing for what it is, but it’s still painful for me to use compared to any good commercial product. The interface can be clunky and seems to work against me at every step, and for some tasks I just can’t figure out an efficient workflow (or can’t figure out how to accomplish it at all). Having said that, there is a lot of great functionality here, including a good constraint manager and a decent CAM module that generates usable G-code. At the end of the day, FreeCAD is a decent tool for making 3D models and generating professional-looking drawings/prints, even if it makes it harder than it should be.
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 version (e.g. file format support and number of active documents allowed), but it’s still very usable.
Honorable Mentions
LibreCAD is worth looking at if you want to make 2D prints. While FreeCAD has a robust 2D sketcher, its focus isn’t 2D prints. That’s where LibreCAD can often outshine FreeCAD, although I wish it was parametric. At the end of the day, I can make a perfectly serviceable print with LibreCAD, but it feels like it should have been easier to get there. But for free? It’s not bad. I have done some paid side jobs with it, and it did what I needed it to do.
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 great. 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. It’s chief short-coming is 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 Ultimakers). 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 and SuperSlicer (which is a fork of PrusaSlicer, which is a fork of Slic3r ). I would say that either is more powerful than Cura, but with added complexity and harder to setup out of the box, but either one is a solid choice with certain advantages over the other.
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.
Network & Internet
Web Browser
Firefox is once again my default web browser. The robust feature set and impressive array of extensions make this my first choice once again. Its 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 it behind to return to Firefox after a 16-year detour.
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.
- If you aren’t a Chrome user, you may prefer Teamviewer . It is similar in that it makes it easy for non-techy people to add remote control. I can send them a download link, they install it, and tell me the ID and password that is displayed in the app so I can connect. That’s it. No other configuration is needed.
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 functions to the cloud and rely less on my own desktops. 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 successor to Skype and Teamspeak in many communities, especially in the gaming world. 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 is also becoming the “new IRC” for many programming communities. The IRC channels are often less populated than the equivalent Discord channels.
- Speaking of IRC, I have a hard time calling an IRC client “essential” because it’s become such a niche protocol at this point, but there are still some useful dev communities out there. So if you do need IRC, check out:
HexChat is a nice client that has all the features I need. (Tip: download the installer for free on the website. The same app on the Microsoft Store costs $9.99.) (Windows, Linux)
LimeChat is the IRC client I use on Mac. It’s simple and works well. (Mac)
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 very 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).
File & Disk 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. Windows search is terrible, and there’s no perfect alternative, but DocFet cher is pretty close.
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, nice GUI and Explorer integration, and it is 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 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 Windows 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.
Windows 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)
Mac Disk Usage
I’m listing two equally excellent apps that take fundamentally different approaches, so I use both in different situations:
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)
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)
Batch Text Replacement
- WildReplace: Search for files and replace text in the files. (Windows)
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 System Utilities
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.
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.
System Cleaner
Bleachbit will delete stuff you don’t need hanging around like logs, temporary files, “recently used” lists, thumbnails, you-name-it. There are a lot of options out there in this category, but I like Bleachbit because it’s completely free and open-source, so at least you know what it’s trying to do under the hood. Be aware that it is highly debated whether you should even use a program like this on Windows since Windows has it’s own tools to clean up after itself, and mucking about in the registry can cause problems you didn’t ask for.
- CCleaner has been around forever, and it might still be a good choice for cleaning up your system, although be aware that it seems to have lost favor in some circles due to some possibly sketchy behavior. The main advantage it has over Bleachbit is the ability to fix a plethora of registry issues. (Again, maybe it’s better to let it alone and not mess with the registry?)
Microsoft Product Key Recovery
- 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.
Utilities Suites
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 you CapsLock key to act like a Shift key so you aren’t aCCIDENTALLY TURNING CAPSLOCK ON. I hate that.)
Linux Environment
Windows Subsystem for Linux (WSL): Run Linux tools directly in Windows without a virtual machine. Bash, Zsh, compilers, interpreters, grep, awk, and all the rest of the command line tools you need right under Windows. You actually can download this from the Microsoft Store now (for free), so there’s no direct download link. You even have your pick of various supported distros.
VcXsrv Windows X Server: If you’re running WSL, you may want an X server to run GUI programs, and VcXsrv works great. Choose the “multiple windows” option to seamlessly integrate X programs into the Windows desktop. A couple quick tips:
- Add these lines to your
.bashrc
file:
export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1
- If you don’t want seamless windows and you want to run an X desktop window, you probably want to install something like Xfce4:
$ sudo apt-get install xfce4-terminal xfce4
- If you want a bunch of default Linux desktop apps:
$ sudo apt-get install ubuntu-desktop
- After starting VcXsrv, you need to start Xfce4 each session:
$ startxfce4
Mac System Utilities
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.
Keep Screen Awake
- 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.
Desktop Tweaks & Utilities
Rectangle allows for complex window manipulation with key strokes. This is super handy.
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.
Monitor Brightness Control
- 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.
Misc. Utilities
Uninstaller
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)
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 the best free solution for running virtual machines. It is an easy and robust way of running Linux (and other OSes) under Windows, which is often handy for some toolchains or just testing out a script or something in a Linux environment.
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: