├── .github ├── ISSUE_TEMPLATE │ └── suggestion.md ├── discord │ └── pERJIwmVpy4BbYiry8MJ--0--07avm.jpg └── pull_request_template.md └── README.md /.github/ISSUE_TEMPLATE/suggestion.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Suggestion 3 | about: Suggest a library for this project 4 | title: "[SUGGESTION]" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Please include: 11 | - Link to the library. 12 | - License(s): PD/MIT0/0BSD/CC0 are preferred. Multi-licensed is even better. 13 | - Kind: C, C++, or both C/C++. 14 | - Number of files: 1 is preferred. 2 is acceptable. +3 are debatable. 15 | - Brief description so it fits our tight table listing (ideally around 6 words max). 16 | 17 | Remember the rules: 18 | - Libraries must be usable from C or C++, ideally both. 19 | - Libraries must include the licensing terms in the header and source files. 20 | - Libraries should be usable from more than one platform (ideally, all major desktops and/or all major mobile). 21 | - Libraries should compile and work on both 32-bit and 64-bit platforms. 22 | - Libraries should use at most two files (one header, one source): more than two files are mostly forbidden. 23 | 24 | **Please consider postponing the PR if the submission does not guarantee most of the conditions above.** 25 | 26 | You can also chat/discuss about C/C++ and Game development in our discord channel: https://discord.gg/2fZVEym 27 | The server is meant to be a pleasant space to chat about C, C++, Libs authoring and Game development specifically. 28 | -------------------------------------------------------------------------------- /.github/discord/pERJIwmVpy4BbYiry8MJ--0--07avm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-lyeh/single_file_libs/9964f3ca2fb42c4d3d96d244fa922d89eaef41c1/.github/discord/pERJIwmVpy4BbYiry8MJ--0--07avm.jpg -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | Remember the rules: 2 | - Libraries must be usable from C or C++, ideally both (C/C++). 3 | - Libraries must include the licensing terms in the header and source files: PD/MIT0/0BSD/CC0 are preferred. Multi-licensed is even better. 4 | - Libraries should compile and work on both 32-bit and 64-bit platforms. 5 | - Libraries should be usable from more than one platform (ideally, all major desktops and/or all major mobile). 6 | - Libraries should use at most two files (one header, one source): more than two files are mostly forbidden but still debatable. 7 | 8 | **Please consider postponing the PR if the submission does not guarantee most of the conditions above.** 9 | 10 | You can also chat/discuss about C/C++ and Game development in our discord channel: https://discord.gg/2fZVEym 11 | The server is meant to be a pleasant space to chat about C, C++, Libs authoring and Game development specifically. 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Discord
3 |

4 | C/C++ open-source libraries with minimal dependencies 5 |

6 |

