On this page
What ChordPro is
The usual way to write a song with chords is to put the chords on their own line above the lyrics. That looks fine in the file you typed — and falls apart the moment the font changes, the line wraps on a phone, or someone pastes it into an email. The chords drift away from the syllables they belong to.
ChordPro fixes this by putting each chord inside the lyric line, in square brackets, right where it is played. A small set of curly-brace directives carries the title, key, capo and song sections. Because the chords are tied to the words, any app can lay the song out cleanly at any size, transpose it, or print it. The format has been around for decades and is read by many songbook apps, so your files stay useful.
Inline chords
Write the chord in square brackets immediately before the syllable where it changes. That is the whole rule.
[D]Light a lantern [G]on the [D]water,An app reading that line shows each chord above the following syllable:
- Mid-word changes are fine:
a[A]crossputs A above “cross”. - Any chord name works:
[Am7],[Gsus4],[D/F#],[Cadd9]. - Chord-only lines are allowed:
[G] [C] [D] [G]for an intro or instrumental. - Annotations that are not chords start with an asterisk:
[*Riff].
Directives
Directives sit on their own line inside curly braces. Most have a long name and a short form that does the same thing. These are the ones worth knowing — they cover nearly every song sheet.
| Directive | Short form | What it does |
|---|---|---|
{title: …} | {t: …} | Song title |
{subtitle: …} | {st: …} | Subtitle or alternative title |
{artist: …} | — | Performer or songwriter |
{key: …} | — | Key of the chords as written |
{capo: …} | — | Capo fret the written shapes assume |
{tempo: …} | — | Tempo in beats per minute |
{comment: …} | {c: …} | A note printed in the song, such as “Repeat chorus” |
{comment_italic: …} | {ci: …} | The same note, in italics |
{start_of_chorus} … {end_of_chorus} | {soc} … {eoc} | Marks the chorus so apps can highlight or repeat it |
{start_of_verse} … {end_of_verse} | {sov} … {eov} | Marks a verse; an optional label follows the colon |
{start_of_bridge} … {end_of_bridge} | {sob} … {eob} | Marks a bridge |
{start_of_tab} … {end_of_tab} | {sot} … {eot} | Tablature, shown in a fixed-width font and never transposed |
{chorus} | — | Tells the reader to repeat the chorus here |
Lines that start with # are comments for whoever edits the file; apps do not display them.
Sections and notes
Wrap each part of the song in a section. A label after the colon is optional: {start_of_verse: Verse 2}. Choruses are the most useful section to mark — many apps indent or highlight them, and some can repeat them when they see {chorus}.
For performance notes that should be visible (“Slower”, “Last time, a cappella”), use {comment: …}. Keep the notes short; they are printed in the middle of the song.
Tablature belongs between {start_of_tab} and {end_of_tab}. Inside a tab section, apps keep the exact spacing and never treat the letters as chords.
A complete example
Here is a full song file, written for this guide, followed by the way an app renders it.
{title: Lantern on the Water}
{artist: Folk Music Tools (example song)}
{key: D}
{start_of_verse: Verse 1}
[D]Light a lantern [G]on the [D]water,
let it drift a[A]cross the [D]bay.
Every harbour [G]holds a [D]story,
[Bm]every [G]story [A]finds its [D]way.
{end_of_verse}
{start_of_chorus}
[G]Row, my darling, [D]row,
the [G]tide is turning [A]slow,
[D]keep a lantern [G]on the [D]water,
[G]light the [A]way back [D]home.
{end_of_chorus}
{comment: Last time through, sing the chorus twice}Lantern on the Water
Folk Music Tools (example song) · Key of D
Verse 1
Chorus
Converting a chords-over-lyrics sheet
Most songs you find are written with chords above the lyrics. Converting them by hand means moving each chord into the lyric line at the right character — tedious, but mechanical. This is the same verse in the old style:
Intro: D G D A
Verse 1
D G D
Light a lantern on the water,
A D
let it drift across the bay.And this is what our converter produces from it:
{title: Lantern on the Water}
{key: D}
Intro: [D] [G] [D] [A]
{comment: Verse 1}
[D]Light a lantern [G]on the [D]water,
let it drift a[A]cross the [D]bay.
The chords landed on the right syllables, the “Verse 1” label became a comment, and the intro line kept its label with the chords in brackets. The ChordPro editor does this conversion in both directions, and the chord transposer exports ChordPro files directly.
ChordPro or chords above lyrics?
Both formats have a place. Chords above lyrics is what most people learned on, and it reads well as raw text in a monospaced font. ChordPro is what you want the moment the song has to move between screens, apps or people.
| Situation | Chords above lyrics | ChordPro |
|---|---|---|
| Reading the raw file | Easy, if the font is monospaced | Readable once you are used to brackets |
| Phone or narrow screen | Chords drift when lines wrap | Apps re-wrap and keep chords on their syllables |
| Email, chat, word processor | Spacing often breaks | Survives any font |
| Transposing and printing | Works, but needs careful alignment | Built for it, with title, key and capo |
A good habit is to keep your master copy in ChordPro and print or share chords-above-lyrics versions from it. Converting in that direction is lossless; the reverse depends on how carefully the original was aligned.
Tips for clean files
- Always add a title and a key. Tools use
{key}to spell transposed chords correctly. - State the capo. If the chords are shapes for a capo, add
{capo: 3}so readers know the song sounds higher than written. - One chord per bracket. Write
[G][C], not[G C]. - Place chords where they change, not where it looks tidy. If a chord falls between words, put it before the next word.
- Use sections instead of typed labels. A chorus section can be styled and repeated; a line that just says “CHORUS” cannot.
- Save as UTF-8 plain text with a
.choextension. - Respect copyright. Your own songs and traditional public-domain songs are fine to share; the lyrics of most recorded songs are not.
Apps that read ChordPro
Many songbook and chord-sheet apps import ChordPro — OnSong and SongbookPro are two widely used examples — and the open-source ChordPro reference program from chordpro.org turns .cho files into printable PDFs. Support for newer directives varies between apps, so the core directives in the table above are the safest choice if you share files with other musicians.
Frequently asked questions
What file extension should a ChordPro file use?
Use .cho or .chordpro. You will also see .crd, .chopro and .pro. The content is always plain text — save it as UTF-8 so accented lyrics survive.
Can I put a chord in the middle of a word?
Yes. Put the bracket right before the syllable where the chord changes, for example a[A]cross. Apps place the chord above that syllable and keep the word together.
Does transposing a ChordPro file change the directives?
Transposing changes only the chords in square brackets. Metadata like the title stays as it is; a good tool updates the {key} line to the new key when it exports.
What if a bracket is not a chord, like [Chorus]?
Text in brackets that is not a valid chord is not transposed. For notes in the chord row, ChordPro uses annotations that start with an asterisk, such as [*Riff]. For section names, use a section directive or {comment: Chorus}.