ChordPro File Format

The ChordPro file format is a simple markup for lyrics. With it one can specify the chords for a song. Chords are specified within square brackets within the lyrics. There are also "directives" which are of the form {name: value}. Comments start with a #. Various programs can manipulate songs in this format for printing, transposition, etc. The format was invented for the Unix program named "Chord".

Here are some references that define the format for some software:

A reading of the above will show that there is variation beyond the most basic. We use Songsheet Ganerator by Ten by Ten Software to generate PDF from the chopro files. Here is their ChoPro Format Reference. Songsheet Generator uses the "key" directive which an extension.

We also use our own chopro2html.py program to generate HTML from chopro files. We recognize the following directives (along with their usual abbreviations):

{title: value}
Title of the song.
{subtitle: value}
The subtitle usually contains the writer or performer.
{key: value}
This is required to get the transposing buttons.
{start_of_chorus}
This will indent the chorus.
{start_of_bridge}
This will indent the bridge.
{start_of_tab}
This will leave tabulature as is and in a fixed width (monospaced) font.
{comment: value}
Comments are displayed in italics.
# hidden commentary
Although not a directive, lines starting with a hash will be hidden.

Conventions

There are many songs in ChordPro format out on the web. A favorite source is Chordie.com. However, much of it is imperfect. We would like songs in this library to follow some conventions:

  1. All chords should start with an upper case letter. Minor chords should not be a lower case letter, but instead an upper case letter followed by a lower case m.
  2. Although our software can use unicode sharp and flat symbols much other software cannot. So we use the ASCII # for sharps and b for flats. You can use utf82ascii.py to help convert files in UTF-8 encoding.
  3. Chords should immediately precede the first syllable over which they are played (no space). When that is not the first syllable in a word precede the chord with a hyphen. e.g. [C7]And all I got to do is act natural-[F]ly.
  4. Like in poetry, each line should start with a capital letter and end with a punctuation mark.
  5. Each song should start with title, subtitle, and key directives.
  6. There should not be any blank lines between a comment and the next stanza.
  7. Comments on a chorus or bridge should directly follow the start of chorus (or bridge) directive and directly precede the first line of the stanza.
  8. Chorus should be bracketed with {start_of_chorus} or {soc} and {end_of_chorus} or {eoc}.
  9. Bridge should be bracketed with {start_of_bridge} or {sob} and {end_of_bridge} or {eob}.

Editing

Remember that ChordPro files are plain text files. So if you are using a work processor, save the files as plain text before sending them here. Below are some things specialized to handle ChordPro format.

If you come across a file in plain (ASCII) text with chords over lyrics like Polly Wolly Doodle you can use txt2chopro.py to get a start on converting it to chopro.

iPad