Open-source project
fffaraz/awesome-cpp avatar
fffaraz/awesome-cpp

Awesome C++ is a link index with licence tags, not a dependency you can install

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

73,517 stars8,349 forksUnknownMIT

At a glance

What is it?
fffaraz/awesome-cpp is a single Markdown document that sorts C and C++ frameworks, tools and books into roughly fifty categories, one line per project. Its most reusable field is the licence tag on each line. Its weakest point is that a listed link carries no date, so presence in the list says nothing about whether the project still builds.
Who is it for?
Use awesome-cpp the way you would use a yellow pages: it tells you which category a problem lives in and who maintains an answer, and its licence tags save you the first round of legal checking. Do not treat a line in the list as a recommendation, and do not pin a version from it, because the document has no releases and no per-entry dates.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One Markdown file, one line per project

There is no build here and nothing to install. The top level holds .github/, CONTRIBUTING.md, LICENSE, README.md, books.md, todo.txt and videos.md, and the whole payload a reader consumes lives in README.md. The unit of curation is a single line: a link, a sentence of description, and a licence tag. The Standard Libraries section shows the format at its plainest. The C++ Standard Library is described as a collection of classes and functions written in the core language and part of the C++ ISO Standard itself, and it sits beside the Standard Template Library, the C POSIX library, the ISO C++ Standards Committee and the GNU C Library. Five entries, five sentences, no scores and no preferred pick. That is the editorial model for the whole document: place the project in a category, describe what it is, point at its own page, stop.

The licence tag on each line is a pointer, not the licence

The MIT licence covers the list, a document of links, and says nothing about the projects it names. What you can actually use is the tag at the end of each line, and the tags are more varied than the document's own licence suggests. In the Frameworks section abseil-cpp is tagged Apache2, Adobe Source Libraries MIT, the Electronic Arts Standard Template Library BSD, the Embedded Template Library MIT, Folly Apache2, and GLib LGPL. AUI, a declarative UI toolkit for C++20, carries MPL2. The sharpest case is JUCE, an all-encompassing class library for cross-platform software, tagged Core-Module: ISC, Rest: GPL2/GPL3/Proprietary. So the tag tells you where to start reading, and in the JUCE case it tells you that one licence does not cover the whole thing. The consequence for a reader is that the tag saves a first round of legal checking but cannot replace it.

A line in the list is no evidence the project still builds

Curated lists decay, and this one is honest about it rather than hiding it. Entries carry status markers, and the Apache C++ Standard Library is tagged retired even though it remains listed under Frameworks. The Contributing section asks readers to submit a pull request when they see a project or link that is no longer maintained or is not a good fit. The repository has no GitHub releases at all, so there is no version history to check, and no entry carries the date it was last verified. The last push was 2026-09-27, which tells you the document is being touched, not that any individual line is current. The consequence is concrete: a link being present is a statement about the past. For anything you plan to depend on, the project's own repository and release history are the only current evidence.

Categories tell you where to look, never which one to pick

The list runs to roughly fifty categories under its table of contents, and the spread says more about the state of C++ than any ranking could. There are Graphics, Game Engine, GUI, Image Processing and Font; Networking, Async Event Loop, Serialization, Reflection, Regular Expression, JSON, XML and Yaml; Concurrency, Containers, Memory Allocation, Logging, Debug and CLI. Then the ones that show the language's reach into other fields: BitTorrent, Biology, Chemistry, DSP, Robotics, Scientific Computing, Office Open XML and PDF. A separate Software section holds Compiler, Online Compiler, Debugger, Integrated Development Environment, Build Systems, Static Code Analysis and Coding Style Tools. The strength is coverage. The cost is that a category is a container, not a verdict. Searching for a graphics library means reading every entry in the category, because nothing in the document scores them against each other.

Reading it means scrolling, because there is no search or filter

One long document is the whole interface. The homepage at fffaraz.github.io/awesome-cpp/ renders the same content in a browser, which helps on a phone but does not add filtering, and the entries in the rendered page are the entries in README.md, not a shorter selection. Longer material is pushed out of the main file rather than indexed inside it: books.md, videos.md and todo.txt sit at the top level as their own documents. todo.txt is the interesting one, a plain text file tracking what is still to be added. Nothing in the document marks an entry as queued, and nothing marks an entry as newly added, so a reader cannot tell a fresh recommendation from one that has sat in the same spot for years. Bookmarking a category anchor works, but it is the only navigation the format offers.

awesome.re indexes the lists, this repository is one language

The document links to awesome.re at the top and to a tracking entry for this list, and its own table of contents ends with a section for Other Awesome Lists. That is the alternative worth naming, and the difference is one of level rather than quality. awesome.re is a directory of curated lists across many subjects, so it answers the question of which list to read. This repository answers a different question inside one language, and goes deeper on C and C++ than any index entry would. The Framework section is the clearest case: Folly and libPhenom come from Facebook, BDE from Bloomberg Labs, EASTL from Electronic Arts, and each is described in a few words and tagged with its licence. An index will never hold that. In exchange, you give up any way to compare across languages, and for a project that weighs C++ against Go or Rust, this list does not help.

Adopting a list means re-reading it, because nothing is pinned

The cost of depending on this document is reading time, not a dependency, and that is its main practical virtue. Nothing gets installed, nothing breaks at a patch release, and the MIT licence lets you fork it and reorganise the categories for your own team without asking. The same property is its weakness. Because there are no releases and no tags, the content moves under the reader between visits, so a link you bookmarked a year ago may now point somewhere else or nowhere, and a section you remembered as short may have grown. Entries are also unevenly documented. Some carry a second link to a project website, so Boost points at boost.org and Dlib at dlib.net, while other Framework entries, including Cxxomfort and ffead-cpp, give only the repository. The README also closes with Jobs and Sponsors sections, so the document mixes reference material with recruitment and funding, which is worth knowing before you mirror it into an internal wiki. Treating it as a snapshot of one moment in C++ is the only way to use it that stays honest.

Editorial conclusion

Use awesome-cpp the way you would use a yellow pages: it tells you which category a problem lives in and who maintains an answer, and its licence tags save you the first round of legal checking. Do not treat a line in the list as a recommendation, and do not pin a version from it, because the document has no releases and no per-entry dates. Before you adopt anything it names, open the project's own repository and read its licence and its last release, since the tag in the list is a pointer rather than the licence itself.

Frequently asked questions

Is awesome-cpp still being updated?

The repository's last push was 2026-09-27 and it has no GitHub releases. Its Contributing section asks readers to open a pull request when a listed project is no longer maintained, so upkeep is a pull request process rather than a published version stream.

What licence does awesome-cpp use, and what about the projects it lists?

The list itself is MIT licensed, which covers the document of links only. Each listed project carries its own tag, and they differ: abseil-cpp is tagged Apache2, EASTL BSD, GLib LGPL, and JUCE is tagged Core-Module: ISC, Rest: GPL2/GPL3/Proprietary.

Does awesome-cpp recommend or rank the libraries it lists?

No. Entries are organised by category and carry a description and a licence tag, with no scores. The Standard Libraries section lists the C++ Standard Library, the Standard Template Library, the C POSIX library, the ISO C++ Standards Committee and the GNU C Library side by side without preferring one.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/fffaraz-awesome-cpp.svg)](https://hysenlabs.com/projects/fffaraz-awesome-cpp)