7 | 8 | Generally, the following is a list of small, easy-to-integrate, portable libraries 9 | which are usable from C and/or C++, and should be able to be compiled on both 10 | 32-bit and 64-bit platforms. There is preference for libraries that are C, public domain and single-file. 11 | However, we have not personally verified that any specific library is as advertised, or is quality software. 12 | 13 | ### New libraries and corrections 14 | 15 | We accept submissions for new libraries and corrections if information for a library below is wrong. 16 | Consider either opening a Pull Request, a new Issue or drop a message in our discord channel: https://discord.gg/2fZVEym 17 | The server is meant to be a pleasant space to chat about C, C++, Libs authoring and Game development specifically. 18 | 19 | ### Rules 20 | 21 | - Libraries must be usable from C or C++, ideally both. 22 | - Libraries must include the licensing terms in the header and source files. 23 | - Libraries should be usable from more than one platform (ideally, all major desktops and/or all major mobile). 24 | - Libraries should compile and work on both 32-bit and 64-bit platforms. 25 | - Libraries should use at most two files (one header, one source): more than two files are mostly forbidden. 26 | 27 | Exceptions will be allowed for good reasons. 28 | 29 | ### Other lists 30 | 31 | Also you might be interested in other related, but different lists: 32 | 33 | - [**STB**](https://github.com/nothings/stb): the mighty collection of gamedev utils. 34 | - [clib](https://github.com/clibs/clib/wiki/Packages): list of (mostly) small single C functions (licenses not listed) 35 | - [CCAN](https://ccodearchive.net/list.html): package of lots of shareable C functions (mixed licenses) 36 | - And some more: 37 | [**andrewwillmott**](https://github.com/andrewwillmott?tab=repositories&q=&type=source&language=&sort=), 38 | [b-library (C,C++)](https://github.com/blat-blatnik/B-Library), 39 | [blastbay](https://github.com/blastbay?tab=repositories&q=&type=source&language=c&sort=), 40 | [chobo-shl (C++)](https://github.com/Chobolabs/chobo-shl), 41 | [clibs](https://github.com/ennorehling/clibs), 42 | [containers (C++)](https://github.com/JCash/containers), 43 | [cpp-poc (C++)](https://github.com/xdbr/cpp-poc), 44 | [**cute_headers** (C,C++)](https://github.com/RandyGaul/cute_headers), 45 | [data-structures-c](https://github.com/bartobri/data-structures-c), 46 | [**dr_libs**](https://github.com/mackron/dr_libs), 47 | [dyeo.h](https://github.com/dyeo/dyeo.h), 48 | [emilib (C++)](https://github.com/emilk/emilib), 49 | [final_game_tech (C,C++)](https://github.com/f1nalspace/final_game_tech), 50 | [ftg_toolbox_public](https://github.com/frogtoss/ftg_toolbox_public), 51 | [**gb**](https://github.com/gingerBill/gb), 52 | [gl-helpers (C,C++)](https://github.com/Flix01/Header-Only-GL-Helpers), 53 | [ijhandlealloc](https://github.com/incrediblejr/ijhandlealloc), 54 | [jar](https://github.com/kd7tck/jar), 55 | [**jo**](https://jonolick.com/code.html), 56 | [kj](https://github.com/AfroDave/kj), 57 | [**klib**](https://github.com/attractivechaos/klib), 58 | [**kokke**](https://github.com/kokke?tab=repositories&q=&type=source&language=c&sort=), 59 | [libjrc](https://github.com/SmileTheory/libjrc), 60 | [**libs**](https://github.com/mattiasgustavsson/libs), 61 | [libs](https://github.com/bullno1/libs), 62 | [live_edit](https://github.com/azmr/live_edit), 63 | [maratis](https://github.com/anael-seghezzi/Maratis-Tiny-C-library), 64 | [**minilibs**](https://github.com/ccxvii/minilibs), 65 | [miscsrc](https://github.com/wernsey/miscsrc), 66 | [**mmx**](https://github.com/vurtun/mmx), 67 | [**nflibs**](https://github.com/niklasfrykholm/nflibs), 68 | [noc](https://github.com/guillaumechereau/noc), 69 | [ok-**fm**](https://github.com/brackeen/ok-file-formats), 70 | [ok-**lib**](https://github.com/brackeen/ok-lib), 71 | [**par**](https://github.com/prideout/par), 72 | [pico_headers](https://github.com/empyreanx/pico_headers), 73 | [portable-snippets](https://github.com/nemequ/portable-snippets), 74 | [px (C++)](https://github.com/pplux/px), 75 | [rjm](https://github.com/rmitton/rjm), 76 | [**rxi**](https://github.com/rxi?tab=repositories&q=&type=source&language=c&sort=), 77 | [shadertoolkit](https://github.com/jarikomppa/shadertoolkit), 78 | [single-header-file-c-libs](https://github.com/arkanis/single-header-file-c-libs), 79 | [**skeeto**](https://github.com/skeeto/scratch/tree/master/misc), 80 | [slibs](https://github.com/yui0/slibs), 81 | [snippets](https://github.com/blat-blatnik/Snippets), 82 | [snippets](https://github.com/DanielGibson/Snippets), 83 | [**sokol**](https://github.com/floooh/sokol), 84 | [statvs (C++)](https://github.com/r-lyeh-archived/statvs), 85 | [sts](https://github.com/kieselsteini/sts), 86 | [**sweet** (C++)](https://github.com/burner/sweet.hpp), 87 | [tinybits (C,C++)](https://github.com/r-lyeh/tinybits), 88 | [**tm**](https://github.com/to-miz/tm), 89 | [utl (C++)](https://github.com/DmitriBogdanov/UTL), 90 | [yocto-gl (C++)](https://github.com/xelatihy/yocto-gl), 91 | [zero](https://github.com/christophercrouzet/zero), 92 | [zeroTolerance](https://github.com/jharler/ZeroTolerance), 93 | [zheaders](https://github.com/Zguy/ZHeaders), 94 | [**zpl**](https://github.com/zpl-c/zpl), 95 | 96 | ### Main listing 97 | 98 | Single-header C files with clause-less licenses are highlighted. 99 | 100 | |tag | library | description 101 | |:-------:|:---------|:----------------- 102 | *2d* |[Blendish](https://hg.sr.ht/~duangle/oui-blendish) (1 C, MIT) |Blender-style widget rendering using NanoVG 103 | *2d* |[C-Turtle](https://github.com/walkerje/C-Turtle) (1 C++, MIT) |Port of Python's Turtle to C++ 104 | *2d* |[Cgl](https://github.com/Jaysmito101/cgl) (2 C, MIT) |C Game Library 105 | *2d* |[Cimg](https://cimg.eu/) (1 C++, CeCILL) |Image processing toolkit (60K LoC) 106 | *2d* |[Colourblind](https://github.com/azmr/colourblind) (1 C, ISC) |Simulating colourblindness 107 | *2d* |[Daisy](https://github.com/sse2/daisy) (1 C++, MIT) |2D Graphics and text 108 | *2d* |[GlyType](https://github.com/gamelly/gly-type) (1, C, WTFPL2) |Ultra lightweight font renderer 109 | *2d* |[Immediate2D](https://github.com/npiegdon/immediate2d) (2 C++, PD) |Zero-configuration, immediate-mode 2D graphics for Windows 110 | *2d* |[M_image.h](https://github.com/anael-seghezzi/Maratis-Tiny-C-library/blob/master/include/m_image.h) (1 C, ZLIB) |Image processing routines 111 | *2d* |[RFont](https://github.com/ColleagueRiley/RFont) (1 C, ZLIB) |Simple-to-use lightweight single header modular font rendering library 112 | *2d* |[RGL](https://github.com/ColleagueRiley/RGL) (1 C, ZLIB) |Simple ultra-lightweight OpenGL version abstraction based on RLGL (pipeline system) 113 | *2d* |[Scalable-font2](https://gitlab.com/bztsrc/scalable-font2) (1 C, MIT) |Scalable Font renderer + specification 114 | *2d* |[Si_normalmap](https://github.com/Sir-Irk/si_normalmap) **(1 C, PD)** |**Image to Normal Map generator** 115 | *2d* |[Tigr](https://github.com/erkkah/tigr) (2 C, PD) |Windowing, text and graphics for Windows, Linux and macOS 116 | *2d* |[Wfc](https://github.com/krychu/wfc) (1 C, MIT) |Generate image locally similar to the input image using WFC algorithm 117 | *3d* |[Debug-draw](https://github.com/glampert/debug-draw) (1 C++, PD) |API-agnostic immediate-mode debug rendering 118 | *3d* |[Lightmapper](https://github.com/ands/lightmapper#lightmapper) **(1 C, PD)** |**Use your OpenGL renderer to offline bake lightmaps** 119 | *3d* |[Mikktspace](https://developer.blender.org/diffusion/B/browse/master/intern/mikktspace) (2 C, ZLIB) |Compute tangent space for normal mapping 120 | *3d* |[Model3d](https://gitlab.com/bztsrc/model3d) (1 C, MIT) |3D model format specification 121 | *3d* |[Seamoptimizer](https://github.com/ands/seamoptimizer) **(1 C, PD)** |**Modify lightmap data to hide seams** 122 | *3d* |[Simple OpenGL Loader](https://github.com/tsherif/simple-opengl-loader) (1 C, MIT) |Extensible, cross-platform OpenGL loader 123 | *3d* |[Small3dlib](https://gitlab.com/drummyfish/small3dlib) **(1 C, CC0)** |**Fast and portable software renderer** 124 | *3d* |[Stb_voxel_render](https://github.com/nothings/stb/blob/master/stb_voxel_render.h) **(1 C, PD)** |**Minecraft-esque voxel rendering "engine" with many more features** 125 | *3d* |[Swarmz](https://github.com/Cultrarius/Swarmz) (1 C++, PD) |Swarming/flocking algorithm 126 | *3d* |[Tinygizmo](https://github.com/ddiakopoulos/tinygizmo) (2 C++, PD) |Gizmo objects for interactively editing 3d transformations 127 | *3d* |[Vertex Cache Optimizer](https://github.com/Sigkill79/sts) **(1 C, PD)** |**Vertex cache optimization of meshes** 128 | *3d* |[Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) (1 C, MIT) |Memory allocator for Vulkan 129 | *ai* |[Genann](https://github.com/codeplea/genann) (2 C, ZLIB) |Simple neural networks (ANN) 130 | *ai* |[KANN](https://github.com/attractivechaos/kann) (2 C, MIT) |Automatic differentiation (2 files) 131 | *app* |[RGFW](https://github.com/ColleagueRiley/RGFW) (1 C, ZLIB) |A multi-platform single-header user-friendly GUI framework as an alternative to GLFW 132 | *argv* |[Argh!](https://github.com/adishavit/argh) (1 C++, BSD) |Command-line argument parsing 133 | *argv* |[Clara](https://github.com/catchorg/Clara) (1 C++, BOOST) |Composable, command line parser for C++ 11 and beyond 134 | *argv* |[CLI11](https://github.com/CLIUtils/CLI11) (1 C++, BSD) |Feature-rich CLI parsing in modern C++11 135 | *argv* |[Cmdline](https://github.com/tanakh/cmdline) (1 C++, BSD) |Command-line argument parsing 136 | *argv* |[Flags](https://github.com/sailormoon/flags) (1 C++, PD) |Command-line argument parsing 137 | *argv* |[Kgflags](https://github.com/kgabis/kgflags) (1 C, MIT) |Command-line argument parsing 138 | *argv* |[Linkom](https://github.com/hernandp/linkom) (1 C, MIT) |Command-line argument parsing w/ DOS-style options 139 | *argv* |[Optionparser](https://optionparser.sourceforge.net/) (1 C++, MIT) |Command-line argument parsing 140 | *argv* |[Parg](https://github.com/jibsen/parg) (2 C, PD) |Command-line argument parsing 141 | *argv* |[ProgramOptions.hxx](https://github.com/Fytch/ProgramOptions.hxx) (1 C++, MIT) |Command-line argument parsing 142 | *asm* |[Chasm](https://github.com/aqilc/chasm) (2 C, PD) |Runtime X64 assembler 143 | *audio* |[Atomix](https://github.com/BareRose/atomix) **(1 C, PD)** |**Wait-free atomic sound mixer** 144 | *audio* |[Aw_ima.h](https://github.com/afterwise/aw-ima/blob/master/aw-ima.h) (1 C, MIT) |IMA-ADPCM audio decoder 145 | *audio* |[Btac1c](https://github.com/cr88192/bgbtech_misc/blob/master/mini/btac1c_mini0.h) (1 C, MIT) |MS-IMA_ADPCM variant 146 | *audio* |[Chibi-xmplay](https://github.com/reduz/chibi-xmplay) (2 C, BSD3) |XM module playback library 147 | *audio* |[Geneva](https://github.com/KrzysztofSzewczyk/Geneva) (1 C, MIT) |Library generating 8-bit waveforms of various kinds 148 | *audio* |[Miniaudio](https://github.com/mackron/miniaudio) (2 C, PD) |Audio playback and capture library 149 | *audio* |[Miniflac](https://github.com/jprjr/miniflac) **(1 C, BSD0)** |**FLAC decoder with a push-style API** 150 | *audio* |[Minimp3](https://github.com/lieff/minimp3) **(1 C, CC0)** |**Minimalistic MP3 decoder with sse/neon support** 151 | *audio* |[MojoAL](https://github.com/icculus/mojoAL) (1 C, ZLIB) |Full OpenAL 1.1 implementation 152 | *audio* |[Nanoalsa](https://gitlab.com/bztsrc/nanoalsa) (1 C, MIT) |Tiny PCM playback under Linux 153 | *audio* |[Pocketmod](https://github.com/rombankzero/pocketmod) (1 C, MIT) |ProTracker MOD file renderer 154 | *audio* |[Stb_hexwave](https://github.com/nothings/stb/blob/master/stb_hexwave.h) **(1 C, PD)** |**Audio waveform synthesizer** 155 | *audio* |[Stb_vorbis](https://github.com/nothings/stb/blob/master/stb_vorbis.c) **(1 C, PD)** |**Decode ogg vorbis files from file/memory to float/16-bit signed output** 156 | *audio* |[Tflac](https://github.com/jprjr/tflac) **(1 C, BSD0)** |**Freestanding FLAC encoding library in C89** 157 | *audio* |[Organya.h](https://github.com/Strultz/organya.h) **(1 C, BSD0)** |**Organya/OrgMaker music renderer** 158 | *audio* |[TinySoundFont](https://github.com/schellingb/TinySoundFont) (1 C, MIT) |SoundFont2 loader & synthesizer 159 | *bench* |[Picobench](https://github.com/iboB/picobench) (1 C++, MIT) |Microbenchmarking 160 | *bench* |[Ubench.h](https://github.com/sheredom/ubench.h) **(1 C, PD)** |**Microbenchmarking** 161 | *c* |[Errnoname](https://github.com/mentalisttraceur/errnoname) (2 C, BSD0) |Extended errno messages 162 | *c* |[Minicoro](https://github.com/edubart/minicoro/) **(1 C, PD-0MIT)** |**Stackful cross-platform coroutine library** 163 | *c* |[Stb_sprintf](https://github.com/nothings/stb/blob/master/stb_sprintf.h) **(1 C, PD)** |**Fast sprintf, snprintf for C/C++** 164 | *cpp* |[Filesystem](https://github.com/gulrak/filesystem) (1 C++, MIT) |Implementation of std::filesystem 165 | *cpp* |[Outcome](https://github.com/ned14/outcome/tree/develop/single-header) (1 C++, APACHE2-BOOST) |Outcome and result C++ containers 166 | *crypt* |[Ggentropy](https://github.com/mikejsavage/ggentropy) (2 C++, ISC) |Cross platform entropy library 167 | *crypt* |[Monocypher](https://monocypher.org) (2 C, PD) |High-quality small cryptography library 168 | *crypt* |[Random3](https://github.com/MichelPaulissen/random3) **(1 C, PD)** |**Crypt-random generator** 169 | *crypt* |[TweetNaCl](https://tweetnacl.cr.yp.to/software.html) (2 C, PD) |High-quality tiny cryptography library 170 | *csv* |[CSVstream](https://github.com/awdeorio/csvstream/) (1 C++, MIT) |CSV parser 171 | *csv* |[Fast C++ CSV Parser](https://github.com/ben-strasser/fast-cpp-csv-parser) (1 C++, BSD) |CSV parser 172 | *csv* |[Rapidcsv](https://github.com/d99kris/rapidcsv/) (1 C++, BSD) |CSV parser 173 | *csv* |[Vince's CSV Parser](https://github.com/vincentlaucsb/csv-parser) (1 C++, MIT) |CSV parser and serializer 174 | *date* |[Date](https://github.com/HowardHinnant/date) (1 C++, MIT) |Date and time libraries 175 | *debug* |[B_stacktrace](https://github.com/iboB/b_stacktrace) (1 C, MIT) |Stack tracing 176 | *debug* |[Dbgtools](https://github.com/wc-duck/dbgtools) (2 C, ZLIB) |Cross-platform debug util libraries 177 | *debug* |[Debug-assert](https://github.com/foonathan/debug_assert) (1 C++, ZLIB) |Modular assertion macro 178 | *debug* |[Debugbreak](https://github.com/scottt/debugbreak) (1 C, BSD) |Programmatic debug break 179 | *debug* |[Loguru](https://github.com/emilk/loguru) (1 C++, PD) |Flexible logging 180 | *debug* |[Pempek_assert.cpp](https://github.com/gpakosz/Assert) (2 C++, WTFPL2) |Flexible assertions 181 | *dev* |[Libue](https://github.com/houqp/libue) (1 C, MIT) |Helper library for Linux device hot-plug event 182 | *ds* |[AArray](https://tse.gratis/aArray/) **(1 C, PD)** |**Arrays/strings: generic, safe** 183 | *ds* |[Avl](https://github.com/etherealvisage/avl) (2 C, PD) |AVL tree 184 | *ds* |[Cds_algo](https://github.com/cdwfs/algo) **(1 C, PD)** |**Collection of data structures (queue, stack, graph, heap...)** 185 | *ds* |[Convenient Containers](https://github.com/JacksonAllan/CC) (1 C, MIT) |Typesafe data structures (vector, list, map, set, string, etc.) with a fully generic API and no boilerplate 186 | *ds* |[DG_dynarr.h](https://github.com/DanielGibson/Snippets/) **(1 C, PD)** |**Typesafe dynamic arrays (like std::vector) for plain C** 187 | *ds* |[Dynarr](https://github.com/BareRose/dynarr) **(1 C, PD)** |**Dynamic array container** 188 | *ds* |[DynaVar](https://github.com/ArjArav98/DynaVar) (1 C++, GPL3) |Object which can store any type of primitive data type 189 | *ds* |[Fifo_declare.h](https://github.com/buserror/simavr/blob/master/simavr/sim/fifo_declare.h) (1 C, LGPL2) |Thread/core safe FIFO 190 | *ds* |[Itlib](https://github.com/iboB/itlib) (1 C++, MIT) |Several C++11 standard-contaner-like libraries and helpers 191 | *ds* |[Jhr_skip_list](https://github.com/Garfield1002/jhr_skip_list) (1 C++, PD) |Skip Lists 192 | *ds* |[Jrsl](https://github.com/Garfield1002/jrsl) **(1 C, PD)** |**Skip Lists** 193 | *ds* |[Klib](https://attractivechaos.github.io/klib/) (2 C, MIT) |Many 2-file libs: hash, sort, b-tree, etc 194 | *ds* |[Libintrusive](https://github.com/graphitemaster/libintrusive) (2 C, PD) |Intrusive data structures 195 | *ds* |[Libpqueue](https://github.com/vy/libpqueue) (2 C, BSD) |Priority queue (heap) 196 | *ds* |[LinkedList](https://github.com/ivanseidel/LinkedList) (2 C, MIT) |Linked list C++ 197 | *ds* |[Mempool](https://github.com/hardikp/cpp-mempool) (1 C++, MIT) |Efficient minimal memory pool implementation for C++ 198 | *ds* |[PackedArray](https://github.com/gpakosz/PackedArray) (2 C, WTFPL2) |Memory-efficient array of elements with non-pow2 bitcount 199 | *ds* |[Selist](https://github.com/ennorehling/clibs) (2 C, ISC) |Space-efficient linked-list 200 | *ds* |[Simclist](https://mij.oltrelinux.com/devel/simclist) (2 C, BSD) |Linked-list 201 | *ds* |[Stb_ds](https://github.com/nothings/stb/blob/master/stb_ds.h) **(1 C, PD)** |**Typesafe dynamic array and hash tables for C, will compile in C++** 202 | *ds* |[Uthash](https://github.com/troydhanson/uthash) (2 C, BSD) |Several 1-header, 1-license-file libs: generic hash, list, etc 203 | *ds* |[Verstable](https://github.com/JacksonAllan/Verstable) (1 C, MIT) |High performance and typesafe generic hash table 204 | *engine* |[Kit](https://github.com/rxi/kit) **(1 C, PD)** |**Tiny library for making small games with big pixels** 205 | *engine* |[OlcPixelGameEngine](https://github.com/OneLoneCoder/olcPixelGameEngine) (1 C++, BSD3) |Game engine 206 | *engine* |[Punity](https://github.com/martincohen/Punity) (1 C, MIT) |A tiny game engine in C 207 | *file* |[ByteArray](https://github.com/dg4l/bytearray) (2 C, GPL3) |Library to read, write and print binary files 208 | *file* |[Dirent](https://github.com/tronkko/dirent) (1 C, MIT) |Dirent for Windows: retrieve file & dir info 209 | *file* |[Miniphysfs](https://github.com/edubart/miniphysfs) (1 C, ZLIB) |Single-file port of PhysFS, a fs/zip abstraction 210 | *file* |[Tfile](https://github.com/rec/tfile) (1 C++, MIT) |FILE* wrapper does read-write-append-seek-close (Win/Mac/Unix) 211 | *file* |[TinyDir](https://github.com/cxong/tinydir) (1 C, BSD) |Cross-platform directory reading (Win/POSIX/MinGW) 212 | *file* |[Whereami](https://github.com/gpakosz/whereami) (2 C, WTFPL2) |Get path/filename of executable or module 213 | *font* |[Blit-fonts](https://github.com/azmr/blit-fonts) (1 C, ISC) |Bitmap font blitters 214 | *font* |[Ssfn.h](https://gitlab.com/bztsrc/scalable-font) (1 C, MIT) |Scalable/bitmap/pixmap font renderer 215 | *font* |[Stb_easy_font](https://github.com/nothings/stb/blob/master/stb_easy_font.h) **(1 C, PD)** |**Quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc** 216 | *font* |[Stb_truetype](https://github.com/nothings/stb/blob/master/stb_truetype.h) **(1 C, PD)** |**Parse, decode, and rasterize characters from truetype fonts** 217 | *game* |[Raycastlib.h](https://gitlab.com/drummyfish/raycastlib) **(1 C, CC0)** |**Advanced raycasting rendering library, pure C99 with no dependencies, only 32bit int math** 218 | *game* |[Roguelike.h](https://github.com/MichaelMackus/libroguelike) (1 C, MIT) |Simple game library for Roguelike games: pathfinding, Dijkstra graphs, dungeon generation... 219 | *game* |[Stb_connected_components](https://github.com/nothings/stb/blob/master/stb_connected_components.h) **(1 C, PD)** |**Incrementally compute reachability on grids** 220 | *game* |[Stb_herringbone_wang_tile](https://github.com/nothings/stb/blob/master/stb_herringbone_wang_tile.h) **(1 C, PD)** |**Herringbone Wang tile map generator** 221 | *game* |[Stb_tilemap_editor](https://github.com/nothings/stb/blob/master/stb_tilemap_editor.h) **(1 C, PD)** |**Embeddable tilemap editor** 222 | *hash* |[Hash.c](https://github.com/zzo38/freeheromesh/blob/trunk/hash.c) (2 C, PD) |SHA1/SHA3/MD5 hashes 223 | *hash* |[Lonesha256](https://github.com/BareRose/lonesha256) **(1 C, PD)** |**SHA256 implementation** 224 | *hash* |[PicoSHA2](https://github.com/okdshin/PicoSHA2) (1 C++, MIT) |SHA256 implementation 225 | *hash* |[XxHash](https://github.com/Cyan4973/xxHash) (2 C, BSD) |Fast hash function 226 | *image* |[Bitmap](https://github.com/ArashPartow/bitmap) (1 C++, MIT) |Bitmap decoder and utilities 227 | *image* |[Cro_mipmap.h](https://github.com/thebeast33/cro_lib) **(1 C, PD)** |**Average, min, max mipmap generators** 228 | *image* |[Framepacker](https://github.com/paladin-t/framepacker) (1 C++, MIT) |Texture bin packing algorithm 229 | *image* |[Jo_sift](https://www.jonolick.com/home/scale-invariant-feature-transform-sift-single-file-library) **(1 C, PD)** |**Image feature detection and matching** 230 | *image* |[Stb_image](https://github.com/nothings/stb/blob/master/stb_image.h) **(1 C, PD)** |**Image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC** 231 | *image* |[Stb_image_resize](https://github.com/nothings/stb/blob/master/stb_image_resize2.h) **(1 C, PD)** |**Resize images larger/smaller with good quality** 232 | *image* |[Stb_image_write](https://github.com/nothings/stb/blob/master/stb_image_write.h) **(1 C, PD)** |**Image writing to disk: PNG, TGA, BMP** 233 | *image* |[Stb_perlin](https://github.com/nothings/stb/blob/master/stb_perlin.h) **(1 C, PD)** |**Perlin's revised simplex noise w/ different seeds** 234 | *image* |[Stb_rect_pack](https://github.com/nothings/stb/blob/master/stb_rect_pack.h) **(1 C, PD)** |**Simple 2D rectangle packer with decent quality** 235 | *image* |[Tiffloader](https://github.com/MalcolmMcLean/tiffloader) (2 C, PD) |TIFF image loader 236 | *image* |EXR [Miniexr](https://github.com/aras-p/miniexr) (2 C++, PD) |OpenEXR writer, needs header file 237 | *image* |EXR [Tinyexr](https://github.com/syoyo/tinyexr) (1 C, BSD) |EXR image read/write, uses miniz internally 238 | *image* |GIF [Gif.h](https://github.com/ginsweater/gif-h) (1 C++, PD) |Animated GIF writer (can only include once) 239 | *image* |GIF [Gif_load](https://github.com/hidefromkgb/gif_load) **(1 C, PD)** |**(animated) GIF reader** 240 | *image* |GIF [Jo_gif.cpp](https://www.jonolick.com/home/gif-writer) (1 C++, PD) |Animated GIF writer (CPP file can also be used as H file) 241 | *image* |JPG [Jpeg-compressor](https://github.com/richgel999/jpeg-compressor) (2 C++, PD) |2-file JPEG compress, 2-file JPEG decompress 242 | *image* |JPG [NanoJPEG](https://keyj.emphy.de/nanojpeg/) (1 C, MIT) |JPEG decoder 243 | *image* |JPG [Tiny_jpeg.h](https://github.com/serge-rgb/TinyJPEG/) **(1 C, PD)** |**JPEG encoder** 244 | *image* |JPG EXIF [Easyexif](https://github.com/mayanklahiri/easyexif) (2 C++, BSD2) |EXIF metadata extractor for JPEG images 245 | *image* |JPG EXIF [TinyEXIF](https://github.com/cdcseacave/TinyEXIF) (2 C++, BSD) |Parse EXIF data from JPEG (XMP w/ TinyXML2 lib) 246 | *image* |PDF [PDFgen](https://github.com/AndreRenaud/PDFGen) (2 C, PD) |PDF writer 247 | *image* |PNG [Lodepng](https://lodev.org/lodepng/) (2 C, ZLIB) |PNG encoder/decoder 248 | *image* |PNG [Picopng.cpp](https://lodev.org/lodepng/picopng.cpp) (2 C++, ZLIB) |Tiny PNG loader 249 | *image* |PNG [TinyPngOutput](https://www.nayuki.io/page/tiny-png-output) (2 C, LGPLv3) |PNG writer 250 | *image* |PNM [PNM](https://github.com/dmilos/PNM) (1 C++, APACHE2) |PBM, PGM and PPM reader and writer 251 | *image* |SVG [NanoSVG](https://github.com/memononen/nanosvg) (1 C, ZLIB) |1-file SVG parser; 1-file SVG rasterizer 252 | *image* |WEBP [Jebp](https://github.com/matanui159/jebp) **(1 C, 0MIT)** |**Single header WebP decoder** 253 | *ini* |[Inih](https://github.com/benhoyt/inih) (2 C, BSD) |.ini file parser 254 | *input* |[EasyTab](https://github.com/ApoorvaJ/EasyTab) **(1 C, PD)** |**Multi-platform tablet input** 255 | *json* |[Ajson](https://github.com/lordoffox/ajson) (1 C++, BOOST) |JSON serialize & deserialize w/ STL support 256 | *json* |[CJSON](https://github.com/DaveGamble/cJSON) (1 C, MIT) |JSON parser 257 | *json* |[CJSON](https://sourceforge.net/projects/cjson/) (1 C, MIT) |JSON parser 258 | *json* |[Jsmn](https://github.com/zserge/jsmn) (1 C, MIT) |Minimalistic JSON parser 259 | *json* |[Json-build](https://github.com/lcsmuller/json-build) (1 C, MIT) |JSON serializer 260 | *json* |[Json.h](https://github.com/sheredom/json.h) **(1 C, PD)** |**JSON parser** 261 | *json* |[Json.hpp](https://github.com/nlohmann/json) (1 C++, MIT) |JSON parse, serialize, deserialize 262 | *json* |[Jsonc](https://gitlab.com/bztsrc/jsonc) (1 C, MIT) |Extremely fast and extremely small (~60 SLoC) JSON parser 263 | *json* |[Jzon.h](https://github.com/Zguy/Jzon) (2 C++, MIT) |JSON parser 264 | *json* |[Parson](https://github.com/kgabis/parson) (2 C, MIT) |JSON parser and serializer 265 | *json* |[PicoJSON](https://github.com/kazuho/picojson) (1 C++, BSD) |JSON parse/serializer 266 | *json* |[Sjson](https://github.com/septag/sjson) (1 C, BSD2) |JSON encode/decoder 267 | *logic* |[FFSM2](https://github.com/andrew-gresyk/FFSM2/blob/master/include/ffsm2/machine.hpp) (1 C++, MIT) |Flat FSM 268 | *logic* |[HFSM2](https://github.com/andrew-gresyk/HFSM2/blob/master/include/hfsm2/machine.hpp) (1 C++, MIT) |Hierarchical FSM 269 | *math* |[Amoeba](https://github.com/starwing/amoeba) (1 C, MIT) |Constraint solver (Cassowary) w/Lua binding 270 | *math* |[Cds_spline](https://github.com/cdwfs/cds_spline/blob/master/cds_spline.h) **(1 C, PD)** |**Spline utils** 271 | *math* |[Ceval-single-header](https://github.com/e-t-sudo/ceval-single-header) (1 C, MIT) |A single-header library for parsing and evaluation of arithmetic expressions 272 | *math* |[Clipper](https://www.angusj.com/delphi/clipper.php) (2 C++, BOOST) |Line & polygon clipping & offsetting 273 | *math* |[Delaunay](https://github.com/BrunoLevy/geogram.psm.Delaunay) (2 C++, BSD3) |2D and 3D Delaunay triangulation 274 | *math* |[Df](https://github.com/983/df) **(1 C, PD)** |**Find voronoi region in linear time of size of lattice** 275 | *math* |[Dvector](https://github.com/BareRose/dvector) **(1 C, PD)** |**2D/3D vector/quaternion/matrix math library** 276 | *math* |[ExprTk](https://www.partow.net/programming/exprtk/index.html) (1 C++, MIT) |Runtime mathematical expression parser and evaluation engine. 277 | *math* |[Fft](https://github.com/wareya/fft) (1 C++, PD) |Fast Fourier Transform 278 | *math* |[HMM Toolkit](https://github.com/gerbenvoshol/Hidden-Markov-Model-Toolkit) (1 C, GPL2) |Discrete and continuous Hidden Markov Models (DHMM, CHMM) 279 | *math* |[Jc_voronoi](https://github.com/JCash/voronoi) (1 C, MIT) |Find voronoi regions on float/double data 280 | *math* |[Linmath.h](https://github.com/datenwolf/linmath.h) **(1 C, WTFPL2)** |**Vector library** 281 | *math* |[M_math.h](https://github.com/anael-seghezzi/Maratis-Tiny-C-library/blob/master/include/m_math.h) (1 C, ZLIB) |Math with C/OpenCL portability 282 | *math* |[Matrix-hpp](https://github.com/gc1905/matrix-hpp) (1 C++, MIT) |Matrix class container for linear algebra computations 283 | *math* |[Nanoflann](https://github.com/jlblancoc/nanoflann) (1 C++, BSD) |Build KD trees for point clouds 284 | *math* |[Nv_voronoi.h](https://www.icculus.org/~mordred/nvlib/) **(1 C, PD)** |**Find voronoi regions on lattice w/ integer inputs** 285 | *math* |[Omm](https://github.com/Hectarea1996/omm) (1 C++, MIT) |Template open multi-methods 286 | *math* |[OpenNL](https://github.com/BrunoLevy/geogram.psm.OpenNL) (2 C++, BSD3) |Linear and eigen solvers 287 | *math* |[Par_msquares](https://prideout.net/marching-squares) (1 C, MIT) |Convert (binarized) image to triangles 288 | *math* |[Par_shapes](https://prideout.net/shapes) (1 C, MIT) |Generate various 3d geometric shapes 289 | *math* |[Par_streamlines](https://prideout.net/blog/par_streamlines) (1 C, MIT) |Tessellate wide lines and curves with shading attributes 290 | *math* |[PoissonGenerator.h](https://github.com/corporateshark/poisson-disk-generator) (1 C++, MIT) |Poisson disk points generator (disk or rect) 291 | *math* |[PolyPartition](https://github.com/ivanfratric/polypartition) (2 C++, MIT) |Polygon triangulation, partitioning 292 | *math* |[Precision](https://github.com/possibly-wrong/precision) (1 C++, PD) |Arbitrary-precision integer and rational arithmetic | 3 , PD) 293 | *math* |[Prns.h](https://marc-b-reynolds.github.io/shf/2016/04/19/prns.html) **(1 C, PD)** |**Seekable pseudo-random number sequences** 294 | *math* |[Rfft.h](https://github.com/grego/rfft.h) **(1 C, PD)** |**Fast Fourier Tranform for arbitrary array sizes** 295 | *math* |[Sdf.h](https://github.com/memononen/SDF) (1 C, MIT) |Compute signed-distance field from antialiased image 296 | *math* |[ShaderFastLibs](https://github.com/michaldrobot/ShaderFastLibs) (1 C++, MIT) |(also HLSL) Approximate transcendental functions optimized for shaders (esp. GCN) 297 | *math* |[Simple_linear_regression](https://github.com/torkeldanielsson/simple_linear_regression) (1 C, MIT) |Simple linear regression 298 | *math* |[Simrank.hpp](https://github.com/roukaour/simrank) (2 C++, MIT) |SimRank graph similarity algorithm 299 | *math* |[Sobol.h](https://github.com/Marc-B-Reynolds/Stand-alone-junk/) **(1 C, PD)** |**Sobol & stratified sampling sequences** 300 | *math* |[Statistics-Tool-Box](https://github.com/gerbenvoshol/Statistics-Tool-Box) **(1 C, PD)** |**Statistical functions** 301 | *math* |[Stb_divide](https://github.com/nothings/stb/blob/master/stb_divide.h) **(1 C, PD)** |**More useful 32-bit modulus** 302 | *math* |[SummedAreaTable](https://github.com/corporateshark/Summed-Area-Table.git) (1 C++, MIT) |Summed-Area Table generation and sum/avg queries 303 | *math* |[TinyExpr](https://github.com/codeplea/tinyexpr) (2 C, ZLIB) |Evaluation of math expressions from strings 304 | *math* |[Tomas Akenine-Moller snippets](https://tinyurl.com/ht79ndj) (2 C, PD) |Various 3D intersection calculations, not lib-ified 305 | *math* |[Vmath](https://github.com/monolifed/vmath) **(1 C, PD)** |**Vector/matrix library** 306 | *math* |[Voxelizer](https://github.com/karimnaaji/voxelizer) (1 C, MIT) |Convert triangle mesh to voxel triangle mesh 307 | *math* |[Xatlas](https://github.com/jpcy/xatlas) (2 C++, MIT) |Mesh parameterization 308 | *mem* |[Buddy_alloc](https://github.com/spaskalev/buddy_alloc) **(1 C, BSD0)** |**Buddy memory allocator** 309 | *mem* |[Stb_leakcheck](https://github.com/nothings/stb/blob/master/stb_leakcheck.h) **(1 C, PD)** |**Quick-and-dirty malloc/free leak-checking** 310 | *mem* |[Wb_alloc](https://github.com/WilliamBundy/wb_alloc) **(1 C, PD)** |**Custom allocators in a single-header** 311 | *mesh* |[Cgltf](https://github.com/jkuhlmann/cgltf) (1 C, MIT) |GlTF 2.0 file loader 312 | *mesh* |[Fast_obj.h](https://github.com/thisistherk/fast_obj) (1 C, MIT) |Wavefront OBJ file loader 313 | *mesh* |[M3d.h](https://bztsrc.gitlab.io/model3d) (1 C, MIT) |Model 3D importer/exporter (with Blender, Goxel, WebGL JS and assimp integration) 314 | *mesh* |[Objzero](https://github.com/jpcy/objzero) (2 C, MIT) |Wavefront OBJ file loader 315 | *mesh* |[Qll_q3.h](https://github.com/dav64/qll) (1 C++, WTFPL2) |Quake3 BSP loader 316 | *mesh* |[Tinyobjloader-c](https://github.com/syoyo/tinyobjloader-c) (1 C, MIT) |Wavefront OBJ file loader 317 | *mesh* |[Tinyobjloader](https://github.com/syoyo/tinyobjloader) (1 C++, MIT) |Wavefront OBJ file loader 318 | *mesh* |[Tinyply](https://github.com/ddiakopoulos/tinyply) (2 C++, PD) |PLY mesh file loader 319 | *mesh* |[Tk_objfile](https://github.com/joeld42/tk_objfile) (1 C, MIT) |OBJ file loader 320 | *misc* |[ASAP](https://github.com/mobius3/asap) (1 C++, MIT) |Library for parsing, printing, iterating and operating on dates. 321 | *misc* |[CLM_LIBS](https://github.com/CarlosLunaMota/CLM_LIBS) **(1 C, PD)** |**Diverse utilities** 322 | *misc* |[Color-Toolkit](https://github.com/gerbenvoshol/Color-Toolkit) (1 C, GPL2) |Color conversion utils (RGB, XYZ, Lab, CIE76, CIE94 and CIEDE200) 323 | *misc* |[Cpp-generators](https://github.com/c-smile/cpp-generators) (1 C++, BSD) |Generators in C++ 324 | *misc* |[Ebnn.h](https://github.com/kunglab/ebnn/blob/master/c/ebnn.h) (1 C, MIT) |BNN (Binarized Neural Networks) 325 | *misc* |[H.h](https://github.com/robertsdotpm/h.h) (1 C, GPL3) |Diverse utilities 326 | *misc* |[Hedley](https://nemequ.github.io/hedley/) **(1 C, PD)** |**Compiler portability, optimization, static analysis, etc.** 327 | *misc* |[MakeID.h](https://www.humus.name/3D/MakeID.h) (1 C++, PD) |Allocate/deallocate small integer IDs efficiently 328 | *misc* |[Mmu](https://github.com/CN-xLeaves/mmu) (2 C, MIT) |Memory management and data structure toolset 329 | *misc* |[OpenGA](https://github.com/Arash-codedev/openGA) (1 C++, MPL2) |A C++ Generic Algorithm solver library 330 | *misc* |[PlusCallback](https://github.com/codeplea/pluscallback) (1 C++, ZLIB) |Function/method callbacks 331 | *misc* |[Process.h](https://github.com/sheredom/process.h) **(1 C, PD)** |**Process control API** 332 | *misc* |[QR-Code-generator](https://github.com/nayuki/QR-Code-generator) (2 C, MIT) |QR Code generator 333 | *misc* |[Qsort](https://github.com/svpv/qsort) (1 C, MIT) |Qsort algorithm as a C macro 334 | *misc* |[Scogem.c](https://github.com/zzo38/scorpion/blob/trunk/scogem.c) (2 C, PD) |URL parser 335 | *misc* |[Sili](https://github.com/EimaMei/sili) **(1 C, PD)** |**C toolchain for modern C programming, strings, arrays, files, threading, ect** 336 | *misc* |[Smallxrm.c](https://github.com/zzo38/freeheromesh/blob/trunk/smallxrm.c) (2 C, PD) |Implementation of X resource manager 337 | *misc* |[Stb_include](https://github.com/nothings/stb/blob/master/stb_include.h) **(1 C, PD)** |**Implement recursive #include support, particularly for GLSL** 338 | *misc* |[Stmr](https://github.com/wooorm/stmr.c) (2 C, MIT) |Extract English word stems 339 | *misc* |[X.h](https://github.com/Neur1n/x.h) (1 C, MULAN2) |Cross-platform C/C++ utilities 340 | *nav* |[M_path_finding.h](https://github.com/anael-seghezzi/Maratis-Tiny-C-library/blob/master/include/m_path_finding.h) (1 C, ZLIB) |Floodfill-based path finding 341 | *nav* |[Micropather](https://github.com/leethomason/MicroPather) (2 C++, ZLIB) |Pathfinding with A\* 342 | *net* |[Civetweb](https://github.com/civetweb/civetweb) (2 C, MIT) |HTTP server, fork of Mongoose 343 | *net* |[Cpp-httplib](https://github.com/yhirose/cpp-httplib) (1 C, MIT) |Cross-platform HTTP server/client 344 | *net* |[Enet](https://github.com/zpl-c/enet) (1 C, MIT) |Reliable UDP networking library 345 | *net* |[EWS](https://github.com/hellerf/EmbeddableWebServer) (1 C, BSD) |HTTP server 346 | *net* |[Happyhttp](https://github.com/mingodad/HappyHTTP) (2 C++, ZLIB) |HTTP client requests 347 | *net* |[Libcluon](https://github.com/chrberger/libcluon) (1 C++, MPL2) |Cross-platform socket wrapper and data marshalling with native implementations for [Protobuf](https://developers.google.com/protocol-buffers/), [LCM](https://lcm-proj.github.io/type_specification.html)/[ZCM](https://zerocm.github.io/zcm/), JSON, and [MsgPack](https://msgpack.org) serialization/deserialization 348 | *net* |[Librg](https://github.com/zpl-c/librg) (1 C, BSD3) |World/entity synchronization multiplayer library 349 | *net* |[LUrlParser](https://github.com/corporateshark/LUrlParser) (2 C++, MIT) |Lightweight URL & URI parser RFC 1738, RFC 3986 350 | *net* |[Mongoose](https://github.com/cesanta/mongoose) (2 C, GPLv2) |HTTP server 351 | *net* |[Netq](https://gitlab.com/bztsrc/netq) (1 C, MIT) |Reliable datagram library 352 | *net* |[Par_easycurl.h](https://github.com/prideout/par) (1 C, MIT) |CURL wrapper 353 | *net* |[Simpletls.c](https://github.com/zzo38/scorpion/blob/trunk/simpletls.c) (2 C, PD) |Function to create a socket and connect to a remote server with TLS 354 | *net* |[Swrap](https://github.com/BareRose/swrap) **(1 C, PD)** |**TCP and UDP socket wrapper** 355 | *net* |[Tiniest-analytics](https://github.com/Pintea/tiniest-analytics) (2 C++, MIT) |Cross-platform analytics for games (using Google Analytics <4) 356 | *net* |[Tiny-MQTT-c](https://github.com/kokke/tiny-MQTT-c) (4 C, PD) |Small implementation of (some of) the MQTT protocol in C 357 | *net* |[Tlse](https://github.com/eduardsui/tlse) (2 C, PD-BSD2) |TLS v1.0, 1.2, 1.3 and DTLS 1.0, 1.2 implementations 358 | *net* |[Webster](https://github.com/brunexgeek/webster) (2 C++, APACHE2) |Standalone HTTP server/client 359 | *net* |[Yocto](https://github.com/tom-seddon/yhs) (2 C, PD) |Non-production-use HTTP server 360 | *net* |[Zed_net](https://github.com/Smilex/zed_net) **(1 C, PD)** |**Cross-platform socket wrapper** 361 | *net* |[Znet](https://github.com/starwing/znet) (1 C, MIT) |Cross-platform networking w/ Lua binding 362 | *pack* |[Dmc_unrar](https://github.com/DrMcCoy/dmc_unrar) (1 C, GPL2) |RAR file decompression 363 | *pack* |[Fastlz](https://code.google.com/archive/p/fastlz/source/default/source) (2 C, MIT) |Fast but larger LZ compression 364 | *pack* |[Lz4](https://github.com/lz4/lz4) (2 C, BSD) |Fast but larger LZ compression 365 | *pack* |[Microtar](https://github.com/rxi/microtar) (2 C, MIT) |Lightweight tar library 366 | *pack* |[Miniz.c](https://github.com/richgel999/miniz) (1 C, MIT) |Compression, decompression, ZIP file, PNG writing 367 | *pack* |[Nibrans](https://github.com/BareRose/nibrans) **(1 C, PD)** |**Adaptive rANS library** 368 | *pack* |[Pithy](https://github.com/johnezang/pithy) (2 C, BSD) |Fast but larger LZ compression 369 | *pack* |[Rle](https://gitlab.com/bztsrc/rle) (1 C, MIT) |Run-length en/decoder 370 | *pack* |[Stb_dxt](https://github.com/nothings/stb/blob/master/stb_dxt.h) **(1 C, PD)** |**Real-time DXT compressor** 371 | *parse* |[Cmp](https://github.com/camgunz/cmp) (2 C, MIT) |MessagePack parser and serializer 372 | *parse* |[Cpp-peglib](https://github.com/yhirose/cpp-peglib) (1 C, MIT) |PEG (Parsing Expression Grammars) library 373 | *parse* |[Furi](https://github.com/iboB/furi) (1 C, MIT) |URL & URI parsing 374 | *parse* |[Html-parse.c](https://git.savannah.gnu.org/cgit/wget.git/tree/src/html-parse.c) (2 C, GPL) |HTML parser (wget) 375 | *parse* |[SLRE](https://github.com/aquefir/slre) (1 C, GPL2) |Regular expression matcher 376 | *parse* |[Stb_c_lexer](https://github.com/nothings/stb/blob/master/stb_c_lexer.h) **(1 C, PD)** |**Simplify writing parsers for C-like languages** 377 | *parse* |[Tok](https://gitlab.com/bztsrc/tok) (1 C, MIT) |Configurable tokenizer 378 | *parse* |[Tomlplusplus](https://github.com/marzer/tomlplusplus) (1 C++, MIT) |TOML parser and serializer 379 | *parse* |[Udisasm](https://gitlab.com/bztsrc/udisasm) (1 C, MIT) |Extremely small disassembler for ARMv8.2 AArch64 (~65k) 380 | *parse* |[Unformat](https://github.com/adamyaxley/Unformat) (1 C++, PD) |Parses formatted strings (reverse of std::format) 381 | *prng* |[Random](https://github.com/effolkronium/random) (1 C++, MIT) |Convenient API for random 382 | *prng* |[Ranxoshi256](https://github.com/BareRose/ranxoshi256) **(1 C, PD)** |**Xoshiro256 algorithm** 383 | *prng* |[SimplexNoise](https://github.com/simongeilfus/SimplexNoise) (1 C++, BSD2) |Collection of noise generators 384 | *prng* |[UTL Random](https://github.com/DmitriBogdanov/UTL/blob/master/docs/module_random.md) (1 C++, MIT) |Fast random for Monte-Carlo simulations 385 | *profile* |[MicroProfile](https://github.com/jonasmr/microprofile) (4 C++, PD) |CPU (and GPU?) profiler, 1-3 header files, uses miniz internally 386 | *profile* |[Prof](https://github.com/cyrus-and/prof) (1 C, MIT) |Profiler for Linux 387 | *profile* |[Remotery](https://github.com/Celtoys/Remotery) (2 C, APACHE2) |CPU/GPU profiler Win/Mac/Linux, using web browser for viewer 388 | *raster* |[Canvas_ity](https://github.com/a-e-k/canvas_ity) (1 C++, ISC) |2D rasterizer 389 | *regex* |[Remimu](https://github.com/wareya/Remimu) **(1 C, CC0)** |**Regex engine** 390 | *script* |[Duktape](https://duktape.org/) (2 C, MIT) |Embeddable JavaScript engine 391 | *script* |[LIL](https://runtimeterror.com/tech/lil/) (2 C, ZLIB) |Interpreter for a Tcl-like scripting language 392 | *script* |[Lualite](https://github.com/user1095108/lualite) (1 C++, MIT) |Generate Lua bindings in C++ 393 | *script* |[Minilua](https://github.com/edubart/minilua) (1 C, MIT) |Single-file port of Lua scripting language 394 | *script* |[MY-BASIC](https://github.com/paladin-t/my_basic/) (2 C, MIT) |Interpreter for a BASIC dialect scripting language 395 | *script* |[Picol](https://chiselapp.com/user/dbohdan/repository/picol/) (1 C, BSD) |Interpreter for a Tcl-like scripting language 396 | *script* |[S7](https://ccrma.stanford.edu/software/snd/snd/s7.html) (2 C, BSD) |Interpreter for a subset of Scheme (R5RS/R7RS) 397 | *script* |[Xpl](https://github.com/paladin-t/xpl) **(1 C, WTFPL2)** |**X Programming Language** 398 | *serial* |[Archive](https://github.com/voidah/archive) (1 C++, PD) |Binary serialize & deserlize w/ STL support 399 | *serial* |[Blob_tree](https://github.com/dicroce/blob_tree) (1 C++, MIT) |Binary tree serializer 400 | *serial* |[Cista](https://github.com/felixguendling/cista) (1 C++, MIT) |Cross-platform high performance zero copy C++17 serialization/deserialization 401 | *serial* |[Libcluon](https://github.com/chrberger/libcluon) (1 C++, MPL2) |Cross-platform data serialization/deserialization with native implementations for [Protobuf](https://developers.google.com/protocol-buffers/), [LCM](https://lcm-proj.github.io/type_specification.html)/[ZCM](https://zerocm.github.io/zcm/), JSON, and [MsgPack](https://msgpack.org) 402 | *serial* |[Qserial](https://github.com/earonesty/qserial) (1 C++, BSD3) |Schema-driven serialization library 403 | *serial* |[Serialization helper](https://gist.github.com/TheServer201/9ae5322cd52f76c7d36af15d3b366762) **(1 C, WTFPL2)** |**Serialization helper** 404 | *serial* |[Visit_struct](https://github.com/cbeck88/visit_struct) (2 C++, BOOST) |Struct-field reflection 405 | *string* |[Csplit](https://github.com/jwlodek/csplit) (1 C, MIT) |String splitting and processing single-header library 406 | *string* |[Dfa](https://bjoern.hoehrmann.de/utf-8/decoder/dfa/) (2 C, MIT) |Fast UTF-8 decoder (need a header file) 407 | *string* |[Gb_string.h](https://github.com/gingerBill/gb) **(1 C, PD)** |**Dynamic strings** 408 | *string* |[Ggformat](https://github.com/mikejsavage/ggformat) (2 C++, ISC) |Printf replacement 409 | *string* |[Inja.hpp](https://github.com/pantor/inja) (1 C++, MIT) |Template engine 410 | *string* |[Levenshtein](https://github.com/wooorm/levenshtein.c) (2 C, MIT) |Compute edit distance between two strings 411 | *string* |[Obfuscate](https://github.com/adamyaxley/Obfuscate) (1 C++, PD) |Guaranteed compile-time string literal obfuscation library for C++14 412 | *string* |[Str.h](https://github.com/ocornut/Str) (1 C++, PD) |Simple C++ string type with an optional local buffer 413 | *string* |[Str](https://github.com/maxim2266/str) (2 C, BSD) |Yet another string library for C language 414 | *string* |[Str_view.hpp](https://github.com/sawickiap/str_view) (1 C++, MIT) |Null-termination-aware string-view class 415 | *string* |[Tinyformat](https://github.com/c42f/tinyformat) (1 C++, BOOST) |Typesafe printf 416 | *string* |[Utf8](https://github.com/sheredom/utf8.h) **(1 C, PD)** |**UTF-8 string library** 417 | *svg* |[SimpleSVG](https://github.com/adishavit/simple-svg) (1 C++, BSD3) |Easy to use SVG library 418 | *sys* |[Doops](https://github.com/eduardsui/doops) **(1 C, PD)** |**Event loop library** 419 | *sys* |[Endianness.h](https://github.com/rofl0r/endianness.h) **(1 C, PD)** |**Endianness conversion and detection** 420 | *sys* |[JArgsParser](https://github.com/ZhengqiaoWang/JArgsParser) (1 C++, MIT) |Arguments parser 421 | *sys* |[Openmodal](https://gitlab.com/bztsrc/openmodal) (1 C, MIT) |Native file modals 422 | *sys* |[Rang](https://github.com/agauniyal/rang) (1 C++, PD) |Cross-platform colored console text 423 | *sys* |[Xproc](https://github.com/time-killer-games/xproc) (2 C++, MIT) |Foreign Process Information 424 | *thread* |[Bikeshed.h](https://github.com/DanEngelbrecht/bikeshed) (1 C, MIT) |Cross-platform lock free fixed memory hierarchical work scheduler 425 | *thread* |[Cds_job](https://github.com/cdwfs/cds_job) (1 C++, PD) |Lock-free job queue 426 | *thread* |[Cds_sync](https://github.com/cdwfs/cds_sync) **(1 C, PD)** |**Collection of synchronization primitives** 427 | *thread* |[TinyCThread](https://tinycthread.github.io/) (2 C, ZLIB) |Cross-platform implementation of the C11 Threads API 428 | *thread* |[TinyThread++](https://tinythreadpp.bitsnbites.eu/) (2 C++, ZLIB) |Cross-platform implementation of the C++11 Threads API 429 | *ui* |[Clay](https://github.com/nicbarker/clay) (1 C, ZLIB) |High performance 2D UI layout library 430 | *ui* |[Dear imgui](https://github.com/ocornut/imgui) (9 C++, MIT) |An immediate-mode GUI formerly named "ImGui"; [3rd-party C wrapper](https://github.com/Extrawurst/cimgui) 431 | *ui* |[Libcmdf](https://github.com/ronen25/libcmdf) **(1 C, PD)** |**A small library for writing CLI applications** 432 | *ui* |[Linenoise](https://github.com/antirez/linenoise) (2 C, BSD) |Terminal readline w/ history etc 433 | *ui* |[Nuklear](https://github.com/Immediate-Mode-UI/Nuklear) **(1 C, PD)** |**Minimal GUI toolkit** 434 | *ui* |[Stb_textedit](https://github.com/nothings/stb/blob/master/stb_textedit.h) **(1 C, PD)** |**Guts of a text editor for games etc implementing them from scratch** 435 | *ui* |[Tinyfiledialogs](https://sourceforge.net/projects/tinyfiledialogs/) (2 C, ZLIB) |Modal dialogs inc. file open/save (Win/Mac/Linux) 436 | *ui* |[Wcwidth9](https://github.com/joshuarubin/wcwidth9) (1 C, APACHE2) |Platform independent wcwidth with full unicode 9 support 437 | *ui* |[Webview](https://github.com/zserge/webview) (1 C, MIT) |Cross-platform webview library 438 | *unit* |[Catch2](https://github.com/catchorg/Catch2/) (1 C++, BOOST) |Unit testing 439 | *unit* |[Catch](https://github.com/philsquared/Catch) (1 C++, BOOST) |Unit testing 440 | *unit* |[Clove-unit](https://github.com/fdefelici/clove-unit) (1 C, MIT) |Unit testing 441 | *unit* |[Doctest](https://github.com/onqtam/doctest) (1 C++, MIT) |Unit testing 442 | *unit* |[Fctx](https://github.com/imb/fctx) (1 C, BSD) |Unit testing 443 | *unit* |[Greatest](https://github.com/silentbicycle/greatest) (1 C, ISC) |Unit testing 444 | *unit* |[Hippomocks](https://github.com/dascandy/hippomocks) (1 C++, LGPL) |Unit testing 445 | *unit* |[Labrat](https://github.com/squarewave/labrat) **(1 C, PD)** |**Unit testing** 446 | *unit* |[Minctest](https://github.com/codeplea/minctest) (1 C, ZLIB) |Unit testing 447 | *unit* |[Munit](https://github.com/nemequ/munit) (1 C, MIT) |Unit testing 448 | *unit* |[Picotest](https://github.com/colinbarry/picotest) (1 C, MIT) |Unit testing 449 | *unit* |[Rexo](https://github.com/christophercrouzet/rexo) **(1 C, PD)** |**Framework for C89/C++ featuring automatic registration of tests and a polished API** 450 | *unit* |[SPUT](https://www.lingua-systems.com/unit-testing/) (1 C, BSD) |Unit testing 451 | *unit* |[Trompeloeil](https://github.com/rollbear/trompeloeil) (1 C++, BOOST) |Unit testing 452 | *unit* |[Utest.h](https://github.com/sheredom/utest.h) **(1 C, PD)** |**Unit testing** 453 | *unit* |[Utest](https://github.com/evolutional/utest) (1 C, MIT) |Unit testing 454 | *unit* |[Walter](https://github.com/ir33k/walter) **(1 C, PD)** |**Unit testing** 455 | *uuid* |[Uuid4](https://github.com/gpakosz/uuid4) (2 C, WTFPL2-MIT) |UUID v4 generator 456 | *uuid* |[Uuid_h](https://github.com/wc-duck/uuid_h) (1 C, ZLIB) |UUID generator 457 | *vector* |[Algebra3.h](https://www.animats.com/source/graphics/algebra3.h) (1 C++, PD) |Vector utilities for 2, 3, and 4 element vectors, all inline 458 | *vector* |[CcVector.h](https://github.com/jobtalle/ccVector) **(1 C, PD)** |**Vector, quaternion and matrix math** 459 | *vector* |[Handmade Math](https://github.com/StrangeZak/Handmade-Math) **(1 C, PD)** |**Vector math** 460 | *vector* |[Hypatia](https://github.com/dagostinelli/hypatia) (1 C, MIT) |Vector/matrix/quaternion math 461 | *vector* |[Linalg.h](https://github.com/sgorsten/linalg) (1 C++, PD) |Vector/matrix/quaternion math 462 | *vector* |[Linalg](https://github.com/ilyak/linalg) (1 C, ISC) |Vector/matrix/quaternion math 463 | *video* |[Jo_mpeg](https://blog.frost.kiwi/jo-mpeg-in-c), [original](https://www.jonolick.com/home/mpeg-video-writer) **(1 C, PD)** |**MPEG file writer** 464 | *video* |[Pl_mpeg](https://github.com/phoboslab/pl_mpeg) (1 C, MIT) |MPEG1 video and audio decoder 465 | *xml* |[Pugixml](https://pugixml.org/) (2 C++, MIT) |Light-weight C++ XML processing library 466 | *xml* |[Tinyxml2](https://github.com/leethomason/tinyxml2) (2 C++, ZLIB) |Simple, small, efficient, C++ XML parser 467 | *xml* |[Yxml](https://dev.yorhel.nl/yxml) (2 C, MIT) |Small, fast and correct XML parser 468 | *yaml* |[Mini-yaml](https://github.com/jimmiebergmann/mini-yaml) (2 C++, MIT) |YAML parser and serializer 469 | 470 | ### Secondary listing 471 | 472 | Entries in this appendix either do not offer a single-header file directly, or the single-header file is computer generated, or you have to build the single-header by yourself, or lack any other major requirement mentioned above. However, some of you may find the links below still relevant. 473 | 474 | |tag | library | description 475 | |:-------:|:---------|:----------------- 476 | *db* |[Sqlite](https://www.sqlite.org/amalgamation.html) (2 C, PD) |Self-contained, SQL database engine. 477 | *engine* |[FWK1](https://github.com/fwk3d/v1) **(1 C, PD)** |**3D game framework in C** 478 | *file* |[DTW](https://github.com/OUIsolutions/DoTheWorld) (1 C, MIT) |File and folder utilities 479 | *net* |[CWebStudio](https://github.com/OUIsolutions/CWebStudio) (1 C, MIT) |WebServer with embedded JSON/HTML utilities 480 | *pack* |[Zstd](https://github.com/facebook/zstd/tree/dev/build/single_file_libs) (? C, BSD3) |Fast real-time compression algorithm 481 | *sys* |[Cpuid](https://github.com/anzz1/cpuid) (1 C, ???) |Cross-platform cpuid intrinsic 482 | *sys* |[Iathook](https://github.com/anzz1/iathook) (1 C, ???) |Import address table hooking library (x86/x64,w32) 483 | 484 | 507 | 508 | ## *List FAQ* 509 | 510 | ### Can I link directly to this list? 511 | 512 | Yes. For historical reasons, [this is the preferred link.](https://github.com/nothings/single_file_libs) 513 | 514 | ### Why isn't library XXX which is made of 3 or more files on this list? 515 | 516 | We draw the line arbitrarily at 2 files at most. Some of these libraries are still easy to drop into 517 | your project and build, so you might still be ok with them. But since people come to stb for single-file 518 | public domain libraries, we feel that starts to get too far from what we do here. 519 | 520 | ### Why isn't library XXX which is at most two files and has minimal other dependencies on this list? 521 | 522 | Probably because we don't know about it, feel free to submit a pull request or issue (it can be your 523 | own library or somebody else's). But we might not include it for various other reasons, including 524 | subtleties of what is 'minimal other dependencies' and subtleties about what is 'lightweight'. 525 | 526 | ### What are the differences between C, C++ and C/C++ in the API column? 527 | 528 | For the API column, "C" means a C library that *may be* C++ compatible but this not guaranteed nor verified, 529 | "C++" means C++ only and thus not C compatible, and "C/C++" means a C library with additional features when compiled in C++ mode. 530 | 538 | 539 | ### Why are the LICENSING terms required in the header and source files? 540 | 541 | Please note that every file that must be included in a user's project counts; a header and a source 542 | file is 2 files, but a header file, source file, and LICENSE (if the license isn't in the 543 | source file) is 3 files, and won't be accepted, because it's not 2 files. But actually 544 | 'LICENSE' is a problem for just dropping the library in a source tree anyway, since it's 545 | not scoped to just the library, so library authors are encouraged to include the license in the 546 | source file and not require a separate LICENSE. 547 | 548 | 553 | --------------------------------------------------------------------------------