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 called chord 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:

Swing Low Sweet Chariot

 
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.
 
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.
Chorus