Single-file public-domain/open source libraries with minimal dependencies
Generally, the following is a list of small, easy-to-integrate, portable libraries
which are usable from C and/or C++, and should be able to be compiled on both
32-bit and 64-bit platforms. However, I have not personally verified that any
specific lilbrary is as advertised, or is quality software.
Libraries must be usable from C or C++, ideally both
Libraries should be usable from more than one platform (ideally, all major desktops and/or all major mobile)
Libraries should compile and work on both 32-bit and 64-bit platforms
Libraries should use at most two files (one header, one source)
Exceptions will be allowed for good reasons.
Recent additions are marked with an asterisk in the left column.
New libraries and corrections
See discussion after the list.
There are a lot of JSON parsers listed here. For some analysis and performance
results, check out https://github.com/miloyip/nativejson-benchmark
Also you might be interested in other related, but different lists:
clib : list of (mostly) small single C functions (licenses not listed)
CCAN : package of lots of shareable C functions (mixed licenses)
Public domain single-file libraries usable from C and C++ are in bold. Other
libraries are either non-public domain, or two files, or not usable from both C and C++, or
all three. Libraries of more than two files are mostly forbidden.
For the API column, "C" means C only, "C++" means C++ only, and "C/C++" means C/C++ usable
from either; some files may require building as C or C++ but still qualify as "C/C++" as
long as the header file uses extern "C"
to make it work. (In some cases, a header-file-only
library may compile as both C or C++, but produce an implementation that can only be called from
one or the other, because of a lack of use of extern "C"
; in this case the table still qualifies it
as C/C++, as this is not an obstacle to most users.)
general purpose
mathematics
parsing
graphics
audio/video/data compression
videogames
operating system features
debugging, profiling, testing
other
library
license
API
files
description
Genann
zlib
C/C++
2
simple neural networks (ANN)
KANN
MIT
C/C++
2
automatic differentiation (2 files)
micropather
zlib
C++
2
pathfinding with A*
library
license
API
files
description
Argh!
BSD
C++
1
command-line argument parsing
Clara
Boost
C++
1
composable, command line parser for C++ 11 and beyond
CLI11
BSD
C++
1
Feature-rich CLI parsing in modern C++11
cmdline
BSD
C++
1
command-line argument parsing
flags
public domain
C++
1
command-line argument parsing
getops.hpp
LGPL3
C++
1
command-line argument parsing for C++ 11 and beyond
kgflags
MIT
C/C++
1
command-line argument parsing
linkom
MIT
C/C++
1
command-line argument parsing w/ DOS-style options
optionparser
MIT
C++
1
command-line argument parsing
parg
public domain
C
2
command-line argument parsing
ProgramOptions.hxx
MIT
C++
1
command-line argument parsing
library
license
API
files
description
aw_ima.h
MIT
C/C++
1
IMA-ADPCM audio decoder
btac1c
MIT
C/C++
1
MS-IMA_ADPCM variant
dr_flac
public domain
C/C++
1
FLAC audio decoder
dr_wav
public domain
C/C++
1
WAV audio loader
Geneva
MIT
C/C++
1
Library generating 8-bit waveforms of various kinds
minimp3
CC0
C
1
Minimalistic MP3 decoder with sse/neon support
miniaudio
public domain
C/C++
1
Audio playback and capture library
pocketmod
MIT
C/C++
1
ProTracker MOD file renderer
sts_mixer
public domain
C/C++
1
simple stereo audio mixer
tinysound
zlib
C/C++
1
direct sound audio mixer & WAV loader
TinySoundFont
MIT
C/C++
1
SoundFont2 loader & synthesizer
library
license
API
files
description
dmc_unrar
GPLv2+
C/C++
1
RAR file decompression
fastlz
MIT
C/C++
2
fast but larger LZ compression
lz4
BSD
C/C++
2
fast but larger LZ compression
miniz.c
MIT
C/C++
1
compression, decompression, ZIP file, PNG writing
microtar
MIT
C/C++
2
lightweight tar library
pithy
BSD
C/C++
2
fast but larger LZ compression
rle
MIT
C
1+1
extremely simple run-length encoder/decoder
library
license
API
files
description
ggentropy
ISC
C++
2
cross platform entropy library
Monocypher
public domain
C
2
high-quality small cryptography library
TweetNaCl
public domain
C
2
high-quality tiny cryptography library
library
license
API
files
description
aArray
public domain
C
1
Arrays/strings: generic, safe
avl
public domain
C/C++
2
AVL tree
bitset.hpp
LGPL3
C++
1
Compile time sided bit set for C++11 and beyond
c-bool-value
WTFPLv2
C/C++
1
Simple and easy boolean values in standard c
DG_dynarr.h
public domain
C/C++
1
typesafe dynamic arrays (like std::vector) for plain C
DynaVar
GPL-3.0
C++
1
Object which can store any type of primitive data type
fector.hpp
LGPL3
C++
1
A fixed size std::vector like structure
itlib
MIT
C++
1
several C++11 standard-contaner-like libraries and helpers
klib
MIT
C/C++
2
many 2-file libs: hash, sort, b-tree, etc
LinkedList
MIT
C/C++
2
Linked list C++
libpqueue
BSD
C/C++
2
priority queue (heap)
minilibs
public domain
C
2
two-file binary tress (also regex, etc)
PackedArray
WTFPLv2
C
2
memory-efficient array of elements with non-pow2 bitcount
simclist
BSD
C/C++
2
linked-list
selist
ISC
C/C++
2
space-efficient linked-list
trie.hpp
LGPL3
C++
1
A trie (prefix tree) implementation for C++11
mempool
MIT
C++
1
Efficient minimal memory pool implementation for C++
uthash
BSD
C/C++
2
several 1-header, 1-license-file libs: generic hash, list, etc
px_mem.h
MIT
C++
1
Safe memory managemnt constructs for C++
library
license
API
files
description
dbgtools
zlib
C/C++
2
cross-platform debug util libraries
debug-assert
zlib
C++
1
modular assertion macro
debugbreak
BSD
C/C++
1
programmatic debug break
log.hpp
LGPL3
C++
1
multi threaded simple C++11 and beyond logger
loguru
public domain
C++
1
flexible logging
pempek_assert.cpp
WTFPLv2
C++
2
flexible assertions
library
license
API
files
description
DG_misc.h
public domain
C/C++
1
Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
dirent
MIT
C/C++
1
dirent for Windows: retrieve file & dir info
tfile
MIT
C++
1
FILE* wrapper does read-write-append-seek-close (Win/Mac/Unix)
TinyDir
BSD
C
1
cross-platform directory reading (Win/POSIX/MinGW)
tinyfiles
zlib
C/C++
1
cross-platform directory reading (Win/Mac/Unix)
whereami
WTFPLv2
C/C++
2
get path/filename of executable or module
library
license
API
files
description
cgltf
MIT
C
1
glTF 2.0 file loader
fast_obj.h
MIT
C
1
wavefront OBJ file loader
objzero
MIT
C
2
wavefront OBJ file loader
tinyply
public domain
C++
2
PLY mesh file loader
tinyobjloader
MIT
C++
1
wavefront OBJ file loader
tinyobjloader-c
MIT
C
1
wavefront OBJ file loader
tk_objfile
MIT
C/C++
1
OBJ file loader
yocto_obj.h
MIT
C/C++
1
wavefront OBJ file loader
m3d.h
MIT
C/C++
1
Model 3D importer/exporter (with Blender, Goxel, WebGL JS and assimp integration)
qll_q3.h
WTFPLv2
C++
1
Quake3 BSP loader
library
license
API
files
description
Clipper
Boost
C++
2
line & polygon clipping & offsetting
df
public domain
C/C++
1
find voronoi region in linear time of size of lattice
jc_voronoi
MIT
C/C++
1
find voronoi regions on float/double data
nanoflann
BSD
C++
1
build KD trees for point clouds
nv_voronoi.h
public domain
C/C++
1
find voronoi regions on lattice w/ integer inputs
par_msquares
MIT
C/C++
1
convert (binarized) image to triangles
par_shapes
MIT
C/C++
1
generate various 3d geometric shapes
par_streamlines
MIT
C/C++
1
tessellate wide lines and curves with shading attributes
PolyPartition
MIT
C++
2
polygon triangulation, partitioning
rjm_mc.h
public domain
C/C++
1
marching cubes triangulator
sobol.h
public domain
C/C++
1
sobol & stratified sampling sequences
sdf.h
MIT
C/C++
1
compute signed-distance field from antialiased image
Tomas Akenine-Moller snippets
public domain
C/C++
2
various 3D intersection calculations, not lib-ified
Voxelizer
MIT
C/C++
1
convert triangle mesh to voxel triangle mesh
xatlas
MIT
C++
2
mesh parameterization
yocto_bvh.h
MIT
C/C++
1
ray-casting and closest-element queries of bounding-volume hierarchy
yocto_shape.h
MIT
C/C++
1
shape generation, tesselation, normals, etc.
library
license
API
files
description
rang
public domain
C++
1
cross-platform colored console text
ssfn.h
MIT
C/C++
1
scalable/bitmap/pixmap font renderer
library
license
API
files
description
blendish
MIT
C/C++
1
blender-style widget rendering using NanoVG
Cimg
CeCILL/CeCILL-C
C++
1
image processing toolkit (60K LoC)
Immediate2D
public domain
C++
2
zero-configuration, immediate-mode 2D graphics for Windows
noc_turtle
MIT
C/C++
2
procedural graphics generator
tigr
public domain
C/C++
2
quick-n-dirty window text/graphics for Windows and macOS
RGL
zlib
C/C++
1
Simple ultra-lightweight OpenGL version abstraction based on RLGL (pipeline system)
RFont
zlib
C/C++
1
Simple-to-use lightweight single header modular font rendering library
wfc
MIT
C
1
generate image locally similar to the input image using WFC algorithm
library
license
API
files
description
debug-draw
public domain
C++
1
API-agnostic immediate-mode debug rendering
lightmapper
public domain
C/C++
1
use your OpenGL renderer to offline bake lightmaps
mikktspace
zlib
C/C++
2
compute tangent space for normal mapping
rjm_raytrace.h
public domain
C/C++
1
minimalistic SSE packet raytracer for offline baking
seamoptimizer
public domain
C/C++
1
modify lightmap data to hide seams
Simple OpenGL Loader
MIT
C/C++
1
extensible, cross-platform OpenGL loader
small3dlib
CC0 + patent waiver
C/C++
1
fast and portable software renderer
sokol_gfx.h
MIT
C/C++
1
cross-platform 3D API wrapper (GLES2+3/GL3/D3D11/Metal)
Swarmz
public domain
C++
1
swarming/flocking algorithm
tinygizmo
public domain
C++
2
gizmo objects for interactively editing 3d transformations
Vertex Cache Optimizer
public domain
C/C++
1
vertex cache optimization of meshes
Vulkan Memory Allocator
MIT
C/C++
1
memory allocator for Vulkan
yocto_trace.h
MIT
C/C++
1
physically-based unidirectional path tracer w/ MIS for direct lights
yocto_symrigid.h
MIT
C/C++
1
rigid body simulator (sequential impulse/PGS) with support for concave objects
px_render.h
MIT
C++
1
cross-platform, Multithreaded, command based, 3D render API (GL/GLES) info
library
license
API
files
description
EasyTab
public domain
C/C++
1
multi-platform tablet input
libue
MIT
C/C++
1
Helper library for Linux device hot-plug event
library
license
API
files
description
xxHash
BSD
C/C++
2
fast hash function
library
license
API
files
description
EXR miniexr
public domain
C++
2
OpenEXR writer, needs header file
EXR tinyexr
BSD
C/C++
1
EXR image read/write, uses miniz internally
GIF gif.h
public domain
C++
1
animated GIF writer (can only include once)
GIF gif_load
public domain
C/C++
1
(animated) GIF reader
GIF jo_gif.cpp
public domain
C++
1
animated GIF writer (CPP file can also be used as H file)
JPG jpeg-compressor
public domain
C++
2
2-file JPEG compress, 2-file JPEG decompress
JPG NanoJPEG
MIT
C/C++
1
JPEG decoder
JPG tiny_jpeg.h
public domain
C/C++
1
JPEG encoder
JPG EXIF easyexif
BSD2
C++
2
EXIF metadata extractor for JPEG images
JPG EXIF TinyEXIF
BSD
C++
2
Parse EXIF data from JPEG (XMP w/ TinyXML2 lib)
PDF PDFgen
public domain
C
2
PDF writer
PNG lodepng
zlib
C/C++
2
PNG encoder/decoder
PNG picopng.cpp
zlib
C++
2
tiny PNG loader
PNG TinyPngOutput
LGPLv3
C/C++
2
PNG writer
PNM PNM
Apache 2.0
C++
1
PBM, PGM and PPM reader and writer
SVG nanoSVG
zlib
C/C++
1
1-file SVG parser; 1-file SVG rasterizer
cro_mipmap.h
public domain
C/C++
1
average, min, max mipmap generators
rjm_texbleed.h
public domain
C/C++
1
Fills in the color of pixels where alpha==0
library
license
API
files
description
amoeba
MIT
C/C++
1
constraint solver (Cassowary) w/Lua binding
ceval-single-header
MIT
C/C++
1
A single-header library for parsing and evaluation of arithmetic expressions
fft
public domain
C++
1
Fast Fourier Transform
ExprTk
MIT
C++
1
Runtime mathematical expression parser and evaluation engine.
PoissonGenerator.h
MIT
C++
1
Poisson disk points generator (disk or rect)
prns.h
public domain
C/C++
1
seekable pseudo-random number sequences
rfft.h
public domain
C/C++
1
Fast Fourier Tranform for arbitrary array sizes
rnd.h
public domain
C/C++
1
pseudo-random number generation
ShaderFastLibs
MIT
C++
1
(also HLSL) approximate transcendental functions optimized for shaders (esp. GCN)
simrank.hpp
MIT
C++
2
SimRank graph similarity algorithm
SummedAreaTable
MIT
C++
1
Summed-Area Table generation and sum/avg queries
TinyExpr
zlib
C
2
evaluation of math expressions from strings
library
license
API
files
description
bikeshed.h
MIT
C/C++
1
cross-platform lock free fixed memory hierarchical work scheduler
mm_sched.h
zlib
C/C++
1
cross-platform multithreaded task scheduler based on enkiTS
thread.h
public domain
C/C++
1
cross-platform thread primitives
TinyCThread
zlib
C/C++
2
cross-platform implementation of the C11 Threads API
TinyThread++
zlib
C++
2
cross-platform implementation of the C++11 Threads API
px_sched.h
MIT
C++
1
cross-platform task scheduler info
library
license
API
files
description
cpp-httplib
MIT
C/C++
1
cross-platform HTTP server/client
civetweb
MIT
C/C++
2
HTTP server, fork of Mongoose
EWS
BSD
C/C++
1
HTTP server
happyhttp
zlib
C++
2
HTTP client requests
http
public domain
C/C++
1
HTTP get/post
libcluon
MPL-2.0
C++
1
cross-platform socket wrapper and data marshalling with native implementations for Protobuf , LCM /ZCM , JSON, and MsgPack serialization/deserialization
LUrlParser
MIT
C++
2
lightweight URL & URI parser RFC 1738, RFC 3986
mm_web.h
BSD
C/C++
1
lightweight webserver, fork of webby
mongoose
GPLv2
C/C++
2
HTTP server
par_easycurl.h
MIT
C/C++
1
cURL wrapper
sts_net
public domain
C/C++
1
cross-platform socket wrapper (socket sets and packet API)
yocto
public domain
C/C++
2
non-production-use HTTP server
zed_net
public domain
C/C++
1
cross-platform socket wrapper
znet
MIT
C/C++
1
cross-platform networking w/ Lua binding
library
license
API
files
description
archive
public domain
C++
1
binary serialize & deserlize w/ STL support
cista
MIT
C++
1
cross-platform high performance zero copy C++17 serialization/deserialization
libcluon
MPL-2.0
C++
1
cross-platform data serialization/deserialization with native implementations for Protobuf , LCM /ZCM , JSON, and MsgPack
library
license
API
files
description
ajson
Boost
C++
1
JSON serialize & deserialize w/ STL support
cJSON
MIT
C/C++
1
JSON parser
json-build
MIT
C/C++
1
JSON serializer
cJSON
MIT
C/C++
1
JSON parser
json.h
public domain
C/C++
1
JSON parser
json.hpp
MIT
C++
1
JSON parse, serialize, deserialize
jzon.h
MIT
C++
2
JSON parser
PicoJSON
BSD
C++
1
JSON parse/serializer
parson
MIT
C/C++
2
JSON parser and serializer
jsonc
MIT
C/C++
1
extremely fast and extremely small (~60 SLoC) JSON parser
library
license
API
files
description
mini-yaml
MIT
C++
2
YAML parser and serializer
library
license
API
files
description
cmp
MIT
C/C++
2
MessagePack parser and serializer
cpp-peglib
MIT
C/C++
1
PEG (Parsing Expression Grammars) library
inih
BSD
C/C++
2
.ini file parser
ini.h
public domain
C/C++
1
.ini file parser
minilibs
public domain
C
2
two-file regex (also binary tree, etc)
mm_lexer.h
zlib
C/C++
1
C-esque language lexer
SLRE
GPLv2
C/C++
1
regular expression matcher
tinymemfile
zlib
C++
1
fscanf on in-memory files
udisasm
MIT
C/C++
1
extremely small disassembler for ARMv8.2 AArch64 (~65k)
Unformat
public domain
C++
1
parses formatted strings (reverse of std::format)
library
license
API
files
description
MicroProfile
public domain
C++
2-4
CPU (and GPU?) profiler, 1-3 header files, uses miniz internally
prof
MIT
C/C++
1
profiler for Linux
Remotery
Apache 2.0
C/C++
2
CPU/GPU profiler Win/Mac/Linux, using web browser for viewer
library
license
API
files
description
Duktape
MIT
C
2
embeddable JavaScript engine
MY-BASIC
MIT
C
2
interpreter for a BASIC dialect scripting language
LIL
zlib
C/C++
2
interpreter for a Tcl-like scripting language
lualite
MIT
C++
1
generate Lua bindings in C++
Picol
BSD
C/C++
1
interpreter for a Tcl-like scripting language
s7
BSD
C/C++
2
interpreter for a subset of Scheme (R5RS/R7RS)
library
license
API
files
description
FFSM2
MIT
C++
1
flat FSM
HFSM2
MIT
C++
1
hierarchical FSM
library
license
API
files
description
dfa
MIT
C/C++
2
fast UTF-8 decoder (need a header file)
DG_misc.h
public domain
C/C++
1
Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
gb_string.h
public domain
C/C++
1
dynamic strings
Obfuscate
public domain
C++
1
Guaranteed compile-time string literal obfuscation library for C++14
inja.hpp
MIT
C++
1
template engine
str
BSD
C
2
Yet another string library for C language
strpool.h
public domain
C/C++
1
string interning
Str.h
public domain
C++
1
Simple C++ string type with an optional local buffer
str_view.hpp
MIT
C++
1
null-termination-aware string-view class
utf8
public domain
C/C++
1
UTF-8 string library
csplit
MIT
C/C++
1
String splitting and processing single-header library
library
license
API
files
description
catch
Boost
C++
1
unit testing
catch2
Boost
C++
1
unit testing
doctest
MIT
C++
1
unit testing
fctx
BSD
C/C++
1
unit testing
greatest
iSC
C
1
unit testing
hippomocks
LGPL
C++
1
unit testing
labrat
public domain
C/C++
1
unit testing
minctest
zlib
C
1
unit testing
munit
MIT
C
1
unit testing
Rexo
public domain
C/C++
1
framework for C89/C++ featuring automatic registration of tests and a polished API
picotest
MIT
C/C++
1
unit testing
SPUT
BSD
C/C++
1
unit testing
trompeloeil
Boost
C++
1
unit testing
utest
MIT
C/C++
1
unit testing
utest.h
public domain
C/C++
1
unit testing
walter
public domain
C
1
unit testing
clove-unit
MIT
C
1
unit testing
library
license
API
files
description
dear imgui
MIT
C++
9
an immediate-mode GUI formerly named "ImGui"; 3rd-party C wrapper
libcmdf
public domain
C
1
a small library for writing CLI applications
linenoise
BSD
C/C++
2
terminal readline w/ history etc
noc_file_dialog.h
MIT
C/C++
1
file open/save dialogs (Win/Mac/Linux)
nuklear
public domain
C/C++
1
minimal GUI toolkit
tinyfiledialogs
ZLIB
C/C++
2
modal dialogs inc. file open/save (Win/Mac/Linux)
wcwidth9
Apache 2.0
C
1
platform independent wcwidth with full unicode 9 support
library
license
API
files
description
algebra3.h
public domain
C++
1
vector utilities for 2, 3, and 4 element vectors, all inline
ccVector.h
public domain
C/C++
1
Vector, quaternion and matrix math
gb_math
public domain
C/C++
1
Vector, quaternion and matrix math w/o math.h
Handmade Math
public domain
C/C++
1
vector math
linalg.h
public domain
C++
1
vector/matrix/quaternion math
linalg
ISC
C/C++
1
vector/matrix/quaternion math
mm_vec.h
BSD
C/C++
1
SIMD vector math
hypatia
MIT
C
1
vector/matrix/quaternion math
library
license
API
files
description
app.h
public domain
C/C++
1
Windows-only-but-meant-to-be-cross-platform game-ish framework
raycastlib.h
CC0 + patent waiver
C/C++
1
advanced raycasting rendering library, pure C99 with no dependencies, only 32bit int math
library
license
API
files
description
ASAP
MIT
C++
1
library for parsing, printing, iterating and operating on dates.
benchmark.hpp
LGPL3
C++
1
micro benchmark library for C++11 and beyond
cpp-generators
BSD
C++
1
generators in C++
endianness.h
public domain
C
1
endianness conversion and detection
ggformat
ISC
C++
2
printf replacement
Hedley
public domain
C/C++
1
compiler portability, optimization, static analysis, etc.
format.hpp
LGPL3
C++
1
dlang inspired typesafe string formatting
levenshtein
MIT
C/C++
2
compute edit distance between two strings
MakeID.h
public domain
C++
1
allocate/deallocate small integer IDs efficiently
openGA
MPL-2.0
C++
1
A C++ Generic Algorithm solver library
picobench
MIT
C++
1
microbenchmarking
PlusCallback
zlib
C++
1
function/method callbacks
process.h
public domain
C/C++
1
process control API
random
MIT
C++
1
convenient API for random
sokol_time.h
MIT
C/C++
1
cross-platform time measurement
stmr
MIT
C
2
extract English word stems
tinyformat
Boost
C++
1
typesafe printf
tinytime
zlib
C/C++
1
quick-and-dirty time elapsed time
ubench.h
public domain
C/C++
1
microbenchmarking
visit_struct
Boost
C++
2
struct-field reflection
sili-toolchain
public domain
C/C++
1
C toolchain for modern C programming, strings, arrays, files, threading, ect
RGFW
zlib
C/C++
1
A multi-platform single-header user-friendly GUI framework as an alternative to GLFW
There are also these XML libraries, but I am so significantly not a fan of XML that I've consigned these to the basement to make you think twice.
parsing: tinyxml2 : XML (zlib license)
parsing: pugixml : XML (MIT license)
parsing: yxml : XML (MIT license)
cat
library
license
API
files
description
2d
C-Turtle
MIT
C++
1
Port of Python's Turtle to C++
2d
cgl
MIT
C
2
C Game Library
2d
daisy
MIT
C++
1
2D Graphics and text
2d
m_dist.h
zlib
C/C++
1
fast distance transform and Voronoi
2d
m_image.h
zlib
C/C++
1
image processing routines
2d
m_path_finding.h
zlib
C/C++
1
floodfill-based path finding
2d
m_raster.h
zlib
C/C++
1
simple rasterizer
2d
pico_gfx.h
PD/zlib
C
1
Graphics library (sokol_gfx)
2d
pico_gl.h
PD/zlib
C
1
Graphics library (OpenGL)
2d
scalable-font2
MIT
C
1
Scalable Font renderer + specification
2d
si_normalmap
PD
C
1
Image to Normal Map generator
3d
model3d
MIT
C
1
3D model format specification
audio
atomix
PD
C
1
wait-free atomic sound mixer
audio
chibi-xmplay
BSD3
C
2
XM module playback library
audio
jar-mod
PD
C
1
MOD playback library
audio
jar-xm
WTFPLv2
C
1
XM playback library
audio
mojoAL
zlib
C
1
Full OpenAL 1.1 implementation
audio
nanoalsa
MIT
C
1
Tiny PCM playback under Linux
audio
wav.h
PD/MIT
C
1
.wav file encoding and decoding
b64
pico_b64.h
PD/zlib
C
1
Base64 en/decoder
crypt
tiny-AES-c
PD
C
2
Small portable AES128/192/256 in C
crypt
tiny-ECDH-c
PD
C
2
Small portable Elliptic-Curve Diffie-Hellman in C
date
date
MIT
C++
1
date and time libraries
ds
dynarr
PD
C
1
dynamic array container
ds
fifo_declare.h
LGPL2
C/C++
1
Thread/core safe FIFO
ds
jhr_skip_list
PD
C++
1
Skip Lists
ds
jrsl
PD
C/C++
1
Skip Lists
ds
libintrusive
PD
C
2
Intrusive data structures
ds
lstr.h
PD/MIT
C
1
length-bounded strings
ecs
pico_ecs.h
PD/zlib
C
1
Pure and simple ECS
engine
FWK1
public domain
C
1
Game engine
engine
olcPixelGameEngine
BSD3
C++
1
Game engine
eval
mathe.h
PD/MIT
C
1
mathematical expression parsing
ext
cor.h
PD/MIT
C
1
coroutines
ext
errnoname
BSD0
C
2
extended errno messages
ext
filesystem
MIT
C++
1
implementation of std::filesystem
ext
outcome
Apache2/Boost
C++
1
outcome and result C++ containers
gl
final_dynamic_opengl.h
MIT
C
1
opengl loader
gui
webview
MIT
C/C++
1
cross-platform webview library
hash
hash.c
PD
C
2
SHA1/SHA3/MD5 hashes
hash
lonesha256
PD
C
1
SHA256 implementation
hash
PicoSHA2
MIT
C++
1
SHA256 implementation
image
bitmap
MIT
C++
1
Bitmap decoder and utilities
image
framepacker
MIT
C++
1
texture bin packing algorithm
image
tiffloader
PD
C
2
TIFF image loader
json
jsmn
MIT
C
1
Minimalistic JSON parser
json
jsonc
MIT
C
1
Fast JSON parser
json
sjson
BSD2
C
1
JSON encode/decoder
log
pico_log.h
PD/zlib
C
1
Flexible logging framework
math
Delaunay
BSD3
C++
2
2D and 3D Delaunay triangulation
math
dvector
PD
C
1
2D/3D vector/quaternion/matrix math library
math
gm.h
PD/MIT
C
1
vector/matrix/quaternion math
math
HMM Toolkit
GPL2
C/C++
1
Discrete and continuous Hidden Markov Models (DHMM, CHMM)
math
linmath.h
WTFPLv2
C
1
vector library
math
m_math.h
zlib
C/C++
1
math with C/OpenCL portability
math
omm
MIT
C++
1
Template open multi-methods
math
OpenNL
BSD3
C++
2
linear and eigen solvers
math
pico_hit.h
PD/zlib
C
1
2D collision detection (SAT) and ray casting
math
pico_math.h
PD/zlib
C
1
2D math library for games
math
pico_qt.h
PD/zlib
C
1
Quadtree library
math
precision
PD
C++
3
Arbitrary-precision integer and rational arithmetic
math
simple_linear_regression
MIT
C/C++
1
Simple linear regression
math
Statistics-Tool-Box
PD
C/C++
1
Statistical functions
math
tiny-bignum-c
PD
C
2
Small portable multiple-precision unsigned integer arithmetic in C
math
vmath
PD
C
1
Vector/matrix library
mem
buddy_alloc
BSD0
C
1
buddy memory allocator
mem
final_memory.h
MIT
C
1
heap memory handler
misc
args.h
PD/MIT
C
1
argparse-style argument parser
misc
CLM_LIBS
PD
C
1
Diverse utilities
misc
Color-Toolkit
GPL2
C/C++
1
Color conversion utils (RGB, XYZ, Lab, CIE76, CIE94 and CIEDE200)
misc
ebnn.h
MIT
C
1
BNN (Binarized Neural Networks)
misc
final_tiletrace.hpp
MIT
C++
1
tilemap contour tracing
misc
h.h
GPL3
C/C++
1
Diverse utilities
misc
ll.h
PD/MIT
C
1
cross-platform library loading
misc
mmu
MIT
C
2
memory management and data structure toolset
misc
QR-Code-generator
MIT
C
2
QR Code generator
misc
qsort
MIT
C
1
qsort algorithm as a C macro
misc
scogem.c
PD
C
2
URL parser
misc
smallxrm.c
PD
C
2
Implementation of X resource manager
misc
x.h
Mulan2
C/C++
1
cross-platform C/C++ utilities
net
netq
MIT
C
1
Reliable datagram library
net
simpletls.c
PD
C
2
Function to create a socket and connect to a remote server with TLS
net
swrap
PD
C
1
TCP and UDP socket wrapper
net
tiniest-analytics
MIT
C++
2
Cross-platform analytics for games (using Google Analytics <4)
net
tiny-MQTT-c
PD
C
2(4)
Small implementation of (some of) the MQTT protocol in C
net
tlse
PD/BSD2
C
2
TLS v1.0, 1.2, 1.3 and DTLS 1.0, 1.2 implementations
net
udp.h
PD/MIT
C
1
cross-platform udp networking
net
webster
Apache2
C++
2
Standalone HTTP server/client
pack
nibrans
PD
C
1
adaptive rANS library
pack
rle
MIT
C
1
RLE library
parser
html-parse.c
GPL
C
2
HTML parser (wget)
parser
tiny-regex-c
PD
C
2
Small portable regex in C
parser
tiny-regex-mod
PD
C
1
Tiny regular expressions library
parser
tok
MIT
C
1
Configurable tokenizer
parser
tomlplusplus
MIT
C++
1
TOML parser and serializer
prng
ranxoshi256
PD
C
1
xoshiro256 algorithm
raster
canvas_ity
ISC
C++
1
2D rasterizer
script
xpl
WTFPLv2
C
1
X Programming Language
serial
blob_tree
MIT
C++
1
Binary tree serializer
serial
dt.h
PD/MIT
C
1
datatag serializer/deserializer (superset of JSON)
serial
qserial
BSD3
C++
1
Schema-driven serialization library
serial
Serialization helper
WTFPLv2
C
1
Serialization helper
serial
stream.h
PD/MIT
C
1
byte streams
svg
SimpleSVG
BSD3
C++
1
Easy to use SVG library
sys
cpuid
??
C/C++
1
cross-platform cpuid intrinsic
sys
doops
PD
C
1
Event loop library
sys
final_platform_layer.h
MIT
C
1
platform abstraction
sys
iathook
??
C/C++
1
import address table hooking library (x86/x64,w32)
sys
JArgsParser
MIT
C++
1
arguments parser
sys
openmodal
MIT
C
1
Native file modals
sys
xproc
MIT
C++
2
Foreign Process Information
test
test.h
PD/MIT
C
1
unit testing
time
pico_time.h
PD/zlib
C
1
Time management library
unit
pico_unit.h
PD/zlib
C
1
Unit testing framework
video
pl_mpeg
MIT
C
1
MPEG1 video and audio decoder
xml
final_xml.h
MIT
C
1
xml parser
New libraries and corrections
Submissions of new libraries: I accept submissions (as issues or as pull requests). Please
note that every file that must be included in a user's project counts; a header and a source
file is 2 files, but a header file, source file, and LICENSE (if the license isn't in the
source file) is 3 files, and won't be accepted, because it's not 2 files. But actually
'LICENSE' is a problem for just dropping the library in a source tree anyway, since it's
not scoped to just the library, so library authors are encouraged to include the license in the
source file and not require a separate LICENSE.
Corrections: if information for a library above is wrong, please send a correction as an
issue, pull request, or email. Note that if the list indicates a library works from both
C/C++, but it doesn't, this could be an error in the list or it could be a bug in the
library. If you find a library doesn't work in 32-bit or 64-bit, the library should be
removed from this list, unless it's a bug in the library.
Can I link directly to this list?
Yes. This is the preferred link.
Why isn't library XXX which is made of 3 or more files on this list?
I draw the line arbitrarily at 2 files at most. (Note that some libraries that appear to
be two files require a separate LICENSE file, which made me leave them out). Some of these
libraries are still easy to drop into your project and build, so you might still be ok with them.
But since people come to stb for single-file public domain libraries, I feel that starts
to get too far from what we do here.
Why isn't library XXX which is at most two files and has minimal other dependencies on this list?
Probably because I don't know about it, feel free to submit a pull request, issue, email, or tweet it at
me (it can be your own library or somebody else's). But I might not include it for various
other reasons, including subtleties of what is 'minimal other dependencies' and subtleties
about what is 'lightweight'.
Why isn't SQLite's amalgamated build on this list?
Come on.