What is ChordPro ?
Last updated by George, 2023-11-23
In a Nutshell
ChordPro is a standard plain text format to describe lead sheets for songs. Other Software may use this format to pretty print or dislpay lead sheets from it. ChordPro is widely used and an ideal format to share your songs with others.
Lead Sheets / Chord Sheets
It is a very common habit of musicians (mostly guitarists) to use musical sheets just showing the lyrics of a song and the chords to play along with them above it, so-called "Lead Sheets" or "Chord Sheets".
Here is an example:
The Challenge
In order to create such a Lead Sheet in different output formats, e.g. HTML, a text-based format was needed that any software could use to render it properly.
The ChordPro Format
In 1992 Martin Leclerc and Mario Dorion developed a plain text file format to write lead sheets, songs with lyrics and chords, and a tool to create neatly printed lead sheets. The tool was called
chord
, and the text files were calledchord
files. It soon became a popular way to write lead sheets and many users and tools adopted this format for similar purposes. For still unknown reasons people started calling the files "chordpro" files or "chopro" files.Since the ChordPro format is a simple text file format, any text editor or word processor can be used to create and maintain them. The text files can have arbitrary extensions. Common filename extensions for ChordPro files are
.cho
,.crd
,.chopro
,.chord
,.pro
and.chordpro
.ChordPro Site
Here is an example from the ChordPro site:
# A simple ChordPro song. {title: Swing Low Sweet Chariot} {start_of_chorus} Swing [D]low, sweet [G]chari[D]ot, Comin’ for to carry me [A7]home. Swing [D7]low, sweet [G]chari[D]ot, Comin’ for to [A7]carry me [D]home. {end_of_chorus} I [D]looked over Jordan, and [G]what did I [D]see, Comin’ for to carry me [A7]home. A [D]band of angels [G]comin’ after [D]me, Comin’ for to [A7]carry me [D]home. {comment: Chorus}
The Chords
You can easily spot the chords in this example. They are wrapped in square brackets, e.g. [D]
and placed in front of the syllable or vocal where they need to be played.
A rendering software needs to extract these chords, remove the brackets, put the lyrics back together and place the chords above the right spot in the text. Like his:
D G D Swing low, sweet chariot, A7 Comin’ for to carry me home. D G D Swing low, sweet chariot, A7 D Comin’ for to carry me home.
The Directives
Curly brackets, {
and }
, are used for directives. Directives contain meta information of the song itself or identify certain sections of the song text.
# A simple ChordPro song. {title: Swing Low Sweet Chariot} {start_of_chorus} Swing [D]low, sweet [G]chari[D]ot, Comin’ for to carry me [A7]home. Swing [D7]low, sweet [G]chari[D]ot, Comin’ for to [A7]carry me [D]home. {end_of_chorus} I [D]looked over Jordan, and [G]what did I [D]see, Comin’ for to carry me [A7]home. A [D]band of angels [G]comin’ after [D]me, Comin’ for to [A7]carry me [D]home. {comment: Chorus}
A rendering software could use the title directive, {title: Swing Low Sweet Chariot}
, to print out the title in a bold and larger font.
The chorus part of the song text is identified by the {start_of_chorus}
and {end_of_chorus}
directives. That allows the output of it to have a custom styling, e.g. indented with a vertical line in front.
Comments, like {comment: Chorus}
, are also identifiable by the directive and can have another different styling.
The Output
Taking all of the above into account, here is an example of how the above ChordPro text could be rendered: