├── .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 | 
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 |
--------------------------------------------------------------------------------