Awesome
<p align="center"> <img height="70" src="img/logo.png"/> </p> <p align="center"> <b>Awesome header-only C++ libraries</b> </p> <p align="center"> <a href="https://github.com/sindresorhus/awesome"> <img src="https://github.com/sindresorhus/awesome/blob/main/media/badge.svg"> </p>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
- Dependency Injection
- 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
- 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
- Unicode
- 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 |
---|---|---|---|
miniaudio | Audio playback and capture library written in C, in a single source file. | ||
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
Library | Stars | Description | License |
---|---|---|---|
cs_libguarded | Multithreaded programming. | ||
taskflow | Modern C++ Parallel Task Programming. | ||
task_system | Better Code: Concurrency - Sean Parent. | ||
transwarp | A header-only C++ library for task concurrency. | ||
taskpool | Modern C++ taskpool. | ||
thread-pool | Modern C++20 thread-pool. |
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. | ||
Glaze | Extremely fast, in memory, JSON and interface library for modern C++. | ||
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). | ||
emio | A safe and fast high-level and low-level character input/output C++20 library. | ||
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. | ||
small | Implementations of the main STL containers optimized for the case when they are small. | ||
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. |
Dependency Injection
Library | Stars | Description | License |
---|---|---|---|
inversify-cpp | C++17 inversion of control and dependency injection container library. |
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. | ||
micro-gl | 👾 CPU Vector Graphics Engine (No FPU or std-lib needed). | ||
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. | ||
muda | Elegant kernel launch, debug-friendly memory accessor, automatic CudaGraph generation & updating for CUDA. |
Graph
Library | Stars | Description | License |
---|---|---|---|
CXXGraph | Graph Representation and Algorithms Library >= C++17 | ||
Graaf | A general-purpose lightweight C++20 graph library. |
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
Library | Stars | Description | License |
---|---|---|---|
MPL | A C++11 message passing library based on the Message Passing Interface standard. |
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 | ||
NetIF | Cross-platform network interface addresses without name lookups in C++14. |
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
Library | Stars | Description | License |
---|---|---|---|
lexertl14 | The Modular Lexical Analyser Generator. | ||
Matcheroni & Parseroni | C++20 libraries for doing pattern matching using Parsing Expression Grammars | ||
parsertl14 | The Modular Parser Generator. |
Parsing Expression Grammars
Library | Stars | Description | License |
---|---|---|---|
cpp-peglib | PEG (Parsing Expression Grammars) library. | ||
lug | A C++17 embedded domain specific language for expressing parsers as extended PEG. | ||
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. | ||
flux | A C++20 library for sequence-orientated programming. | ||
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 |
---|---|---|---|
LLNL/units | Run-time unit representation and conversion. | ||
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. |