universal-ctags/ctags logo

universal-ctags/ctags

Free

A maintained ctags implementation

FreeFree tier
Type
Open Source

About universal-ctags/ctags

Universal Ctags (u-ctags) is a maintained, community-driven fork of Exuberant Ctags. It generates an index (tag) file of language objects found in source files, enabling text editors and other tools to quickly locate definitions, functions, variables, and more. The project aims to continue development of Exuberant Ctags, which stalled, and offers improved multi-language support, a new extended C/C++ parser, fully extended optlib for defining new language parsers via command line, and an experimental interactive mode. It supports a wide range of programming languages and provides builds for Windows, Unix-like systems, macOS (via Homebrew), and Snap packages. The project is open-source under a permissive license and actively maintained on GitHub with over 7,200 stars.

Key Features

Generates tag/index files for language objects in source code
Supports a large number of programming languages with improved parsers
Extended C/C++ language parser for better symbol extraction
Fully extended optlib: define new language parsers from command line or config files
Experimental interactive mode for real-time tag generation
Cross-platform builds: Windows, Linux, macOS, Snap
Nightly and daily builds available for testing latest features
Active open-source development with over 7,200 GitHub stars

Pros & Cons

Pros
  • Actively maintained fork of the venerable Exuberant Ctags
  • Multi-language support out of the box
  • Extensible via optlib without recompilation
  • Free and open source with permissive license
  • Community-driven with regular updates and bug fixes
Cons
  • Interactive mode is experimental and may be unstable
  • Requires building from source on some platforms (no universal binary available for all)
  • No graphical user interface; command-line only
  • Some language parsers may be incomplete or less accurate than dedicated tools
  • Learning curve for optlib customization

Best For

Code navigation in editors (Vim, Emacs, VS Code, etc.)Automated code browsing and documentation generationIndexing large codebases for quick symbol lookupIntegration into CI/CD pipelines for tag generationCustom parser definitions for lesser-known or domain-specific languages

FAQ

What is Universal Ctags?
Universal Ctags (u-ctags) is a maintained implementation of ctags that generates index/tag files of language objects in source files, enabling text editors and other tools to locate indexed items. It is a community fork of Exuberant Ctags.
How do I install Universal Ctags?
Installation varies by platform. On Windows, daily builds are available from the ctags-win32 project. On Unix-like systems, nightly builds can be found at the ctags-nightly-build project. macOS users can use the Homebrew formula universal-ctags. Additionally, Snap packages are available via the ctags-snap repo. Building from source with Autotools is also supported.
What languages does Universal Ctags support?
Universal Ctags supports a large number of programming languages, with improved parsers for many, including an extended C/C++ parser. The project continues to add and improve language support.
Can I define my own language parser?
Yes, Universal Ctags offers fully extended optlib, which allows users to define new language parsers using regular expressions from the command line or configuration files, without recompiling.
Is Universal Ctags free?
Yes, Universal Ctags is free and open-source software, licensed under the GPL (see COPYING file).