# gulrak/filesystem

An implementation of C++17 std::filesystem for C++11 /C++14/C++17/C++20 on Windows, macOS, Linux and FreeBSD.

Repository: https://github.com/gulrak/filesystem
Canonical: https://ross.abutalabs.com/products/gulrak-filesystem
Language: C++
License: MIT
License Family: permissive
Topics: cpp, cpp11, cpp14, cpp17, header-only, windows-10, macos, linux, filesystem, freebsd, cpp20
Last push: 2026-07-23T13:52:29+00:00

## Health v2 (maintenance only)
Score: 84/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 94, release rhythm 61, longevity 100
- inputs: {"age_days": 2922, "days_push": 41, "days_rel": 45, "gap_med": null, "n_releases_24m": 1}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1559, forks 203 (observed 2026-08-28T04:05:03.554378+00:00)

## What it is
A header-only, single-file C++ library that implements the C++17 std::filesystem API, usable from C++11 through C++20. It closely follows the standard with documented exceptions and runs on Windows, macOS, Linux, FreeBSD, and additional platforms like Android, iOS, and Emscripten.

## Use cases
- use std::filesystem APIs in a C++11 or C++14 project
- polyfill for std::filesystem on compilers without C++17 support
- portable file and directory operations across Windows, macOS, and Linux
- single-header C++ library for manipulating paths and directories
- drop-in filesystem namespace for mixed C++ standard codebases
- cross-platform C++ code that needs directory iteration and file metadata

## When to choose
- you need std::filesystem-style code but must target pre-C++17 toolchains
- you want one dependency-free header that works across Windows, macOS, Linux, and FreeBSD
- you prefer header-only libraries with no build system integration required
- you are migrating a codebase toward std::filesystem incrementally

## When to avoid
- you compile with C++17 or later and can use the standard std::filesystem directly
- you need behavior beyond the documented deviations from the C++17 standard
- you require full symlink or permission semantics on platforms with known gaps, such as Windows
- you need a filesystem abstraction with extra features beyond the standard API

## Facets
- artifact type: library
- maturity: stable
- function: file-system
- domain: developer-tools, cross-platform, files
- platform: cpp, cross-platform, windows, bsd
- tags: header-only, single-header, polyfill, std-filesystem, cpp11, cpp14, cpp17, cpp20, ghc-filesystem, portable, no-build-step, macos, linux, android, ios

## Member repositories
- gulrak/filesystem (main) score 84

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:03.554378+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T04:29:50.327240+00:00, confidence not recorded.
  - readme: https://github.com/gulrak/filesystem (fetched 2026-08-28T04:05:03.554378+00:00, sha 8b704da54844)
- Data as of 2026-08-30T08:39:29.467469+00:00.
