What is the RCS file format?
An .rcs file is a plain-text version-control archive produced by the Revision Control System, one of the oldest source-code management tools still in active use. It stores the complete revision history of a single controlled file - typically a source code module - enabling any prior version to be reconstructed on demand.
The archive is divided into three sections: an admin header declaring branch structure, access lists, and symbolic tags; a delta tree with one node per revision recording date, author, log message, and branching pointers; and a delta-text section storing the head revision in full and all earlier revisions as compact reverse diffs. Changes between revisions are represented using the same line-oriented diff format familiar from Unix tooling. The entire file is 7-bit ASCII text, readable in any editor.
Conventionally an RCS archive is stored with a ,v suffix inside an RCS/ subdirectory - for example, main.c,v - though the .rcs extension is also used by some implementations. RCS also supports keyword substitution, automatically expanding $Id$, $Author$, $Date$, and $Revision$ tags in checked-out source files.
RCS was created in 1982 by Walter F. Tichy at Purdue University and later incorporated into the GNU Project. It is standardized in POSIX.2 (IEEE 1003.2). While Git, Subversion, and CVS have superseded it for most projects, GNU RCS 5.10.1 (released 2023) confirms continued active maintenance. RCS remains in use in legacy codebases and embedded-system build pipelines where a lightweight per-file changelog is sufficient.
Security & safety
RISK: LOWAn RCS archive is plain ASCII text that can be read in any editor - it contains no executable content. Opening one is completely safe. The only operational caution is that malformed or corrupted RCS files can confuse the co/ci tools; always maintain filesystem backups of RCS archives. Note that the .rcs extension is also used by the completely unrelated Ren'Py save format and Fryrender scene format - confirm the source before choosing a tool.
Format details
in a nutshell- Ren'Py RCS save file - Ren'Py visual-novel engine uses .rcs as a save-game file extension - an unrelated binary format.
- Fryrender / RandomControl scene file - RandomControl's Fryrender (3D rendering) historically used .rcs for scene data - an unrelated binary format.
Programs that open RCS files
Technical details
deep spec| Encoding | Plain text, 7-bit ASCII |
| Typical archive size | Roughly 1-10× the controlled file's size (depends on revision count and delta volume) |
| Archive structure | Three sections - admin header, delta tree (one node per revision), delta-text blocks |
| Delta method | Reverse diffs - head revision stored in full; earlier revisions as add/delete line commands |
| First line token | `head` keyword followed by the latest revision number (e.g., `head 1.5;`) |
| Conventional filename | Controlled filename + ",v" suffix in an RCS/ subdirectory (e.g., foo.c,v) |
| Keyword substitution | $Id$, $Author$, $Date$, $Revision$, $Log$ - mode controlled by the `expand` keyword in the admin section |
| Standard | POSIX.2 (IEEE 1003.2); format defined in the rcsfile(5) man page |
| Integrity | None built-in; relies on filesystem permissions and access controls |
| Operating systems | Linux, macOS, Unix/BSD; Windows via MSYS2, Cygwin, or WSL |
| Released | 1982 (original RCS by Walter F. Tichy, Purdue University); GNU RCS 5.x actively maintained |
| Latest version | GNU RCS 5.10.1 (released 2023) |
| Open standard | Yes · royalty-free |
| Specification | www.gnu.org |
RCS conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about RCS files.