1. Neovim

Neovim (aka nvim) is a modern highly-refactored Vim with a 30% less codebase yet preserving Vim’s functionality. After installation, it is accessible by the vim/vi or nvim command.

For me, a person not proficient with Vim editing modes, Neovim opened the gate to them. It has an interactive tutorial that lets learning by doing and not memorizing. Just type :Tutor when you launch the editor and follow the exercises.


  • Fully compatible with Vim’s editing model
  • Backward compatible with Vimscript v1
  • Highly extensible because of API-first approach
  • Cursor styling, focus events, bracketed paste
  • First-class Lua/LuaJIT scripting

And all the features you love in Vim.

2. jq

jq is a command-line JSON processor written in C. It is like sed for JSON. It allows to filter, map, and transform structured data with ease.


  • Lightweight and flexible
  • Single executable with zero dependencies
  • Easy to use and fast

The most common use-case for me is formatting JSON output.

For further details refer to the official documentation .

3. poppler-utils

poppler-utils is a collection of command-line utilities for manipulating PDF files. It is based on Poppler , a PDF rendering library.


I will only list those I use, for the whole list refer to man pdfinfo ("SEE ALSO" section):

  • pdfinfo – list all information of a PDF
  • pdfimages – extract all embedded images at native resolution from a PDF
  • pdfseparate – extract single pages from a PDF (only allows to extract ranges, I will show you a better alternative)
  • pdftohtml – convert PDF to HTML (or XML) format retaining formatting, great for publishing on internet (HTML) or parsing a PDF (XML)
  • pdftoppm – convert a PDF page to a bitmap, allows to convert it to JPEG/PNG/etc
  • pdftotext – extract all text from PDF, great for indexing/searching
  • pdfunite – merge several PDF, very useful when you need to provide a list of documents in one file

4. ImageMagick

ImageMagick is a command-line image manipulation suite. It includes a list of tools to resize, crop, flip and do other manipulations with bitmap images. It’s a swiss-knife for image manipulation. As a developer you are most likely familiar with its library.


Again, since it contains a lot of tools, I will list the ones I use (see man imagemagick for the whole list):

  • convert – converts between image formats as well as resize an image, blur, crop, etc
  • identify – describes the format and characteristics of image files
  • mogrify – like convert but overwrites the original image
  • composite – overlaps one image over another; very useful if you need to add a watermark or a background
  • montage – creates a composite image by combining several separate images, lets you create a collage
  • compare – shows the difference between images, useful to find image duplicates of different quality/sizes

5. exif

exif shows EXIF information for JPEG files. EXIF information is a collection of metadata tags written to JPEG files by digital cameras/scanners. It contains camera settings information, location, date and time, image metrics, thumbnail, etc.


  • list all tags (by default)
  • show a specific tag with exif --tag=TAG
  • extract the thumbnail with exif --extract-thumbnail
  • create EXIF information with exif --create-exif
  • set the tag to the specified value with exif --tag=TAG --set-value=VALUE

And many more. See man exif for further information.

6. youtube-dl

youtube-dl is the best tool to download videos from streaming services like Youtube, Vimeo, VK, Facebook, Instagram, and many more . It requires Python of version >=2.6 and it’s cross-platform. It is the most used tool for me on this list. I use it almost daily.


  • download using proxy
  • mark videos as watched (Youtube only)
  • by-pass geo-restrictions using separate proxies and/or X-Forwarded-For HTTP header
  • download playlists
  • download using custom filters, for example: title, date of update, etc
  • supports rate limiting
  • allows choosing a preferable format
  • supports authentication
  • post-processing

For more features, refer to the documentaion . It is a download machine at the command-line which can cover most of your use-cases.

7. csvtool

csvtool is a tool for performing manipulations on CSV files.


  • extract columns by index or name
  • print the number of rows in the file
  • concatenate files or columns to a single file
  • add a column to the file

I found it especially useful to re-order columns in a file on download when I have no control over a source.

8. FFmpeg

ffmpeg is the only video/audio converter tool you need, very fast and flexible. It also can grab a live audio/video source and resize it on the fly. I’m not going to list all its features, because it can do almost everything with video. Just make sure you have it installed on your system and keep a list of useful snippets. Otherwise, you will have a hard time reading the man forever.

9. qpdf

qpdf is a PDF transformation tool. Although it’s also using the Poppler library under the hood, it has some extra features compared to poppler-utils.


  • extract not sequential pages from a PDF, e.g. qpdf --empty --pages input.pdf 3,5,6-10 -- output.pdf
  • merge not sequntial pages from PDF files, e.g. qpdf --empty --pages file1.pdf 1,6-8 file2.pdf 3,5 -- output.pdf
  • remove password from a protected file

10. fd

fd is a modern tool for finding entries in the filesystem. While it doesn’t support all of find’s functionality, it comes with git-friendly defaults.


  • ignores hidden files/directories by default
  • ignores patterns from .gitignore
  • case-insensitive by default