Skip to content

Latest commit

 

History

History
516 lines (492 loc) · 66.2 KB

README.md

File metadata and controls

516 lines (492 loc) · 66.2 KB

C/C++ 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. There is preference for libraries that are C, public domain and single-file. However, we have not personally verified that any specific library is as advertised, or is quality software.

Rules

  • Libraries must be usable from C or C++, ideally both.
  • Libraries must include the licensing terms in the header and source files.
  • 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): more than two files are mostly forbidden.

Exceptions will be allowed for good reasons.

Other lists

Also you might be interested in other related, but different lists:

Library listing

tag library license API files description
2d blendish MIT C/C++ 1 blender-style widget rendering using NanoVG
2d C-Turtle MIT C++ 1 Port of Python's Turtle to C++
2d cgl MIT C 2 C Game Library
2d Cimg CeCILL/CeCILL-C C++ 1 image processing toolkit (60K LoC)
2d daisy MIT C++ 1 2D Graphics and text
2d final_tiletrace.hpp MIT C++ 1 tilemap contour tracing
2d Immediate2D PD C++ 2 zero-configuration, immediate-mode 2D graphics for Windows
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_raster.h zlib C/C++ 1 simple rasterizer
2d noc_turtle MIT C/C++ 2 procedural graphics generator
2d pico_gfx.h PD/zlib C 1 Graphics library (sokol_gfx)
2d pico_gl.h PD/zlib C 1 Graphics library (OpenGL)
2d RFont zlib C/C++ 1 Simple-to-use lightweight single header modular font rendering library
2d RGL zlib C/C++ 1 Simple ultra-lightweight OpenGL version abstraction based on RLGL (pipeline system)
2d scalable-font2 MIT C 1 Scalable Font renderer + specification
2d si_normalmap PD C 1 Image to Normal Map generator
2d tigr PD C/C++ 2 quick-n-dirty window text/graphics for Windows and macOS
2d wfc MIT C 1 generate image locally similar to the input image using WFC algorithm
3d debug-draw PD C++ 1 API-agnostic immediate-mode debug rendering
3d final_dynamic_opengl.h MIT C 1 opengl loader
3d lightmapper PD C/C++ 1 use your OpenGL renderer to offline bake lightmaps
3d mikktspace zlib C/C++ 2 compute tangent space for normal mapping
3d model3d MIT C 1 3D model format specification
3d px_render.h MIT C++ 1 cross-platform, Multithreaded, command based, 3D render API (GL/GLES) info
3d rjm_raytrace.h PD C/C++ 1 minimalistic SSE packet raytracer for offline baking
3d seamoptimizer PD C/C++ 1 modify lightmap data to hide seams
3d Simple OpenGL Loader MIT C/C++ 1 extensible, cross-platform OpenGL loader
3d small3dlib CC0 + patent waiver C/C++ 1 fast and portable software renderer
3d sokol_gfx.h MIT C/C++ 1 cross-platform 3D API wrapper (GLES2+3/GL3/D3D11/Metal)
3d stb_voxel_render PD C/C++ 1 Minecraft-esque voxel rendering "engine" with many more features
3d Swarmz PD C++ 1 swarming/flocking algorithm
3d tinygizmo PD C++ 2 gizmo objects for interactively editing 3d transformations
3d Vertex Cache Optimizer PD C/C++ 1 vertex cache optimization of meshes
3d Vulkan Memory Allocator MIT C/C++ 1 memory allocator for Vulkan
3d yocto_symrigid.h MIT C/C++ 1 rigid body simulator (sequential impulse/PGS) with support for concave objects
3d yocto_trace.h MIT C/C++ 1 physically-based unidirectional path tracer w/ MIS for direct lights
ai Genann zlib C/C++ 2 simple neural networks (ANN)
ai KANN MIT C/C++ 2 automatic differentiation (2 files)
app app.h PD C/C++ 1 Windows-only-but-meant-to-be-cross-platform game-ish framework
app final_platform_layer.h MIT C 1 platform abstraction
app RGFW zlib C/C++ 1 A multi-platform single-header user-friendly GUI framework as an alternative to GLFW
argv Argh! BSD C++ 1 command-line argument parsing
argv args.h PD/MIT C 1 argparse-style argument parser
argv Clara Boost C++ 1 composable, command line parser for C++ 11 and beyond
argv CLI11 BSD C++ 1 Feature-rich CLI parsing in modern C++11
argv cmdline BSD C++ 1 command-line argument parsing
argv flags PD C++ 1 command-line argument parsing
argv getops.hpp LGPL3 C++ 1 command-line argument parsing for C++ 11 and beyond
argv kgflags MIT C/C++ 1 command-line argument parsing
argv linkom MIT C/C++ 1 command-line argument parsing w/ DOS-style options
argv optionparser MIT C++ 1 command-line argument parsing
argv parg PD C 2 command-line argument parsing
argv ProgramOptions.hxx MIT C++ 1 command-line argument parsing
audio atomix PD C 1 wait-free atomic sound mixer
audio aw_ima.h MIT C/C++ 1 IMA-ADPCM audio decoder
audio btac1c MIT C/C++ 1 MS-IMA_ADPCM variant
audio chibi-xmplay BSD3 C 2 XM module playback library
audio dr_flac PD C/C++ 1 FLAC audio decoder
audio dr_wav PD C/C++ 1 WAV audio loader
audio Geneva MIT C/C++ 1 Library generating 8-bit waveforms of various kinds
audio jar-mod PD C 1 MOD playback library
audio jar-xm WTFPLv2 C 1 XM playback library
audio miniaudio PD C/C++ 1 Audio playback and capture library
audio minimp3 CC0 C 1 Minimalistic MP3 decoder with sse/neon support
audio mojoAL zlib C 1 Full OpenAL 1.1 implementation
audio nanoalsa MIT C 1 Tiny PCM playback under Linux
audio pocketmod MIT C/C++ 1 ProTracker MOD file renderer
audio stb_hexwave PD C/C++ 1 audio waveform synthesizer
audio stb_vorbis PD C/C++ 1 decode ogg vorbis files from file/memory to float/16-bit signed output
audio sts_mixer PD C/C++ 1 simple stereo audio mixer
audio tinysound zlib C/C++ 1 direct sound audio mixer & WAV loader
audio TinySoundFont MIT C/C++ 1 SoundFont2 loader & synthesizer
audio wav.h PD/MIT C 1 .wav file encoding and decoding
base pico_b64.h PD/zlib C 1 Base64 en/decoder
bench benchmark.hpp LGPL3 C++ 1 micro benchmark library for C++11 and beyond
bench picobench MIT C++ 1 microbenchmarking
bench ubench.h PD C/C++ 1 microbenchmarking
c cor.h PD/MIT C 1 coroutines
c errnoname BSD0 C 2 extended errno messages
c stb_sprintf PD C/C++ 1 fast sprintf, snprintf for C/C++
cpp filesystem MIT C++ 1 implementation of std::filesystem
cpp outcome Apache2/Boost C++ 1 outcome and result C++ containers
crypt ggentropy ISC C++ 2 cross platform entropy library
crypt Monocypher PD C 2 high-quality small cryptography library
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
crypt TweetNaCl PD C 2 high-quality tiny cryptography library
csv CSVstream MIT C++ 1 CSV parser
csv Fast C++ CSV Parser BSD C++ 1 CSV parser
csv Rapidcsv BSD C++ 1 CSV parser
csv Vince's CSV Parser MIT C++ 1 CSV parser and serializer
date date MIT C++ 1 date and time libraries
debug dbgtools zlib C/C++ 2 cross-platform debug util libraries
debug debug-assert zlib C++ 1 modular assertion macro
debug debugbreak BSD C/C++ 1 programmatic debug break
debug log.hpp LGPL3 C++ 1 multi threaded simple C++11 and beyond logger
debug loguru PD C++ 1 flexible logging
debug pempek_assert.cpp WTFPLv2 C++ 2 flexible assertions
dev EasyTab PD C/C++ 1 multi-platform tablet input
dev libue MIT C/C++ 1 Helper library for Linux device hot-plug event
ds aArray PD C 1 Arrays/strings: generic, safe
ds avl PD C/C++ 2 AVL tree
ds bitset.hpp LGPL3 C++ 1 Compile time sided bit set for C++11 and beyond
ds c-bool-value WTFPLv2 C/C++ 1 Simple and easy boolean values in standard c
ds DG_dynarr.h PD C/C++ 1 typesafe dynamic arrays (like std::vector) for plain C
ds dynarr PD C 1 dynamic array container
ds DynaVar GPL-3.0 C++ 1 Object which can store any type of primitive data type
ds fector.hpp LGPL3 C++ 1 A fixed size std::vector like structure
ds fifo_declare.h LGPL2 C/C++ 1 Thread/core safe FIFO
ds itlib MIT C++ 1 several C++11 standard-contaner-like libraries and helpers
ds jhr_skip_list PD C++ 1 Skip Lists
ds jrsl PD C/C++ 1 Skip Lists
ds klib MIT C/C++ 2 many 2-file libs: hash, sort, b-tree, etc
ds libintrusive PD C 2 Intrusive data structures
ds libpqueue BSD C/C++ 2 priority queue (heap)
ds LinkedList MIT C/C++ 2 Linked list C++
ds lstr.h PD/MIT C 1 length-bounded strings
ds mempool MIT C++ 1 Efficient minimal memory pool implementation for C++
ds minilibs PD C 2 two-file binary tress (also regex, etc)
ds PackedArray WTFPLv2 C 2 memory-efficient array of elements with non-pow2 bitcount
ds px_mem.h MIT C++ 1 Safe memory managemnt constructs for C++
ds selist ISC C/C++ 2 space-efficient linked-list
ds simclist BSD C/C++ 2 linked-list
ds stb_ds PD C/C++ 1 typesafe dynamic array and hash tables for C, will compile in C++
ds trie.hpp LGPL3 C++ 1 A trie (prefix tree) implementation for C++11
ds uthash BSD C/C++ 2 several 1-header, 1-license-file libs: generic hash, list, etc
ecs pico_ecs.h PD/zlib C 1 Pure and simple ECS
engine FWK1 PD C 1 Game engine
engine olcPixelGameEngine BSD3 C++ 1 Game engine
eval mathe.h PD/MIT C 1 mathematical expression parsing
file DG_misc.h PD C/C++ 1 Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
file dirent MIT C/C++ 1 dirent for Windows: retrieve file & dir info
file tfile MIT C++ 1 FILE* wrapper does read-write-append-seek-close (Win/Mac/Unix)
file TinyDir BSD C 1 cross-platform directory reading (Win/POSIX/MinGW)
file tinyfiles zlib C/C++ 1 cross-platform directory reading (Win/Mac/Unix)
file whereami WTFPLv2 C/C++ 2 get path/filename of executable or module
font ssfn.h MIT C/C++ 1 scalable/bitmap/pixmap font renderer
font stb_easy_font PD C/C++ 1 quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc
font stb_truetype PD C/C++ 1 parse, decode, and rasterize characters from truetype fonts
game raycastlib.h CC0 + patent waiver C/C++ 1 advanced raycasting rendering library, pure C99 with no dependencies, only 32bit int math
game stb_connected_components PD C/C++ 1 incrementally compute reachability on grids
game stb_herringbone_wang_tile PD C/C++ 1 herringbone Wang tile map generator
game stb_tilemap_editor PD C/C++ 1 embeddable tilemap editor
hash hash.c PD C 2 SHA1/SHA3/MD5 hashes
hash lonesha256 PD C 1 SHA256 implementation
hash PicoSHA2 MIT C++ 1 SHA256 implementation
hash xxHash BSD C/C++ 2 fast hash function
image bitmap MIT C++ 1 Bitmap decoder and utilities
image cro_mipmap.h PD C/C++ 1 average, min, max mipmap generators
image framepacker MIT C++ 1 texture bin packing algorithm
image rjm_texbleed.h PD C/C++ 1 Fills in the color of pixels where alpha==0
image stb_image PD C/C++ 1 image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC
image stb_image_resize2 PD C/C++ 1 resize images larger/smaller with good quality
image stb_image_write PD C/C++ 1 image writing to disk: PNG, TGA, BMP
image stb_perlin PD C/C++ 1 perlin's revised simplex noise w/ different seeds
image stb_rect_pack PD C/C++ 1 simple 2D rectangle packer with decent quality
image tiffloader PD C 2 TIFF image loader
image EXR miniexr PD C++ 2 OpenEXR writer, needs header file
image EXR tinyexr BSD C/C++ 1 EXR image read/write, uses miniz internally
image GIF gif.h PD C++ 1 animated GIF writer (can only include once)
image GIF gif_load PD C/C++ 1 (animated) GIF reader
image GIF jo_gif.cpp PD C++ 1 animated GIF writer (CPP file can also be used as H file)
image JPG jpeg-compressor PD C++ 2 2-file JPEG compress, 2-file JPEG decompress
image JPG NanoJPEG MIT C/C++ 1 JPEG decoder
image JPG tiny_jpeg.h PD C/C++ 1 JPEG encoder
image JPG EXIF easyexif BSD2 C++ 2 EXIF metadata extractor for JPEG images
image JPG EXIF TinyEXIF BSD C++ 2 Parse EXIF data from JPEG (XMP w/ TinyXML2 lib)
image PDF PDFgen PD C 2 PDF writer
image PNG lodepng zlib C/C++ 2 PNG encoder/decoder
image PNG picopng.cpp zlib C++ 2 tiny PNG loader
image PNG TinyPngOutput LGPLv3 C/C++ 2 PNG writer
image PNM PNM Apache2 C++ 1 PBM, PGM and PPM reader and writer
image SVG nanoSVG zlib C/C++ 1 1-file SVG parser; 1-file SVG rasterizer
ini ini.h PD C/C++ 1 .ini file parser
ini inih BSD C/C++ 2 .ini file parser
json ajson Boost C++ 1 JSON serialize & deserialize w/ STL support
json cJSON MIT C/C++ 1 JSON parser
json cJSON MIT C/C++ 1 JSON parser
json jsmn MIT C 1 Minimalistic JSON parser
json json-build MIT C/C++ 1 JSON serializer
json json.h PD C/C++ 1 JSON parser
json json.hpp MIT C++ 1 JSON parse, serialize, deserialize
json jsonc MIT C 1 Fast JSON parser
json jsonc MIT C/C++ 1 extremely fast and extremely small (~60 SLoC) JSON parser
json jzon.h MIT C++ 2 JSON parser
json parson MIT C/C++ 2 JSON parser and serializer
json PicoJSON BSD C++ 1 JSON parse/serializer
json sjson BSD2 C 1 JSON encode/decoder
log pico_log.h PD/zlib C 1 Flexible logging framework
logic FFSM2 MIT C++ 1 flat FSM
logic HFSM2 MIT C++ 1 hierarchical FSM
math amoeba MIT C/C++ 1 constraint solver (Cassowary) w/Lua binding
math ceval-single-header MIT C/C++ 1 A single-header library for parsing and evaluation of arithmetic expressions
math Clipper Boost C++ 2 line & polygon clipping & offsetting
math Delaunay BSD3 C++ 2 2D and 3D Delaunay triangulation
math df PD C/C++ 1 find voronoi region in linear time of size of lattice
math dvector PD C 1 2D/3D vector/quaternion/matrix math library
math ExprTk MIT C++ 1 Runtime mathematical expression parser and evaluation engine.
math fft PD C++ 1 Fast Fourier Transform
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 jc_voronoi MIT C/C++ 1 find voronoi regions on float/double data
math linmath.h WTFPLv2 C 1 vector library
math m_math.h zlib C/C++ 1 math with C/OpenCL portability
math nanoflann BSD C++ 1 build KD trees for point clouds
math nv_voronoi.h PD C/C++ 1 find voronoi regions on lattice w/ integer inputs
math omm MIT C++ 1 Template open multi-methods
math OpenNL BSD3 C++ 2 linear and eigen solvers
math par_msquares MIT C/C++ 1 convert (binarized) image to triangles
math par_shapes MIT C/C++ 1 generate various 3d geometric shapes
math par_streamlines MIT C/C++ 1 tessellate wide lines and curves with shading attributes
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 PoissonGenerator.h MIT C++ 1 Poisson disk points generator (disk or rect)
math PolyPartition MIT C++ 2 polygon triangulation, partitioning
math precision PD C++ 3 Arbitrary-precision integer and rational arithmetic
math prns.h PD C/C++ 1 seekable pseudo-random number sequences
math rfft.h PD C/C++ 1 Fast Fourier Tranform for arbitrary array sizes
math rjm_mc.h PD C/C++ 1 marching cubes triangulator
math rnd.h PD C/C++ 1 pseudo-random number generation
math sdf.h MIT C/C++ 1 compute signed-distance field from antialiased image
math ShaderFastLibs MIT C++ 1 (also HLSL) approximate transcendental functions optimized for shaders (esp. GCN)
math simple_linear_regression MIT C/C++ 1 Simple linear regression
math simrank.hpp MIT C++ 2 SimRank graph similarity algorithm
math sobol.h PD C/C++ 1 sobol & stratified sampling sequences
math Statistics-Tool-Box PD C/C++ 1 Statistical functions
math stb_divide PD C/C++ 1 more useful 32-bit modulus
math SummedAreaTable MIT C++ 1 Summed-Area Table generation and sum/avg queries
math tiny-bignum-c PD C 2 Small portable multiple-precision unsigned integer arithmetic in C
math TinyExpr zlib C 2 evaluation of math expressions from strings
math Tomas Akenine-Moller snippets PD C/C++ 2 various 3D intersection calculations, not lib-ified
math vmath PD C 1 Vector/matrix library
math Voxelizer MIT C/C++ 1 convert triangle mesh to voxel triangle mesh
math xatlas MIT C++ 2 mesh parameterization
math yocto_bvh.h MIT C/C++ 1 ray-casting and closest-element queries of bounding-volume hierarchy
math yocto_shape.h MIT C/C++ 1 shape generation, tesselation, normals, etc.
mem buddy_alloc BSD0 C 1 buddy memory allocator
mem final_memory.h MIT C 1 heap memory handler
mem stb_leakcheck PD C/C++ 1 quick-and-dirty malloc/free leak-checking
mesh cgltf MIT C 1 glTF 2.0 file loader
mesh fast_obj.h MIT C 1 wavefront OBJ file loader
mesh m3d.h MIT C/C++ 1 Model 3D importer/exporter (with Blender, Goxel, WebGL JS and assimp integration)
mesh objzero MIT C 2 wavefront OBJ file loader
mesh qll_q3.h WTFPLv2 C++ 1 Quake3 BSP loader
mesh tinyobjloader-c MIT C 1 wavefront OBJ file loader
mesh tinyobjloader MIT C++ 1 wavefront OBJ file loader
mesh tinyply PD C++ 2 PLY mesh file loader
mesh tk_objfile MIT C/C++ 1 OBJ file loader
mesh yocto_obj.h MIT C/C++ 1 wavefront OBJ file loader
misc ASAP MIT C++ 1 library for parsing, printing, iterating and operating on dates.
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 cpp-generators BSD C++ 1 generators in C++
misc ebnn.h MIT C 1 BNN (Binarized Neural Networks)
misc h.h GPL3 C/C++ 1 Diverse utilities
misc Hedley PD C/C++ 1 compiler portability, optimization, static analysis, etc.
misc ll.h PD/MIT C 1 cross-platform library loading
misc MakeID.h PD C++ 1 allocate/deallocate small integer IDs efficiently
misc mmu MIT C 2 memory management and data structure toolset
misc openGA MPL-2.0 C++ 1 A C++ Generic Algorithm solver library
misc PlusCallback zlib C++ 1 function/method callbacks
misc process.h PD C/C++ 1 process control API
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 sili-toolchain PD C/C++ 1 C toolchain for modern C programming, strings, arrays, files, threading, ect
misc smallxrm.c PD C 2 Implementation of X resource manager
misc stb_include PD C/C++ 1 implement recursive #include support, particularly for GLSL
misc stmr MIT C 2 extract English word stems
misc x.h Mulan2 C/C++ 1 cross-platform C/C++ utilities
nav m_path_finding.h zlib C/C++ 1 floodfill-based path finding
nav micropather zlib C++ 2 pathfinding with A*
net civetweb MIT C/C++ 2 HTTP server, fork of Mongoose
net cpp-httplib MIT C/C++ 1 cross-platform HTTP server/client
net EWS BSD C/C++ 1 HTTP server
net happyhttp zlib C++ 2 HTTP client requests
net http PD C/C++ 1 HTTP get/post
net 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
net LUrlParser MIT C++ 2 lightweight URL & URI parser RFC 1738, RFC 3986
net mm_web.h BSD C/C++ 1 lightweight webserver, fork of webby
net mongoose GPLv2 C/C++ 2 HTTP server
net netq MIT C 1 Reliable datagram library
net par_easycurl.h MIT C/C++ 1 cURL wrapper
net simpletls.c PD C 2 Function to create a socket and connect to a remote server with TLS
net sts_net PD C/C++ 1 cross-platform socket wrapper (socket sets and packet API)
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
net yocto PD C/C++ 2 non-production-use HTTP server
net zed_net PD C/C++ 1 cross-platform socket wrapper
net znet MIT C/C++ 1 cross-platform networking w/ Lua binding
pack dmc_unrar GPLv2+ C/C++ 1 RAR file decompression
pack fastlz MIT C/C++ 2 fast but larger LZ compression
pack lz4 BSD C/C++ 2 fast but larger LZ compression
pack microtar MIT C/C++ 2 lightweight tar library
pack miniz.c MIT C/C++ 1 compression, decompression, ZIP file, PNG writing
pack nibrans PD C 1 adaptive rANS library
pack pithy BSD C/C++ 2 fast but larger LZ compression
pack rle MIT C 1 RLE library
pack rle MIT C 1+1 extremely simple run-length encoder/decoder
pack stb_dxt PD C/C++ 1 real-time DXT compressor
parse cmp MIT C/C++ 2 MessagePack parser and serializer
parse cpp-peglib MIT C/C++ 1 PEG (Parsing Expression Grammars) library
parse html-parse.c GPL C 2 HTML parser (wget)
parse minilibs PD C 2 two-file regex (also binary tree, etc)
parse mm_lexer.h zlib C/C++ 1 C-esque language lexer
parse SLRE GPLv2 C/C++ 1 regular expression matcher
parse stb_c_lexer PD C/C++ 1 simplify writing parsers for C-like languages
parse tinymemfile zlib C++ 1 fscanf on in-memory files
parse tok MIT C 1 Configurable tokenizer
parse tomlplusplus MIT C++ 1 TOML parser and serializer
parse udisasm MIT C/C++ 1 extremely small disassembler for ARMv8.2 AArch64 (~65k)
parse Unformat PD C++ 1 parses formatted strings (reverse of std::format)
prng random MIT C++ 1 convenient API for random
prng ranxoshi256 PD C 1 xoshiro256 algorithm
profile MicroProfile PD C++ 2-4 CPU (and GPU?) profiler, 1-3 header files, uses miniz internally
profile prof MIT C/C++ 1 profiler for Linux
profile Remotery Apache2 C/C++ 2 CPU/GPU profiler Win/Mac/Linux, using web browser for viewer
raster canvas_ity ISC C++ 1 2D rasterizer
script Duktape MIT C 2 embeddable JavaScript engine
script LIL zlib C/C++ 2 interpreter for a Tcl-like scripting language
script lualite MIT C++ 1 generate Lua bindings in C++
script MY-BASIC MIT C 2 interpreter for a BASIC dialect scripting language
script Picol BSD C/C++ 1 interpreter for a Tcl-like scripting language
script s7 BSD C/C++ 2 interpreter for a subset of Scheme (R5RS/R7RS)
script xpl WTFPLv2 C 1 X Programming Language
serial archive PD C++ 1 binary serialize & deserlize w/ STL support
serial blob_tree MIT C++ 1 Binary tree serializer
serial cista MIT C++ 1 cross-platform high performance zero copy C++17 serialization/deserialization
serial dt.h PD/MIT C 1 datatag serializer/deserializer (superset of JSON)
serial libcluon MPL-2.0 C++ 1 cross-platform data serialization/deserialization with native implementations for Protobuf, LCM/ZCM, JSON, and MsgPack
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
serial visit_struct Boost C++ 2 struct-field reflection
string csplit MIT C/C++ 1 String splitting and processing single-header library
string dfa MIT C/C++ 2 fast UTF-8 decoder (need a header file)
string DG_misc.h PD C/C++ 1 Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
string format.hpp LGPL3 C++ 1 dlang inspired typesafe string formatting
string gb_string.h PD C/C++ 1 dynamic strings
string ggformat ISC C++ 2 printf replacement
string inja.hpp MIT C++ 1 template engine
string levenshtein MIT C/C++ 2 compute edit distance between two strings
string Obfuscate PD C++ 1 Guaranteed compile-time string literal obfuscation library for C++14
string Str.h PD C++ 1 Simple C++ string type with an optional local buffer
string str BSD C 2 Yet another string library for C language
string str_view.hpp MIT C++ 1 null-termination-aware string-view class
string strpool.h PD C/C++ 1 string interning
string tiny-regex-c PD C 2 Small portable regex in C
string tiny-regex-mod PD C 1 Tiny regular expressions library
string tinyformat Boost C++ 1 typesafe printf
string utf8 PD C/C++ 1 UTF-8 string library
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 endianness.h PD C 1 endianness conversion and detection
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 rang PD C++ 1 cross-platform colored console text
sys xproc MIT C++ 2 Foreign Process Information
thread bikeshed.h MIT C/C++ 1 cross-platform lock free fixed memory hierarchical work scheduler
thread mm_sched.h zlib C/C++ 1 cross-platform multithreaded task scheduler based on enkiTS
thread px_sched.h MIT C++ 1 cross-platform task scheduler info
thread thread.h PD C/C++ 1 cross-platform thread primitives
thread TinyCThread zlib C/C++ 2 cross-platform implementation of the C11 Threads API
thread TinyThread++ zlib C++ 2 cross-platform implementation of the C++11 Threads API
time pico_time.h PD/zlib C 1 Time management library
time sokol_time.h MIT C/C++ 1 cross-platform time measurement
time tinytime zlib C/C++ 1 quick-and-dirty time elapsed time
ui dear imgui MIT C++ 9 an immediate-mode GUI formerly named "ImGui"; 3rd-party C wrapper
ui libcmdf PD C 1 a small library for writing CLI applications
ui linenoise BSD C/C++ 2 terminal readline w/ history etc
ui noc_file_dialog.h MIT C/C++ 1 file open/save dialogs (Win/Mac/Linux)
ui nuklear PD C/C++ 1 minimal GUI toolkit
ui stb_textedit PD C/C++ 1 guts of a text editor for games etc implementing them from scratch
ui tinyfiledialogs ZLIB C/C++ 2 modal dialogs inc. file open/save (Win/Mac/Linux)
ui wcwidth9 Apache2 C 1 platform independent wcwidth with full unicode 9 support
ui webview MIT C/C++ 1 cross-platform webview library
unit catch2 Boost C++ 1 unit testing
unit catch Boost C++ 1 unit testing
unit clove-unit MIT C 1 unit testing
unit doctest MIT C++ 1 unit testing
unit fctx BSD C/C++ 1 unit testing
unit greatest iSC C 1 unit testing
unit hippomocks LGPL C++ 1 unit testing
unit labrat PD C/C++ 1 unit testing
unit minctest zlib C 1 unit testing
unit munit MIT C 1 unit testing
unit pico_unit.h PD/zlib C 1 Unit testing framework
unit picotest MIT C/C++ 1 unit testing
unit Rexo PD C/C++ 1 framework for C89/C++ featuring automatic registration of tests and a polished API
unit SPUT BSD C/C++ 1 unit testing
unit test.h PD/MIT C 1 unit testing
unit trompeloeil Boost C++ 1 unit testing
unit utest.h PD C/C++ 1 unit testing
unit utest MIT C/C++ 1 unit testing
unit walter PD C 1 unit testing
vector algebra3.h PD C++ 1 vector utilities for 2, 3, and 4 element vectors, all inline
vector ccVector.h PD C/C++ 1 Vector, quaternion and matrix math
vector gb_math PD C/C++ 1 Vector, quaternion and matrix math w/o math.h
vector Handmade Math PD C/C++ 1 vector math
vector hypatia MIT C 1 vector/matrix/quaternion math
vector linalg.h PD C++ 1 vector/matrix/quaternion math
vector linalg ISC C/C++ 1 vector/matrix/quaternion math
vector mm_vec.h BSD C/C++ 1 SIMD vector math
video jo_mpeg / (converted to C) PD C/C++ 1 MPEG file writer
video pl_mpeg MIT C 1 MPEG1 video and audio decoder
xml final_xml.h MIT C 1 xml parser
xml pugixml MIT C++ 2 light-weight C++ XML processing library
xml tinyxml2 zlib C++ 2 simple, small, efficient, C++ XML parser
xml yxml MIT C 2 small, fast and correct XML parser
yaml mini-yaml MIT C++ 2 YAML parser and serializer

New libraries and corrections

We accept submissions for new libraries and corrections if information for a library above is wrong. Consider either opening a Pull Request, a new Issue or drop a message in our discord channel: https://discord.gg/2fZVEym The server is meant to be a pleasant space to chat about C, C++, Libs authoring and Game development specifically.

List FAQ

Can I link directly to this list?

Yes. For historical reasons, this is the preferred link.

Why isn't library XXX which is made of 3 or more files on this list?

We draw the line arbitrarily at 2 files at most. 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, we 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 we don't know about it, feel free to submit a pull request or issue (it can be your own library or somebody else's). But we might not include it for various other reasons, including subtleties of what is 'minimal other dependencies' and subtleties about what is 'lightweight'.

What are the differences between C, C++ and C/C++ in the API column?

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

Why are the LICENSING terms required in the header and source files?

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.

Why isn't SQLite's amalgamated build on this list?

Come on.