Skip to content

List of single-file C/C++ libraries, with emphasis on clause-less licenses.

Notifications You must be signed in to change notification settings

r-lyeh/single_file_libs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Single-file 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. However, I 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 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.

Other lists

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)

Library listing

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

tag library license API files description
2d blendish MIT C/C++ 1 blender-style widget rendering using NanoVG
2d Cimg CeCILL/CeCILL-C C++ 1 image processing toolkit (60K LoC)
2d Immediate2D public domain C++ 2 zero-configuration, immediate-mode 2D graphics for Windows
2d noc_turtle MIT C/C++ 2 procedural graphics generator
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 tigr public domain 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
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 debug-draw public domain C++ 1 API-agnostic immediate-mode debug rendering
3d mikktspace zlib C/C++ 2 compute tangent space for normal mapping
3d px_render.h MIT C++ 1 cross-platform, Multithreaded, command based, 3D render API (GL/GLES) info
3d rjm_raytrace.h public domain C/C++ 1 minimalistic SSE packet raytracer for offline baking
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 Swarmz public domain C++ 1 swarming/flocking algorithm
3d tinygizmo public domain C++ 2 gizmo objects for interactively editing 3d transformations
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
3d model3d MIT C 1 3D model format specification
3d lightmapper public domain C/C++ 1 use your OpenGL renderer to offline bake lightmaps
3d seamoptimizer public domain C/C++ 1 modify lightmap data to hide seams
3d Vertex Cache Optimizer public domain C/C++ 1 vertex cache optimization of meshes
3d Simple OpenGL Loader MIT C/C++ 1 extensible, cross-platform OpenGL loader
AI Genann zlib C/C++ 2 simple neural networks (ANN)
AI KANN MIT C/C++ 2 automatic differentiation (2 files)
AI micropather zlib C++ 2 pathfinding with A*
argv Argh! BSD C++ 1 command-line argument parsing
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 public domain 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 public domain C 2 command-line argument parsing
argv ProgramOptions.hxx MIT C++ 1 command-line argument parsing
audio aw_ima.h MIT C/C++ 1 IMA-ADPCM audio decoder
audio btac1c MIT C/C++ 1 MS-IMA_ADPCM variant
audio Geneva MIT C/C++ 1 Library generating 8-bit waveforms of various kinds
audio minimp3 CC0 C 1 Minimalistic MP3 decoder with sse/neon support
audio pocketmod MIT C/C++ 1 ProTracker MOD file renderer
audio tinysound zlib C/C++ 1 direct sound audio mixer & WAV loader
audio TinySoundFont MIT C/C++ 1 SoundFont2 loader & synthesizer
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
audio dr_flac public domain C/C++ 1 FLAC audio decoder
audio dr_wav public domain C/C++ 1 WAV audio loader
audio miniaudio public domain C/C++ 1 Audio playback and capture library
audio sts_mixer public domain C/C++ 1 simple stereo audio mixer
b64 pico_b64.h PD/zlib C 1 Base64 en/decoder
crypt ggentropy ISC C++ 2 cross platform entropy library
crypt Monocypher public domain C 2 high-quality small cryptography library
crypt TweetNaCl public domain C 2 high-quality tiny 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
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 public domain C++ 1 flexible logging
debug pempek_assert.cpp WTFPLv2 C++ 2 flexible assertions
ds avl public domain 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 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 itlib MIT C++ 1 several C++11 standard-contaner-like libraries and helpers
ds klib MIT C/C++ 2 many 2-file libs: hash, sort, b-tree, etc
ds libpqueue BSD C/C++ 2 priority queue (heap)
ds LinkedList MIT C/C++ 2 Linked list C++
ds mempool MIT C++ 1 Efficient minimal memory pool implementation for C++
ds minilibs public domain 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 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
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
ds aArray public domain C 1 Arrays/strings: generic, safe
ds DG_dynarr.h public domain C/C++ 1 typesafe dynamic arrays (like std::vector) for plain C
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
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
file DG_misc.h public domain C/C++ 1 Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
game raycastlib.h CC0 + patent waiver C/C++ 1 advanced raycasting rendering library, pure C99 with no dependencies, only 32bit int math
game app.h public domain C/C++ 1 Windows-only-but-meant-to-be-cross-platform game-ish framework
gl final_dynamic_opengl.h MIT C 1 opengl loader
gui webview MIT C/C++ 1 cross-platform webview library
hash xxHash BSD C/C++ 2 fast hash function
hash hash.c PD C 2 SHA1/SHA3/MD5 hashes
hash lonesha256 PD C 1 SHA256 implementation
hash PicoSHA2 MIT C++ 1 SHA256 implementation
hw libue MIT C/C++ 1 Helper library for Linux device hot-plug event
hw EasyTab public domain C/C++ 1 multi-platform tablet input
image rjm_texbleed.h public domain C/C++ 1 Fills in the color of pixels where alpha==0
image EXR miniexr public domain C++ 2 OpenEXR writer, needs header file
image EXR tinyexr BSD C/C++ 1 EXR image read/write, uses miniz internally
image GIF gif_load public domain C/C++ 1 (animated) GIF reader
image GIF gif.h public domain C++ 1 animated GIF writer (can only include once)
image GIF jo_gif.cpp public domain C++ 1 animated GIF writer (CPP file can also be used as H file)
image JPG tiny_jpeg.h public domain C/C++ 1 JPEG encoder
image JPG jpeg-compressor public domain C++ 2 2-file JPEG compress, 2-file JPEG decompress
image JPG NanoJPEG MIT C/C++ 1 JPEG decoder
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 public domain 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 Apache 2.0 C++ 1 PBM, PGM and PPM reader and writer
image SVG nanoSVG zlib C/C++ 1 1-file SVG parser; 1-file SVG rasterizer
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
image cro_mipmap.h public domain C/C++ 1 average, min, max mipmap generators
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 json-build MIT C/C++ 1 JSON serializer
json json.h public domain C/C++ 1 JSON parser
json json.hpp MIT C++ 1 JSON parse, serialize, deserialize
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 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
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 ExprTk MIT C++ 1 Runtime mathematical expression parser and evaluation engine.
math fft public domain C++ 1 Fast Fourier Transform
math jc_voronoi MIT C/C++ 1 find voronoi regions on float/double data
math nanoflann BSD C++ 1 build KD trees for point clouds
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 PoissonGenerator.h MIT C++ 1 Poisson disk points generator (disk or rect)
math PolyPartition MIT C++ 2 polygon triangulation, partitioning
math prns.h public domain C/C++ 1 seekable pseudo-random number sequences
math rfft.h public domain C/C++ 1 Fast Fourier Tranform for arbitrary array sizes
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 simrank.hpp MIT C++ 2 SimRank graph similarity algorithm
math SummedAreaTable MIT C++ 1 Summed-Area Table generation and sum/avg queries
math TinyExpr zlib C 2 evaluation of math expressions from strings
math Tomas Akenine-Moller snippets public domain C/C++ 2 various 3D intersection calculations, not lib-ified
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.
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
math df public domain C/C++ 1 find voronoi region in linear time of size of lattice
math nv_voronoi.h public domain C/C++ 1 find voronoi regions on lattice w/ integer inputs
math rjm_mc.h public domain C/C++ 1 marching cubes triangulator
math rnd.h public domain C/C++ 1 pseudo-random number generation
math sobol.h public domain C/C++ 1 sobol & stratified sampling sequences
mem buddy_alloc BSD0 C 1 buddy memory allocator
mem final_memory.h MIT C 1 heap memory handler
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 public domain 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 benchmark.hpp LGPL3 C++ 1 micro benchmark library for C++11 and beyond
misc cpp-generators BSD C++ 1 generators in C++
misc endianness.h public domain C 1 endianness conversion and detection
misc format.hpp LGPL3 C++ 1 dlang inspired typesafe string formatting
misc ggformat ISC C++ 2 printf replacement
misc Hedley public domain C/C++ 1 compiler portability, optimization, static analysis, etc.
misc levenshtein MIT C/C++ 2 compute edit distance between two strings
misc MakeID.h public domain C++ 1 allocate/deallocate small integer IDs efficiently
misc openGA MPL-2.0 C++ 1 A C++ Generic Algorithm solver library
misc picobench MIT C++ 1 microbenchmarking
misc PlusCallback zlib C++ 1 function/method callbacks
misc random MIT C++ 1 convenient API for random
misc RGFW zlib C/C++ 1 A multi-platform single-header user-friendly GUI framework as an alternative to GLFW
misc sili-toolchain public domain C/C++ 1 C toolchain for modern C programming, strings, arrays, files, threading, ect
misc sokol_time.h MIT C/C++ 1 cross-platform time measurement
misc stmr MIT C 2 extract English word stems
misc tinyformat Boost C++ 1 typesafe printf
misc tinytime zlib C/C++ 1 quick-and-dirty time elapsed time
misc visit_struct Boost C++ 2 struct-field reflection
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
misc process.h public domain C/C++ 1 process control API
misc ubench.h public domain C/C++ 1 microbenchmarking
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 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 par_easycurl.h MIT C/C++ 1 cURL wrapper
net yocto public domain C/C++ 2 non-production-use HTTP server
net znet MIT C/C++ 1 cross-platform networking w/ Lua binding
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
net http public domain C/C++ 1 HTTP get/post
net sts_net public domain C/C++ 1 cross-platform socket wrapper (socket sets and packet API)
net zed_net public domain C/C++ 1 cross-platform socket wrapper
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 pithy BSD C/C++ 2 fast but larger LZ compression
pack rle MIT C 1+1 extremely simple run-length encoder/decoder
pack nibrans PD C 1 adaptive rANS library
pack rle MIT C 1 RLE library
pack miniz.c MIT C/C++ 1 compression, decompression, ZIP file, PNG writing
parse cmp MIT C/C++ 2 MessagePack parser and serializer
parse cpp-peglib MIT C/C++ 1 PEG (Parsing Expression Grammars) library
parse inih BSD C/C++ 2 .ini file parser
parse minilibs public domain 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 tinymemfile zlib C++ 1 fscanf on in-memory files
parse udisasm MIT C/C++ 1 extremely small disassembler for ARMv8.2 AArch64 (~65k)
parse Unformat public domain C++ 1 parses formatted strings (reverse of std::format)
parse ini.h public domain C/C++ 1 .ini file parser
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
profile MicroProfile public domain 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 Apache 2.0 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 public domain C++ 1 binary serialize & deserlize w/ STL support
serial cista MIT C++ 1 cross-platform high performance zero copy C++17 serialization/deserialization
serial libcluon MPL-2.0 C++ 1 cross-platform data serialization/deserialization with native implementations for Protobuf, LCM/ZCM, JSON, and MsgPack
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
string dfa MIT C/C++ 2 fast UTF-8 decoder (need a header file)
string inja.hpp MIT C++ 1 template engine
string Obfuscate public domain C++ 1 Guaranteed compile-time string literal obfuscation library for C++14
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 csplit MIT C/C++ 1 String splitting and processing single-header library
string DG_misc.h public domain C/C++ 1 Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
string gb_string.h public domain C/C++ 1 dynamic strings
string Str.h public domain C++ 1 Simple C++ string type with an optional local buffer
string strpool.h public domain C/C++ 1 string interning
string utf8 public domain 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 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 catch2 Boost C++ 1 unit testing
test catch Boost C++ 1 unit testing
test clove-unit MIT C 1 unit testing
test doctest MIT C++ 1 unit testing
test fctx BSD C/C++ 1 unit testing
test greatest iSC C 1 unit testing
test hippomocks LGPL C++ 1 unit testing
test minctest zlib C 1 unit testing
test munit MIT C 1 unit testing
test picotest MIT C/C++ 1 unit testing
test SPUT BSD C/C++ 1 unit testing
test trompeloeil Boost C++ 1 unit testing
test utest MIT C/C++ 1 unit testing
test test.h PD/MIT C 1 unit testing
test labrat public domain C/C++ 1 unit testing
test Rexo public domain C/C++ 1 framework for C89/C++ featuring automatic registration of tests and a polished API
test utest.h public domain C/C++ 1 unit testing
test walter public domain C 1 unit testing
text 2d rang public domain C++ 1 cross-platform colored console text
text 2d ssfn.h MIT C/C++ 1 scalable/bitmap/pixmap font renderer
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 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
thread thread.h public domain C/C++ 1 cross-platform thread primitives
time pico_time.h PD/zlib C 1 Time management library
ui dear imgui MIT C++ 9 an immediate-mode GUI formerly named "ImGui"; 3rd-party C wrapper
ui libcmdf public domain 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 public domain C/C++ 1 minimal GUI toolkit
ui tinyfiledialogs ZLIB C/C++ 2 modal dialogs inc. file open/save (Win/Mac/Linux)
ui wcwidth9 Apache 2.0 C 1 platform independent wcwidth with full unicode 9 support
unit pico_unit.h PD/zlib C 1 Unit testing framework
vector algebra3.h public domain C++ 1 vector utilities for 2, 3, and 4 element vectors, all inline
vector hypatia MIT C 1 vector/matrix/quaternion math
vector linalg.h public domain 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
vector ccVector.h public domain C/C++ 1 Vector, quaternion and matrix math
vector gb_math public domain C/C++ 1 Vector, quaternion and matrix math w/o math.h
vector Handmade Math public domain C/C++ 1 vector math
video jo_mpeg / (converted to C) public domain 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

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.

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?

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 or issue (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.

About

List of single-file C/C++ libraries, with emphasis on clause-less licenses.

Resources

Stars

Watchers

Forks