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).