awesome-hpp
A curated list of awesome header-only C++ libraries
https://github.com/p-ranav/awesome-hpp
Last synced: 13 days ago
JSON representation
Argument Parsers
- Argh! - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- argparse - ranav/argparse?style=social)](https://github.com/p-ranav/argparse/stargazers/) | Argument Parser for Modern C++. | |
- args - only C++ argument parser library. | |
- cmd_line_parser - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- CLI11 - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- clipp - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- cxxopts - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- fire-hpp - hpp?style=social)](https://github.com/kongaskristjan/fire-hpp/stargazers/) | Create fully functional CLIs using function signatures. | |
- flags - only C++17 argument parser. | |
- structopt - ranav/structopt?style=social)](https://github.com/p-ranav/structopt/stargazers/) | Parse command line arguments by defining a struct. | |
Audio
- miniaudio - Unlicense-blue.svg)](http://unlicense.org/) |
- minimp3 - 1.0](https://img.shields.io/badge/License-CC0%201.0-lightgrey.svg)](http://creativecommons.org/publicdomain/zero/1.0/) |
Benchmarking
- criterion - ranav/criterion?style=social)](https://github.com/p-ranav/criterion/stargazers/) | Microbenchmarking for Modern C++. | |
- nanobench - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- picobench - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
Communication
- comms - MPL%202.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0) |
Compression
- Gzip - hpp?style=social)](https://github.com/mapbox/gzip-hpp/stargazers/) | Gzip header-only C++ library. | |
- interpolative_coding - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- zstr - only ZLib wrapper. | |
Concurrency
- cs_libguarded - BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause) |
- taskflow - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- task_system - ranav/task_system?style=social)](https://github.com/p-ranav/task_system/stargazers/) | Better Code: Concurrency - Sean Parent. | |
- transwarp - only C++ library for task concurrency. | |
- taskpool - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- thread-pool - pool?style=social)](https://github.com/DeveloperPaul123/thread-pool/stargazers/) | Modern C++20 thread-pool. |
Cryptography and Security
- cppcodec - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- digestpp - only message digest library. | |
- PicoSHA2 - file-only, SHA256 hash generator in C++. | |
- plusaes - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- stduuid - platform implementation for UUIDs. | |
Databases
- OTL - CLI Template Library. | OpenBSD |
Data Formats
- bencode - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- cpptoml - only library for parsing TOML. | |
- csv2 - ranav/csv2?style=social)](https://github.com/p-ranav/csv2/stargazers/) | Fast CSV parser and writer for Modern C++. | |
- CSV Parser - parser?style=social)](https://github.com/vincentlaucsb/csv-parser/stargazers/) | Reading, writing, and analyzing CSV files. | |
- daw_json_link - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- Fast C++ CSV Parser - strasser/fast-cpp-csv-parser?style=social)](https://github.com/ben-strasser/fast-cpp-csv-parser/stargazers/) | Fast library for reading CSV files. | |
- FlatJSON - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- Glaze - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- inih - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- nlohmann/json - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- json_struct - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- jsoncons - like data formats. | |
- minicsv - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- picojson - file-only, JSON parser serializer in C++. | |
- pugixml - like interface and XPath 1.0 support. | |
- rapidcsv - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- rapidjson - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- rapidxml - element parsing, etc. | |
- simdjson - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- simpleini - style configuration files. | |
- taocpp JSON - only JSON library. | |
- toml11 - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- tomlplusplus - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- tortellini - /tortellini?style=social)](https://github.com/Qix-/tortellini/stargazers/) | A really stupid INI file format for C++11. | |
- valijson - BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause) |
- xml2json - only C++ library converts XML to JSON. | |
- Boost.JSON - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
Data Formatting and Presentation
- asap - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- cxx prettyprint - prettyprint?style=social)](https://github.com/louisdx/cxx-prettyprint/stargazers/) | Pretty-printing of any container in C++(0x). | |
- emio - level and low-level character input/output C++20 library. | |
- fmt - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- pprint - ranav/pprint?style=social)](https://github.com/p-ranav/pprint/stargazers/) | Pretty Printer for Modern C++. | |
- strf - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- tabulate - ranav/tabulate?style=social)](https://github.com/p-ranav/tabulate/stargazers/) | Table Maker for Modern C++. | |
Data Mining, Machine Learning, and Deep Learning
- dlib - world machine learning and data analysis. | |
- frugally deep - deep?style=social)](https://github.com/Dobiasd/frugally-deep/stargazers/) | Use Keras models in C++. | |
- gaenari - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- hnswlib - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- MiniDNN - only C++ library for deep neural networks. | |
- mlpack - only C++ machine learning library. | |
- nanoflann - trees. | |
- tiny-dnn - dnn/tiny-dnn?style=social)](https://github.com/tiny-dnn/tiny-dnn/stargazers/) | Dependency-free deep learning framework in C++14. | |
Data Querying
- boolinq - prettyprint?style=social)](https://github.com/louisdx/cxx-prettyprint/stargazers/) | Simplest C++ header-only LINQ template library. | |
Data Structures and Algorithms
- BitMagic - vectors, logical operations, memory compact containers. | |
- dynamic bitset - only dynamic bitset. | |
- frozen - sans-paille/frozen?style=social)](https://github.com/serge-sans-paille/frozen/stargazers/) | Constexpr alternative to gperf for C++14 users. | |
- hopscotch map - map?style=social)](https://github.com/Tessil/hopscotch-map/stargazers/) | Fast hash map and hash set using hopscotch hashing. | |
- immer - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- MPMCQueue - producer multi-consumer concurrent queue. | |
- outcome - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- parallel hashmap - hashmap?style=social)](https://github.com/greg7mdp/parallel-hashmap/stargazers/) | Very fast and memory-friendly hashmap and btree containers. | |
- PGM-index - index?style=social)](https://github.com/gvinciguerra/PGM-index/stargazers/) | Blazing fast queries and updates over billions of items using orders of magnitude less memory than other containers. | |
- robin-hood hashing - hood-hashing?style=social)](https://github.com/martinus/robin-hood-hashing/stargazers/) | Fast & memory efficient hashtable based on robin hood hashing. | |
- robin-map - map?style=social)](https://github.com/Tessil/robin-map/stargazers/) | Fast hash map and hash set using robin hood hashing. | |
- sfl-library - library?style=social)](https://github.com/slavenf/sfl-library/stargazers/) | Small vector. Small flat map/multimap/set/multiset (ordered and unordered). C++11. | |
- small - bsl-lightgrey.svg)](https://opensource.org/license/bsl-1-0) |
- tries - 2.0](https://img.shields.io/badge/license-GPL%20(%3E%3D%202)-blue)](https://opensource.org/licenses/GPL-2.0)
Debugging
- backward-cpp - cpp?style=social)](https://github.com/bombela/backward-cpp/stargazers/) | A beautiful stack trace pretty printer for C++. | |
Deep Learning
- ceras - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
Dependency Injection
- inversify-cpp - cpp?style=social)](https://github.com/mosure/inversify-cpp/stargazers/) | C++17 inversion of control and dependency injection container library. | |
Event Handling Mechanisms
- eventbus - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- eventpp - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- periodic-function - function?style=social)](https://github.com/developerpaul123/periodic-function/stargazers/) | Callbacks at a specified time interval. | |
File System
- simplebinstream - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- filesystem - platform implementation of std::filesystem for C++11/14/17. | |
- glob - ranav/glob?style=social)](https://github.com/p-ranav/glob/stargazers/) | Glob for C++17. | |
- llfio - Level file i/o and filesystem library. | |
- mm_file - mapped files for C++. | |
- tinydir - BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause) |
- mio - platform C++11 memory mapped file IO. | |
Functional Programming
- FunctionalPlus - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- lager - like unidirectional data-flow for C++. | |
- schmutz - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- zug - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
Geometry, Graphics Processing, and Game Development
- arcball_camera - mode camera for your graphics demos. | |
- Brutus - Unlicense-blue.svg)](http://unlicense.org/) |
- cinolib - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- cr - only Library. | |
- CxxSwizzle - only library. | |
- earcut.hpp - ISC-blue.svg)](https://opensource.org/licenses/ISC) |
- entt - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- glm - truc/glm?style=social)](https://github.com/g-truc/glm/stargazers/) | OpenGL Mathematics (GLM). | |
- librg - c/librg?style=social)](https://github.com/zpl-c/librg/stargazers/) | 🚀 Making multi-player gamedev simpler since 2017. | |
- micro-gl - gl/micro-gl?style=social)](https://github.com/micro-gl/micro-gl/stargazers/) | 👾 CPU Vector Graphics Engine (No FPU or std-lib needed). | |
- nanort - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- px - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- Simple OpenGL Loader - opengl-loader?style=social)](https://github.com/tsherif/simple-opengl-loader/stargazers/) | Extensible, cross-platform OpenGL loader. | |
- Sokol - platform libraries for C and C++. | |
- stb - file public domain libraries. | |
- Swarmz - time applications. | |
- tinygltf - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- tweeny - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- Vookoo - thomason/Vookoo?style=social)](https://github.com/andy-thomason/Vookoo/stargazers/) | Take the pain out of Vulkan. | |
- voxelizer
- tiny-differentiable-simulator - research/tiny-differentiable-simulator?style=social)](https://github.com/google-research/tiny-differentiable-simulator/stargazers/) | Tiny Differentiable Simulator is a header-only C++ physics library with zero dependencies. | |
GPU
- thrust - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- vuda - based library that provides a CUDA Runtime API interface for writing GPU-accelerated applications. | |
- muda - friendly memory accessor, automatic CudaGraph generation & updating for CUDA. | |
Graph
- CXXGraph - AGPL%203.0-blue.svg)](https://opensource.org/licenses/AGPL-3.0) |
- Graaf - purpose lightweight C++20 graph library. | |
GUI
- Centurion - johansson/centurion?style=social)](https://github.com/albin-johansson/centurion/stargazers/) | A modern C++17/20 wrapper library for SDL2. | |
- GuiLite - only GUI library(5 KLOC) for all platforms. | |
- Nuklear - Mode-UI/Nuklear?style=social)](https://github.com/Immediate-Mode-UI/Nuklear/stargazers/) | Immediate mode cross-platform GUI library. | |
- WinLamb - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
High-performance Computing
- MPL - forum.org/) standard. | |
HTTP and the Web
- cinatra - platform Http Framework. | |
- cpp-httplib - httplib?style=social)](https://github.com/yhirose/cpp-httplib/stargazers/) | A C++11 Cross platform HTTP/HTTPS library. | |
- jwt-cpp - cpp?style=social)](https://github.com/Thalhammer/jwt-cpp/stargazers/) | Create and validate JSON web tokens. | |
- RESTinio - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- cuehttp - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- libfv - only network library, support TCP/SSL/Http/websocket server and client | |
- NetIF - TDC/netif?style=social)](https://github.com/GMLC-TDC/netif/stargazers/) | Cross-platform network interface addresses without name lookups in C++14. | |
Image Processing
- CImg - CeCILL-blue.svg)](http://cecill.info/licences/Licence_CeCILL_V2-en.html) |
- color-util - koyama/color-util?style=social)](https://github.com/yuki-koyama/color-util/stargazers/) | Colors, Color space converters for RGB, HSL, XYZ, Lab, etc. | |
- color - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- nanopm
- noise2d - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
Language Bindings
- jni.hpp - safe, C++14 wrapper for JNI. | |
- pybind11 - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- Selene - Zlib-lightgrey.svg)](https://opensource.org/licenses/Zlib) |
- Sol - a C++ <-> Lua API wrapper with advanced features and top notch performance. | |
- v8pp - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
Language Development
- Command Interpreter - soft/command-interpreter?style=social)](https://github.com/empirical-soft/command-interpreter/stargazers/) | Add a command interpreter (eg., REPL) to any C++ program. | |
Logging
- plog - MPL%202.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0) |
- spdlog - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
Mathematics
- exprtk - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- amgcl - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- dj_fft - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- eigen - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- fpm - point math library. | |
- kfr - GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) |
- libmorton - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- linalg - Unlicense-blue.svg)](http://unlicense.org/) |
- matplotlib-cpp - cpp?style=social)](https://github.com/lava/matplotlib-cpp/stargazers/) | C++ plotting library built on the popular matplotlib. | |
- mathplot - Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
- matrix - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- NumCpp - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- random - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- spectra - only C++ library for large scale eigenvalue problems. | |
- universal - sc/universal?style=social)](https://github.com/stillwater-sc/universal/stargazers/) | Universal Number Arithmetic. | |
Memory Management
- ugc - BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause) |
Mocking
- FakeIt - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- trompeloeil - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
Networking
- asio
- asio-grpc - grpc?style=social)](https://github.com/Tradias/asio-grpc/stargazers/) | Asynchronous gRPC with Asio/unified executors. | |
- brynet - platform C++ TCP network library. | |
- cppzmq - only C++ binding for libzmq. | |
- uvw - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
Optimization
- ensmallen - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
Parsing
- lexertl14 - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
- Matcheroni & Parseroni - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- parsertl14 - Boost%201.0-lightblue.svg)](https://www.boost.org/LICENSE_1_0.txt) |
Parsing Expression Grammars
- cpp-peglib - peglib?style=social)](https://github.com/yhirose/cpp-peglib/stargazers/) | PEG (Parsing Expression Grammars) library. | |
- lug - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- PEGTL - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
Portability Definitions
Reflection
- better-enums - enums?style=social)](https://github.com/amrayn/aantron/better-enums/) | C++ compile-time enum to string, iteration. | |
- magic_enum - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- meta - free runtime reflection system. | |
- nameof - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- refl-cpp - cpp?style=social)](https://github.com/veselink1/refl-cpp/stargazers/) | Compile-time reflection library. | |
Regular Expression
- compile-time regular expressions - time-regular-expressions?style=social)](https://github.com/hanickadot/compile-time-regular-expressions/stargazers/) | A Compile time regular expression matcher. | |
- SRELL - BSD%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause) |
Robotics
- manif - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
Serialization
- alpaca - ranav/alpaca?style=social)](https://github.com/p-ranav/alpaca/stargazers/) | Serialization library written in C++17. | |
- cereal - BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) |
- essentials - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- fuser - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |
- YAS - MIT-yellow.svg)](https://opensource.org/licenses/MIT) |