delightful c software delightful

A curated list of of lightweight, cross-platform C programs and libraries. All programs are Free, Libre and/or Open Source with source code available. They're lightweight and cross-platform compatible with minimal dependencies, so they should be easy to build from source on most operating systems with a C compiler.

Be sure to check out other Delightful Lists.



bardEbook reader with text-to-speech support using SDL and flite. I have some patches for this program to improve portability and support using SDL2.
BearSSLRather secure implementation of the SSL/TLS protocol. Can be used with curl.
branchless-utf8Decodes a UTF-8 code point without any if statements, loops, short-circuit operators or other conditional jumps.
calCommand line calendar.
cDetectC based alternative to GNU configure/autoconf. More info at IngwiePhoenix's cDetect project. Plus, I've forked the project and use it with many of my builds from source code. I've added support for cross-compiling and many, many other features. Contact me if you'd like a copy. I currently have an older version of my modifications uploaded.
csvutilsCSV command utilities. Uses libcsv.
curlCommand line data transfer tool.
diction and styleAnalyze documents for readability and other metrics. Find grammatical issues.
diffdiff implementation for sbase. Check the follow-up mailing list threads for further patches.
diffhWorks with diff and creates an easy to read display of differences between files in HTML format.
dr_libsSingle file header audio decoding libraries.
fcurlLibrary to simplify working with curl.
BSD gettextOlder BSD gettext/libintl implementation. I have a fork of this one as well. Also, check out the BSD Citrus Project.
BSD gzipBSD version of the gzip compression/decompression program. There are various forks to port this to operating systems other than BSD. I have a portable fork as well.
gifsicleGIF animator utility.
grafx2Graphics editor using SDL.
is_utf8Check if a given string is a valid UTF-8 format.
lessLess is more than more, pager program.
libarchiveArchive and compression library, bsdtar and bsdcpio.
libcsvANSI C library to read and write CSV files.
liblfdsPortable license-free, lock-free data structure library.
libgraphemeC99 Unicode library including encoding, decoding and line-break functionality.
liblzwLibrary for LZW (.Z) decompression.
libtomcryptPublic Domain cryptography library.
libutfC89 UTF-8 library which includes an API compatible with Plan 9's libutf plus a number of improvements.
lxsplitCommand line file split/join tool.
manC program to view standard man pages. Now part of Elks (elkscmd/sys_utils).
manFork of the man program used by Elks.
mandocBSD version of man page utilities. Uses their manpage format. Includes tools to convert to manpage format used by most man tools.
mandocWindows port of older version of mandoc.
minzipA zip library for zlib. Useful when working with files in zip format. Code is in the contrib section of zlib.
monocypherAn easy to use, easy to deploy, auditable crypto library written in portable C.
nanosvgLightweight SVG library.
nanotodonLightweight TUI/C99 Mastodon client which uses ncurses (or pdcurses) and curl.
ncurses hexeditCurses based hex editor.
neminiLightweight SDL2 based Gemini client.
BSD patchBSD fork of the patch program. I have a fork of this as well with some portability additions to better handle carriage return/line feed issues.
pdfconcatConcatenates PDF files.
pdftxtConvert PDF to text. Helpful for searching PDFs with grep.
pkgconfDrop in replacement for pkg-config with no circular dependencies.
picaxoGraphics viewer using SDL or SDL2. I have patches to add SDL2 support. Contact me if you'd like a copy.
pspgPostgres pager provides a console based pager for PostgreSQL, MySQL, CSV and other formats. Uses ncurses (or pdcurses).
sbaseEfficient implementations of core base utilities.
scC99 small portable libraries and data structures.
shotCommand line screenshot program.
soxSound exchange utility and library. Converts sound formats. Plays audio files.
stbPublic Domain single file header libraries. Includes stb_truetype.h, a lightweight alternative to the freetype library, which can parse, decode and rasterize characters from truetype fonts.
tgcryptSmall encryption package that does file encryption and full-disk encryption on Linux. Works with monocypher.
unarrDecompression library for rar and other formats. Part of SumatraPDF project.
utf.8Single header UTF-8 string functions.
utf8procSmall UTF-8 encoding library that provides Unicode normalization, case-folding and other operations.
x509certGenerate x509 certificate requests. Works with BearSSL.


If you have questions or feedback regarding this list, then please create an Issue with the tracker.


With delight we present you some of our delightful contributors (please add yourself if you are missing).


CC by 4.0