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.



Program Summary
bard Ebook reader with text-to-speech support using SDL and flite. I have some patches for this program to improve portability and support using SDL2.
BearSSL Rather secure implementation of the SSL/TLS protocol. Can be used with curl.
branchless-utf8 Decodes a UTF-8 code point without any if statements, loops, short-circuit operators or other conditional jumps.
cal Command line calendar.
cDetect C 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.
ckpass Ncurses password display program for KeePass 1.x password databases. Uses libkpass.
csvutils CSV command utilities. Uses libcsv.
curl Command line data transfer tool.
diction and style Analyze documents for readability and other metrics. Find grammatical issues.
diff diff implementation for sbase. Check the follow-up mailing list threads for further patches.
diffh Works with diff and creates an easy to read display of differences between files in HTML format.
dr_libs Single file header audio decoding libraries.
fcurl Library to simplify working with curl.
BSD gettext Older BSD gettext/libintl implementation. I have a fork of this one as well. Also, check out the BSD Citrus Project.
BSD gzip BSD 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.
gifsicle GIF animator utility.
grafx2 Graphics editor using SDL.
java-libkdbx Java library for reading KeePass 2 database files. It includes a C library for accessing KeePass database files (kdbx). It uses libtomcrypt for decryption.
is_utf8 Check if a given string is a valid UTF-8 format.
less Less is more than more, pager program.
libarchive Archive and compression library, bsdtar and bsdcpio.
libcsv ANSI C library to read and write CSV files.
liblfds Portable license-free, lock-free data structure library.
libgrapheme C99 Unicode library including encoding, decoding and line-break functionality.
libkpass From-scratch C implementation for reading and writing KeePass 1.x format password databases using nettle for decryption.
liblzw Library for LZW (.Z) decompression.
libtomcrypt Public Domain cryptography library.
libutf C89 UTF-8 library which includes an API compatible with Plan 9's libutf plus a number of improvements.
lxsplit Command line file split/join tool.
man C program to view standard man pages. Now part of Elks (elkscmd/sys_utils).
man Fork of the man program used by Elks.
mandoc BSD version of man page utilities. Uses their manpage format. Includes tools to convert to manpage format used by most man tools.
mandoc Windows port of older version of mandoc.
minzip A zip library for zlib. Useful when working with files in zip format. Code is in the contrib section of zlib.
monocypher An easy to use, easy to deploy, auditable crypto library written in portable C.
nanosvg Lightweight SVG library.
nanotodon Lightweight TUI/C99 Mastodon client which uses ncurses (or pdcurses) and curl.
ncurses hexedit Curses based hex editor.
nemini Lightweight SDL2 based Gemini client.
BSD patch BSD 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.
pdfconcat Concatenates PDF files.
pdftxt Convert PDF to text. Helpful for searching PDFs with grep.
pkgconf Drop in replacement for pkg-config with no circular dependencies.
picaxo Graphics viewer using SDL or SDL2. I have patches to add SDL2 support. Contact me if you'd like a copy.
pspg Postgres pager provides a console based pager for PostgreSQL, MySQL, CSV and other formats. Uses ncurses (or pdcurses).
sbase Efficient implementations of core base utilities.
sc C99 small portable libraries and data structures.
shot Command line screenshot program.
sox Sound exchange utility and library. Converts sound formats. Plays audio files.
stb Public 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.
tgcrypt Small encryption package that does file encryption and full-disk encryption on Linux. Works with monocypher.
unarr Decompression library for rar and other formats. Part of SumatraPDF project.
utf.8 Single header UTF-8 string functions.
utf8proc Small UTF-8 encoding library that provides Unicode normalization, case-folding and other operations.
x509cert Generate 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