Guide

The ChordPro Format

ChordPro is plain text with chords in square brackets. It is easy to type, survives copy and paste, and lets apps transpose, restyle and print your songs. Here is everything you need to write clean ChordPro files.

7 min readFor guitar & ukulele players
On this page
  1. What ChordPro is
  2. Inline chords
  3. Directives
  4. Sections and notes
  5. A complete example
  6. Converting a chord sheet
  7. Which format to use
  8. Tips for clean files
  9. Apps that read ChordPro

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:

DLight a lantern Gon the Dwater,
  • Mid-word changes are fine: a[A]cross puts 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.

DirectiveShort formWhat 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

DLight a lantern Gon the Dwater,
let it drift aAcross the Dbay.
Every harbour Gholds a Dstory,
Bmevery Gstory Afinds its Dway.

Chorus

GRow, my darling, Drow,
the Gtide is turning Aslow,
Dkeep a lantern Gon the Dwater,
Glight the Away back Dhome.
Last time through, sing the chorus twice

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.

SituationChords above lyricsChordPro
Reading the raw fileEasy, if the font is monospacedReadable once you are used to brackets
Phone or narrow screenChords drift when lines wrapApps re-wrap and keep chords on their syllables
Email, chat, word processorSpacing often breaksSurvives any font
Transposing and printingWorks, but needs careful alignmentBuilt 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 .cho extension.
  • 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}.