# Install nfd2nfc with Homebrew, MacPorts

Convert filesystem entry names from NFD to NFC for cross-platform compatibility. Version 2.1.0 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:nfd2nfc
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install nfd2nfc
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install nfd2nfc
```

  Evidence: MacPorts ports tree: sysutils/nfd2nfc/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:nfd2nfc
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/nfd2nfc>
- **Version:** 2.1.0
- **Source summary:** Convert filesystem entry names from NFD to NFC for cross-platform compatibility
- **Homepage:** <https://github.com/elgar328/nfd2nfc>
- **Repository:** <https://github.com/elgar328/nfd2nfc>
- **Upstream docs:** <https://github.com/elgar328/nfd2nfc#readme>
- **License:** MIT
- **Source archive:** <https://github.com/elgar328/nfd2nfc/archive/refs/tags/v2.1.0.tar.gz>
- **Generated:** 2026-07-08T18:08:21+00:00

## Executables

- nfd2nfc (cli)
- nfd2nfc-watcher (cli)
- nfd2nfc (alias)
- nfd2nfc-watcher (alias)

## Build dependencies

- rust

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 2.1.0
- Local data: ok
- Upstream repository: https://github.com/elgar328/nfd2nfc
- Upstream latest detected: v2.1.0 (current)
- info: No package-manager update timestamp was available.
## Project history and usage

nfd2nfc is a macOS-focused filename-normalization utility. It watches directories and converts filesystem entry names from Unicode NFD to NFC so files shared from macOS behave better on Windows, Linux, Git, cloud sync, archives, and other tools that expect composed Unicode names.

### Project history

The project documents the root problem plainly: macOS stores filenames in decomposed NFD form, while Windows and Linux commonly use NFC. nfd2nfc wraps that conversion in an interactive TUI, scriptable CLI, and background watcher service. The README says it moved from the maintainer's personal tap to homebrew-core starting with v2.0.7.

### Adoption history

Adoption is small but precise: it serves users who regularly move filenames with Hangul, accented Latin characters, Japanese kana, or other composed characters across platforms. The Homebrew API generated on 2026-07-01 reported 144 installs-on-request in the preceding 365 days, plus 7 HEAD installs.

### How it is used

The usual package-nerd path is `brew install nfd2nfc`, run `nfd2nfc` for the TUI, register watch paths, and let `nfd2nfc-watcher` convert new or modified filenames. For scripting, the README documents commands such as `nfd2nfc status --json`, `nfd2nfc convert <path> --mode recursive --target nfc --dry-run --json`, and watcher start/stop/restart commands.

Because it is a macOS watcher that renames files, permissions matter: upstream documents Full Disk Access for the watcher binary and notes that application-level NFD conversion by browsers, email, cloud storage, messaging apps, and archive tools remains outside nfd2nfc's scope.

### Why package nerds care

This is a classic small macOS packaging win: a narrow filesystem annoyance, a Homebrew formula, a LaunchAgent-backed watcher, JSON-friendly CLI output, and no cross-platform ambition beyond fixing the local source of bad filenames.

### Timeline

- v2.0.7: README migration notes say the project moved from the personal tap to homebrew-core.
- 2026-07-01: Homebrew formula API generated data for nfd2nfc 2.1.0.

### Related projects

- Unicode normalization
- macOS LaunchAgent
- Homebrew

### Sources

- <https://formulae.brew.sh/api/formula/nfd2nfc.json>
- <https://github.com/elgar328/nfd2nfc>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** nfd2nfc
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Requirements:** macos
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- MacPorts - nfd2nfc: normalized package name match | MacPorts ports tree: sysutils/nfd2nfc/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [rust](https://www.automicvault.com/pkg/brew/rust/) - Build dependency declared by Homebrew.
- [broot](https://www.automicvault.com/pkg/brew/broot/) - Shares av.db curated category or tags: cli, developer-tools, filesystem.
- [lndir](https://www.automicvault.com/pkg/brew/lndir/) - Shares av.db curated category or tags: cli, developer-tools, filesystem.
- [physfs](https://www.automicvault.com/pkg/brew/physfs/) - Shares av.db curated category or tags: cli, developer-tools, filesystem.
- [cconv](https://www.automicvault.com/pkg/brew/cconv/) - Shares av.db curated category or tags: cli, developer-tools, unicode.
- [chars](https://www.automicvault.com/pkg/brew/chars/) - Shares av.db curated category or tags: cli, developer-tools, unicode.
- [fclones](https://www.automicvault.com/pkg/brew/fclones/) - Shares av.db curated category or tags: cli, developer-tools, filesystem.
- [fselect](https://www.automicvault.com/pkg/brew/fselect/) - Shares av.db curated category or tags: cli, developer-tools, filesystem.
- [fsql](https://www.automicvault.com/pkg/brew/fsql/) - Shares av.db curated category or tags: cli, developer-tools, filesystem.
- [watcher](https://www.automicvault.com/pkg/brew/watcher/) - Local package facts share a topical domain. Shared terms: cli, cross, cross-platform, developer, developer-tools.
- [brename](https://www.automicvault.com/pkg/brew/brename/) - Local package facts share a topical domain. Shared terms: cli, cross, cross-platform, developer, developer-tools.
- [cassowary](https://www.automicvault.com/pkg/brew/cassowary/) - Local package facts share a topical domain. Shared terms: cli, cross, cross-platform, developer, developer-tools.

## Combined YAML source

View the package source record on GitHub. [combined/nfd2nfc.yml](https://github.com/automic-vault/db/blob/main/combined/nfd2nfc.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
