A curated list of awesome header-only C++ libraries
Table of Contents
-
Argument Parsers
-
Audio
-
Benchmarking
-
Communication
-
Compression
-
Concurrency
-
Cryptography and Security
-
Databases
-
Data Formats
-
Data Mining, Machine Learning, and Deep Learning
-
Data Formatting and Presentation
-
Data Querying
-
Data Structures and Algorithms
-
Debugging
-
Deep Learning
-
Event Handling Mechanisms
-
File System
-
Functional Programming
-
Geometry, Graphics Processing, and Game Development
-
GPU
-
Graph
-
GUI
-
High-performance Computing
-
HTTP and the Web
-
Image Processing
-
Language Bindings
-
Language Development
-
Logging
-
Mathematics
-
Memory Management
-
Mocking
-
Networking
-
Optimization
-
Parsing Expression Grammars
-
Portability Definitions
-
Reflection
-
Regular Expression
-
Robotics
-
Serialization
-
SIMD
-
Standard/Support Libraries
-
State Machine
-
Statistics
-
String Utilities
-
Templating Engines
-
Terminal Utilities
-
Testing Frameworks
-
Units
-
Validation
-
Web Frameworks
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. |
 |
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<T> and result<T>. |
 |
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. |
-blue) |
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. |
 |
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
Robotics
Library |
Stars |
Description |
License |
manif |
 |
Small library for Lie theory. |
 |
Serialization
Library |
Stars |
Description |
License |
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. |
 |
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. |
 |
ut |
 |
UT: C++20 μ(micro)/Unit Testing Framework. |
 |
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. |
 |