ChordPro

The ChordPro (also known as Chord) format is a text-based markup language for representing chord charts by describing the position of chords in relation to the song's lyrics. ChordPro also provides markup to denote song sections (e.g., verse, chorus, bridge), song metadata (e.g., title, tempo, key), and generic annotations (i.e., notes to the musician).

Although a human-readable format, ChordPro files are intended to be input to software that prepares a formatted chord sheet for screen display or printing. Other features available in supporting software include generation of chord diagrams, ability to transpose to different keys, and conversion between different note naming systems, such as Nashville.

File extensions used for ChordPro files include .crd, .chopro, .pro, .chordpro  or .cho.

The current version of the format is v6.



Format Overview
In its simplest form, ChordPro is used to describe the relationship of chords to lyrics (i.e., where they belong in the song), song sections, and song metadata (i.e., information about the song). All ChordPro markup is optional; yet some elements are less optional than others if the objective is a useful and nicely formatted chord chart.

Chord Placement
Chord names are placed in square brackets immediately before the syllable of the lyric to which it is associated. For example,

In the formatted output, the chord names will be placed on top of the lyric line, as presented below:

Song Sections
Song sections, also called environments in the ChordPro specification, are denoted by a matching pair of markup directives (start_of_sectionName, end_of_sectionName) around the lines comprising the section. A section may consist of lyrics for part of a song, such as a chorus or verse or, depending on the processing tool, be something else, such as ASCII guitar TAB notation.

The name of three section types are reserved in the specification: chorus, tab, and grid (i.e., start_of_chorus, start_of_tab, start_of_grid).

A section may have any name that consists of letters, digits, or underscore. The section directive may contain an optional label value that identifies the section. For example, {start_of_verse Verse 1}

An example of a marked section is:

Song Metadata
Song metadata consists of information about the song and is denoted by specifying a name and value after the meta keyword all inside curly braces. {meta: name value} The use of a single lowercase word, like artist and composer, is suggested for a name, yet there is no constraint on what is considered valid.

For convenience and backward compatibility with earlier ChordPro versions, the following metadata names are considered standard. These can be defined using the meta directive or entered as standalone directives: title, sorttitle, subtitle, artist, composer, lyricist, arranger, copyright, album, year, key, time, tempo, duration and capo. Multiple values can be set by using multiple metadata directives. In the example below, which is based on, that the short form is used for all but the copyright meta values. Note also that multiple values are provided for copyright to distinguish the copyright status of the music and words separately.

Example
An example of a portion of a song in ChordPro format is presented below. Note the chorus section is labeled as a Refrain. Note that chords may appear in the middle or a word when the chord changes at one of its syllables (e.g., ). Finally, note a comment was used as a note to repeat the refrain after the first verse.

History
In June 1991 Martin Leclerc and Mario Dorion conceived of a simple, text-based syntax for marking up chords and lyrics and developed the Chord program. Although the program and file format saw some adoption there was no active development of either for several years. In 2007 Johan Vromans and Adam Monsen revived the project under a new name, Chordii, and updated the ChordPro format to version 4. In 2015 Johan Vromans started a major modernization effort to implement features such as Unicode support and native PDF generation and renamed the program to ChordPro. This release is still in active development and supports ChordPro format version 6.