macOS
brew install universal-ctagslocal Homebrew formula metadata
sudo port install universal-ctagsMacPorts ports tree · devel/universal-ctags/Portfile · source: api.github.com
brew
Maintained ctags implementation. Version 6.2.1 via Homebrew; verified 2026-05-15.
install
brew install universal-ctagslocal Homebrew formula metadata
sudo port install universal-ctagsMacPorts ports tree · devel/universal-ctags/Portfile · source: api.github.com
sudo apt install universal-ctagsDebian stable package indexes · universal-ctags · source: deb.debian.org
nix profile install nixpkgs#universal-ctagsnixpkgs package indexes · pkgs/by-name/un/universal-ctags/package.nix · source: api.github.com
sudo pacman -S ctagsArch Linux sync databases · ctags · source: geo.mirror.pkgbuild.com
sudo zypper install universal-ctagsopenSUSE Tumbleweed package metadata · universal-ctags · source: download.opensuse.org
choco install universal-ctagsChocolatey community package catalog · universal-ctags · source: community.chocolatey.org
scoop install extras/universal-ctagsScoop official bucket manifest trees · bucket/universal-ctags.json · source: api.github.com
winget install --id UniversalCtags.Ctags -eWindows Package Manager source index · UniversalCtags.Ctags · source: cdn.winget.microsoft.com
overview
Maintained ctags implementation
history
Universal Ctags is the maintained continuation of the ctags tradition: a command-line indexer that emits tag files for editors and source-navigation tools. Its package history is inseparable from Exuberant Ctags, whose development stalled after becoming the de facto multi-language ctags implementation.
The Universal Ctags README states that Exuberant Ctags, maintained by Darren Hiebert, improved traditional ctags with multi-language support, user-defined regex languages, and Emacs TAGS output, but that project activity stalled. Reza Jelveh initially created a personal GitHub fork, and growing participation led to a dedicated Universal Ctags project.
Universal Ctags set out to continue Exuberant Ctags in a shared working space. It added and improved language parsers, extended optlib for defining parsers, developed experimental interactive mode, and documented incompatibilities where the maintained implementation deliberately diverges from Exuberant behavior.
ctags files are a long-standing contract between command-line indexers and editors. Universal Ctags' adoption grew because Vim, Emacs, source browsers, IDE plugins, static documentation tools, and cross-reference engines still benefit from a fast, language-aware tags generator.
The official docs track related consumers and neighboring projects, including GNU Global, GNU Source-highlight, OpenGrok, Pygments, Geany, Anjuta, and Vim Tagbar. The input also shows broad packaging under names such as universal-ctags or ctags across Homebrew, Debian, Ubuntu, Fedora, Arch, Nix, MacPorts, Windows package managers, and others.
The basic package workflow is simple: run ctags over a source tree and point an editor or tool at the generated tags file. Advanced users customize language parsing, emitted fields, extras, pseudo-tags, and per-directory option files.
Universal Ctags changed important configuration defaults compared with Exuberant Ctags. Its README calls out that it does not load ~/.ctags and ./.ctags at startup, preferring ~/.ctags.d/*.ctags and ./.ctags.d/*.ctags; that matters directly to package upgrades and dotfile migrations.
Universal Ctags is package-nerd significant because it is a tiny binary with a huge blast radius: editors, code browsers, documentation systems, and source-search tools may all consume its output. Keeping it maintained keeps decades of ctags workflows viable for modern languages.
It is also a clean example of the package-manager replacement pattern: distributions can switch users from an unmaintained upstream to a maintained fork while preserving the old command name and most file-format compatibility.
security posture
narrow executable package without higher-risk signals.
green risk · low confidence · appliance
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
local files
These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.
Config paths the tool may read or write during local use.
$XDG_CONFIG_HOME/ctags/*.ctags~/.config/ctags/*.ctags~/.ctags.d/*.ctags./.ctags.d/*.ctags./ctags.d/*.ctags%HOMEDRIVE%%HOMEPATH%\ctags.d\*.ctagsexecutables
| Command | Kind | Exposure | Note |
|---|---|---|---|
optscript | cli | global executable | |
readtags | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
https://github.com/universal-ctags/ctags
install metadata
| Package key | brew:universal-ctags |
|---|---|
| Version | 6.2.1 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/universal-ctags |
| Homepage | https://ctags.io/ |
| Repository | https://github.com/universal-ctags/ctags |
| Upstream docs | https://docs.ctags.io/ |
| License | GPL-2.0-or-later |
| Source archive | https://github.com/universal-ctags/ctags/releases/download/v6.2.1/universal-ctags-6.2.1.tar.gz |
| Last updated | 2026-05-15T12:49:28-04:00 |
| Pulse | updated |
| Dependencies | jansson, libyaml, pcre2 |
| Build dependencies | docutils, pkgconf, python@3.14 |
| Uses from macOS | libxml2 |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | universal-ctags |
| Version Scheme | 0 |
| Revision | 0 |
| Head Version | HEAD |
| Conflicts With |
|
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
universal-ctags 5.9.20210829.0-2
build tag file indexes of source code definitions
sudo apt install universal-ctagsuniversal-ctags
nix profile install nixpkgs#universal-ctagsuniversal-ctags 5.9.20210829.0-1
build tag file indexes of source code definitions
sudo apt install universal-ctagsctags 1:6.2.1-1
Generates an index file of language objects found in source files
sudo pacman -S ctagsuniversal-ctags 6.2.1-1.1
A program to generate language tag files used with various editors
https://github.com/universal-ctags/ctags
sudo zypper install universal-ctagsuniversal-ctags
sudo port install universal-ctagsuniversal-ctags
choco install universal-ctagsextras/universal-ctags
scoop install extras/universal-ctagsUniversalCtags.Ctags
winget install --id UniversalCtags.Ctags -eUniversalCtags.Ctags.Nightly
winget install --id UniversalCtags.Ctags.Nightly -esource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.