Awesome header-only C++ libraries
Table of Contents
Argument Parsers
Library |
Stars |
Description |
License |
Argh! |
|
Argh! A minimalist argument handler. |
|
argparse |
|
Argument Parser for Modern C++. |
|
args |
|
A simple header-only C++ argument parser library. |
|
cmd_line_parser |
|
Command line parser for C++17. |
|
CLI11 |
|
CLI11 is a command line parser for C++11 and beyond. |
|
clipp |
|
Powerful & Expressive Argument Parsing for Modern C++. |
|
cxxopts |
|
Lightweight C++ GNU style option parser library. |
|
fire-hpp |
|
Create fully functional CLIs using function signatures. |
|
flags |
|
Simple, extensible, header-only C++17 argument parser. |
|
structopt |
|
Parse command line arguments by defining a struct. |
|
Audio
Library |
Stars |
Description |
License |
minimp3 |
|
Minimalistic MP3 decoder single header library. |
|
Benchmarking
Library |
Stars |
Description |
License |
criterion |
|
Microbenchmarking for Modern C++. |
|
nanobench |
|
Simple, fast, accurate microbenchmarking for C++11. |
|
picobench |
|
A small microbenchmarking library for C++11. |
|
Communication
Library |
Stars |
Description |
License |
comms |
|
Implement binary communication protocols in >=C++11. |
|
Compression
Library |
Stars |
Description |
License |
Gzip |
|
Gzip header-only C++ library. |
|
interpolative_coding |
|
Binary Interpolative Coding algorithm. |
|
zstr |
|
A C++ header-only ZLib wrapper. |
|
Concurrency
Cryptography and Security
Library |
Stars |
Description |
License |
cppcodec |
|
Encode/decode base64, base64url, base32, etc. |
|
digestpp |
Β Β |
C++11 header-only message digest library. |
|
PicoSHA2 |
|
Header-file-only, SHA256 hash generator in C++. |
|
plusaes |
|
Header only C++ AES cipher library. |
|
stduuid |
|
A C++17 cross-platform implementation for UUIDs. |
|
Databases
Library |
Stars |
Description |
License |
OTL |
|
Oracle, ODBC and DB2-CLI Template Library. |
OpenBSD |
Data Formats
Library |
Stars |
Description |
License |
bencode |
|
C++20 bencode library. |
|
Boost.JSON |
|
JSON parsing, serialization, inspection and modification. |
|
cpptoml |
|
Header-only library for parsing TOML. |
|
csv2 |
|
Fast CSV parser and writer for Modern C++. |
|
CSV Parser |
|
Reading, writing, and analyzing CSV files. |
|
daw_json_link |
|
Static JSON parsing in C++. |
|
Fast C++ CSV Parser |
|
Fast library for reading CSV files. |
|
FlatJSON |
|
Extremely fast just one allocation and zero copy JSON parser. |
|
inih |
|
This is a header only C++ version of inih. |
|
nlohmann/json |
|
JSON for Modern C++. |
|
json_struct |
|
High performance, single header only to serialize and deserialize JSON to C++ structs. |
|
jsoncons |
|
Construct JSON and JSON-like data formats. |
|
minicsv |
|
Bare minimal CSV stream based on C++ file streams. |
|
picojson |
|
a header-file-only, JSON parser serializer in C++. |
|
pugixml |
Β Β Β Β Β |
A C++ XML processing library with a DOM-like interface and XPath 1.0 support. |
|
rapidcsv |
|
C++ CSV parser library. |
|
rapidjson |
|
A fast JSON parser/generator for C++. |
|
rapidxml |
Β Β Β Β Β |
RapidXML fork; XML namespacing, per-element parsing, etc. |
|
simdjson |
|
Parsing gigabytes of JSON per second. |
|
simpleini |
|
Read and write INI-style configuration files. |
|
taocpp JSON |
|
C++ header-only JSON library. |
|
toml11 |
|
TOML for Modern C++. |
|
tomlplusplus |
|
TOML config file parser and serializer for >=C++17. |
|
tortellini |
|
A really stupid INI file format for C++11. |
|
valijson |
|
JSON Schema validation. |
|
xml2json |
|
A header-only C++ library converts XML to JSON. |
|
Data Mining, Machine Learning, and Deep Learning
Library |
Stars |
Description |
License |
dlib |
|
A toolkit for real-world machine learning and data analysis. |
|
frugally deep |
|
Use Keras models in C++. |
|
gaenari |
|
Incremental decision tree in C++17. |
|
hnswlib |
|
Fast approximate nearest neighbors. |
|
MiniDNN |
|
A header-only C++ library for deep neural networks. |
|
mlpack |
|
mlpack: a fast, header-only C++ machine learning library. |
|
nanoflann |
|
Nearest Neighbor (NN) search with KD-trees. |
|
tiny-dnn |
|
Dependency-free deep learning framework in C++14. |
|
Data Formatting and Presentation
Library |
Stars |
Description |
License |
asap |
|
Creating, displaying, iterating and manipulating dates. |
|
cxx prettyprint |
|
Pretty-printing of any container in C++(0x). |
|
fmt |
|
A modern formatting library. |
|
pprint |
|
Pretty Printer for Modern C++. |
|
strf |
|
A fast formatting library for C++14. |
|
tabulate |
|
Table Maker for Modern C++. |
|
Data Querying
Library |
Stars |
Description |
License |
boolinq |
|
Simplest C++ header-only LINQ template library. |
|
Data Structures and Algorithms
Library |
Stars |
Description |
License |
BitMagic |
|
Compressed bit-vectors, logical operations, memory compact containers. |
|
concurrent queue |
|
Fast multi-producer, multi-consumer lock-free concurrent queue. |
|
dynamic bitset |
|
The C++17 header-only dynamic bitset. |
|
frozen |
|
Constexpr alternative to gperf for C++14 users. |
|
hopscotch map |
Β Β Β Β Β |
Fast hash map and hash set using hopscotch hashing. |
|
immer |
|
Postmodern immutable and persistent data structures. |
|
MPMCQueue |
|
A bounded multi-producer multi-consumer concurrent queue. |
|
outcome |
|
Lightweight outcome and result. |
|
parallel hashmap |
|
Very fast and memory-friendly hashmap and btree containers. |
|
PGM-index |
Β Β Β Β Β Β Β Β |
Blazing fast queries and updates over billions of items using orders of magnitude less memory than other containers. |
|
robin-hood hashing |
|
Fast & memory efficient hashtable based on robin hood hashing. |
|
robin-map |
|
Fast hash map and hash set using robin hood hashing. |
|
sfl-library |
|
Small vector. Small flat map/multimap/set/multiset (ordered and unordered). C++11. |
|
tries |
|
Fast and highly customisable C++20 trie implementation. |
|
Debugging
Library |
Stars |
Description |
License |
backward-cpp |
|
A beautiful stack trace pretty printer for C++. |
|
Deep Learning
Library |
Stars |
Description |
License |
ceras |
|
A deep learning engine in C++20. |
|
Event Handling Mechanisms
Library |
Stars |
Description |
License |
eventbus |
|
Mediator pattern event bus for C++. |
|
eventpp |
|
Event Dispatcher and callback list for C++. |
|
periodic-function |
|
Callbacks at a specified time interval. |
|
File System
Library |
Stars |
Description |
License |
simplebinstream |
|
C++ Simplistic Binary Stream. |
|
filesystem |
|
Cross-platform implementation of std::filesystem for C++11/14/17. |
|
glob |
|
Glob for C++17. |
|
llfio |
|
P1031 low-Level file i/o and filesystem library. |
|
mio |
|
Cross-platform C++11 memory mapped file IO. |
|
mm_file |
|
Memory-mapped files for C++. |
|
tinydir |
Β Β Β |
Lightweight, portable C directory and file reader. |
|
Functional Programming
Library |
Stars |
Description |
License |
FunctionalPlus |
|
Functional Programming Library for C++. |
|
immer |
|
Persistent functional data structures in C++. |
|
lager |
|
Redux-like unidirectional data-flow for C++. |
|
schmutz |
|
Easy Guile Scheme C++ bindings. |
|
zug |
|
Transducers (from Clojure) in C++. |
|
Geometry, Graphics Processing, and Game Development
Library |
Stars |
Description |
License |
arcball_camera |
|
Immediate-mode camera for your graphics demos. |
|
Brutus |
|
Marching cubes implementation. |
|
cinolib |
|
Process polygonal and polyhedral meshes. |
|
cr |
|
A Simple C Hot Reload Header-only Library. |
|
CxxSwizzle |
|
Modern C++ swizzling header-only library. |
|
earcut.hpp |
|
Fast Polygon triangulation. |
|
entt |
|
Entity component system (ECS) and much more. |
|
glm |
|
OpenGL Mathematics (GLM). |
|
librg |
|
π Making multi-player gamedev simpler since 2017. |
Β Β Β Β Β Β Β Β Β |
nanort |
|
Modern ray tracing kernel. |
|
px |
|
Thread Scheduling, Rendering, and so on. |
|
Simple OpenGL Loader |
|
Extensible, cross-platform OpenGL loader. |
|
Sokol |
|
Cross-platform libraries for C and C++. |
|
stb |
|
Single-file public domain libraries. |
|
Swarmz |
|
Swarming (flocking) library for real-time applications. |
|
tiny-differentiable-simulator |
Β Β Β Β Β Β Β |
Tiny Differentiable Simulator is a header-only C++ physics library with zero dependencies. |
|
tinygltf |
|
C++11 tiny glTF 2.0 library. |
|
tweeny |
|
A modern C++ tweening library. |
|
Vookoo |
|
Take the pain out of Vulkan. |
|
voxelizer |
|
Header only mesh voxelizer in c99. |
|
GPU
Library |
Stars |
Description |
License |
thrust |
|
Parallel programming library. |
Β Β Β Β Β Β Β Β Β Β Β |
vuda |
Β Β Β Β Β Β Β Β Β Β Β |
Vulkan-based library that provides a CUDA Runtime API interface for writing GPU-accelerated applications. |
|
Graph
Library |
Stars |
Description |
License |
CXXGraph |
Β Β Β |
Graph Representation and Algorithms Library >= C++17 Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β |
Β Β Β Β Β |
GUI
Library |
Stars |
Description |
License |
Centurion |
|
A modern C++17/20 wrapper library for SDL2. |
|
GuiLite |
|
The smallest header-only GUI library(5 KLOC) for all platforms. |
|
Nuklear |
|
Immediate mode cross-platform GUI library. |
|
WinLamb |
|
C++11 native Win32 GUI library. |
|
High-performance Computing
HTTP and the Web
Library |
Stars |
Description |
License |
cinatra |
|
Modern (c++17), Cross-platform Http Framework. |
|
cpp-httplib |
|
A C++11 Cross platform HTTP/HTTPS library. |
|
jwt-cpp |
|
Create and validate JSON web tokens. |
|
RESTinio |
|
Asynchronous HTTP/WebSocket server C++14 library |
|
cuehttp |
|
Modern c++ middleware framework for http(http/https)/websocket(ws/wss). |
|
libfv |
|
libfv is C++20 header-only network library, support TCP/SSL/Http/websocket server and client |
|
Image Processing
Library |
Stars |
Description |
License |
BitmapPlusPlus |
|
Simple and Fast header only Bitmap (BMP) library. |
|
CImg |
|
Cool Image, one file: full featured image processing. |
|
color-util |
|
Colors, Color space converters for RGB, HSL, XYZ, Lab, etc. |
|
color |
|
Color manipulation/conversion for different types and formats. |
|
nanopm |
|
NanoPM, single header only PatchMatch. |
|
Language Bindings
Library |
Stars |
Description |
License |
jni.hpp |
|
A modern, type-safe, C++14 wrapper for JNI. |
|
pybind11 |
|
Seamless operability between C++11 and Python. |
|
Selene |
|
Simple C++11 friendly bindings to Lua. |
|
Sol |
|
Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance. |
|
v8pp |
|
Bind C++ functions and classes into V8 JavaScript engine. |
|
Language Development
Library |
Stars |
Description |
License |
Command Interpreter |
|
Add a command interpreter (eg., REPL) to any C++ program. |
|
Logging
Library |
Stars |
Description |
License |
easyloggingpp |
|
Single header C++ logging library. |
|
plog |
|
Portable, simple and extensible C++ logging library. |
|
spdlog |
|
Fast C++ logging library. |
|
Mathematics
Library |
Stars |
Description |
License |
amgcl |
|
Solve large sparse linear systems with algebraic multigrid method. |
|
dj_fft |
|
FFT library. |
|
eigen |
|
Template library for linear algebra. |
Β Β Β Β Β Β Β Β Β |
exprtk |
|
C++ Mathematical Expression Toolkit. |
|
fpm |
|
Fixed-point math library. |
|
kfr |
|
Fast DSP framework, FFT, Sample Rate Conversion, etc. |
|
libmorton |
Β Β Β Β Β Β Β Β Β |
Methods to efficiently encode/decode Morton codes in/from 2D/3D coordinates. |
|
linalg |
|
Short vector math library for C++. |
|
matplotlib-cpp |
|
C++ plotting library built on the popular matplotlib. |
|
matrix |
|
A 2D matrix lib in C++20. |
|
NumCpp |
|
C++ implementation of the Python Numpy library. |
|
random |
|
Random for modern C++ with convenient API. |
|
spectra |
|
A header-only C++ library for large scale eigenvalue problems. |
|
universal |
|
Universal Number Arithmetic. |
|
Memory Management
Library |
Stars |
Description |
License |
ugc |
|
Incremental garbage collector. |
|
Mocking
Library |
Stars |
Description |
License |
FakeIt |
|
C++ mocking made easy. |
|
trompeloeil |
|
C++14 mocking framework. |
|
Networking
Library |
Stars |
Description |
License |
asio |
|
Asio C++ Library. |
|
asio-grpc |
|
Asynchronous gRPC with Asio/unified executors. |
|
brynet |
|
Cross-platform C++ TCP network library. |
|
cppzmq |
|
Header-only C++ binding for libzmq. |
|
nygma |
|
Network packet processing and indexing. |
|
uvw |
|
libuv wrapper in modern C++. |
|
Optimization
Library |
Stars |
Description |
License |
ensmallen |
|
C++ library for numerical optimization. |
|
Parsing Expression Grammars
Library |
Stars |
Description |
License |
cpp-peglib |
|
PEG (Parsing Expression Grammars) library. |
|
PEGTL |
|
Parsing Expression Grammar Template Library. |
|
Portability Definitions
Library |
Stars |
Description |
License |
hedley |
|
Move #ifdefs out of your code. |
|
Reflection
Library |
Stars |
Description |
License |
better-enums |
|
C++ compile-time enum to string, iteration. |
|
magic_enum |
|
Static reflection for enums. |
|
meta |
|
Macro-free runtime reflection system. |
|
nameof |
|
Nameof operator for modern C++. |
|
refl-cpp |
|
Compile-time reflection library. |
|
visit_struct |
|
A miniature library for struct-field reflection. |
|
Regular Expression
Library |
Stars |
Description |
License |
compile-time regular expressions |
Β Β Β Β |
A Compile time regular expression matcher. |
|
SRELL |
Β Β Β Β |
A ECMAScript (JavaScript) compatible regular expression engine. |
|
Robotics
Library |
Stars |
Description |
License |
manif |
|
Small library for Lie theory. |
|
Serialization
Library |
Stars |
Description |
License |
alpaca |
|
Serialization library written in C++17. |
|
cereal |
|
A C++11 library for serialization. |
|
essentials |
|
Transparent serialization/deserialization. |
|
fuser |
|
Automatic (de)serialization of C++ types to/from JSON. |
|
YAS |
|
A C++11 (de)serialization library with support for binary/text/json archives. |
|
cista |
|
simple, high-performance, zero-copy C++ serialization & reflection library. |
|
SIMD
Library |
Stars |
Description |
License |
libsimdpp |
|
Low-level SIMD library. |
|
simde |
|
Implementations of SIMD instruction sets. |
|
tsimd |
|
Fundamental C++ SIMD types for Intel CPUs. |
|
Standard/Support Libraries
Library |
Stars |
Description |
License |
bitflags |
|
Easily managing set of flags. |
|
cpp-typelist |
|
Modern typelist for C++20 |
|
expected |
|
C++11/14/17 std::expected. |
|
expected-lite |
|
Expected objects in C++11 and later. |
|
gsl |
|
ISO C++ Guidelines Support Library (GSL) by Microsoft. |
|
gsl-lite |
|
ISO C++ Guidelines Support Library (GSL). |
|
hana |
|
Your standard library for metaprogramming. |
|
itlib |
|
Standard-library-like containers and extensions. |
|
leaf |
|
Lightweight Error Augmentation Framework. |
|
libunifex |
|
Unified Executors |
|
match(it) |
|
A lightweight pattern-matching library for C++17 with macro-free APIs. |
|
mp11 |
|
C++11 metaprogramming library. |
|
NanoRange |
|
Range-based goodness for C++17. |
|
numeric_ranges |
|
Numeric algorithms for C++20 Ranges. |
|
optional |
|
C++11/14/17 std::optional. |
|
optional-lite |
|
A C++17-like optional for C++98/11 and later. |
|
range-v3 |
|
Range library for C++14/17/20. |
|
rangesnext |
|
Tanges features for c+23 ported to C++20. |
|
span-lite |
|
A C++20-like span for C++98/11 and later. |
|
string-view-lite |
|
A C++17-like string_view for C++98/11 and later. |
|
uberswitch |
|
Alternative to the C++ switch statement. |
|
variant-lite |
|
A C++17-like variant for C++98/11 and later. |
|
Windows Implementation Libraries (WIL) |
Β Β Β Β Β Β Β Β |
Readable type-safe C++ interfaces for common Windows coding patterns. |
Β Β Β Β Β Β Β Β |
State Machine
Library |
Stars |
Description |
License |
hfsm2 |
|
High-performance hierarchical finite state machine framework. |
|
hsm |
|
Finite state machine library based on the boost hana. |
|
tinyfsm |
|
A simple C++ finite state machine library. |
|
SMLite |
|
State machine library for C, C++, C#, Java, JavaScript, Python, VB.Net . |
|
cuestate |
|
C++ template metaprogramming FSM. |
|
Statistics
Library |
Stars |
Description |
License |
histogram |
|
Multi-dimensional generalized histograms. |
|
kalman |
|
Kalman Filtering Library (EKF, UKF) based on Eigen3. |
|
stats |
|
Statistical distribution functions. |
|
String Utilities
Library |
Stars |
Description |
License |
utf-cpp |
|
UTF-8/16/32 for Windows/Linux/MacOs. |
|
wildcards |
|
String matching using wildcards. |
|
Templating Engines
Library |
Stars |
Description |
License |
inja |
|
A Template Engine for Modern C++. |
|
Terminal Utilities
Library |
Stars |
Description |
License |
indicators |
|
Activity Indicators for Modern C++. |
|
rang |
|
A Minimal library for terminal goodies πβ¨. |
|
termcolor |
|
Print colored messages to the terminal. |
|
Testing Frameworks
Library |
Stars |
Description |
License |
ApprovalTests.cpp |
|
Native ApprovalTests for C++. |
|
Catch2 |
|
Test framework for unit-tests, TDD and BDD. |
|
doctest |
|
The fastest feature-rich C++11/14/17/20 testing framework. |
|
iutest |
|
Test framework for unit-tests. |
|
lest |
|
Tiny framework for unit-tests, TDD and BDD. |
|
snitch |
|
Lightweight C++20 testing framework. |
|
ut |
|
UT: C++20 ΞΌ(micro)/Unit Testing Framework. |
|
Unicode
Library |
Stars |
Description |
License |
cpp-unicodelib |
|
C++17 Unicode library. |
|
uni-algo |
|
Unicode algorithms for C++17. |
|
Units
Library |
Stars |
Description |
License |
mpusz/units |
|
Compile-time dimensional analysis and unit/quantity manipulation. |
|
nholthaus/units |
|
Dimensional analysis and unit conversion library. |
|
SI |
|
Type safety and user defined literals for physical units. |
|
Validation
Library |
Stars |
Description |
License |
cpp-validator |
|
C++ library for data validation. |
|
Web Frameworks
Library |
Stars |
Description |
License |
crow |
|
Micro web framework inspired by Python Flask. |
|