Read, write, parse, validate, transpose, and render song chord charts in the song2html format — a plain-text notation for chord charts with lyrics, Nashville numbers, and arrangements.
Create, edit, and convert song chord charts using the song2html plain-text format.
Song Title [Key]
author: Songwriter Name
tempo: 120
time: 4/4
verse: G C D G
chorus: C D Em G
Sections:
Verse 1:
^Lyrics with ^caret markers for ^chord ^placement
Chorus:
^Chorus ^lyrics ^with ^chords
Arrangements:
Full:
Verse 1
Chorus
[G], [F#m], [Bb]author:, key:, tempo:, time:section-name: chord1 chord2 ...Sections: followed by named sections with 4-space indented lyrics^: marks where the next chord is placed above lyrics1–7 auto-transpose based on keyC/G (bass), F\A (treble)(G C) x2 expands to G C G C<transpose +2> shifts Nashville numbersTo convert a standard chords-over-lyrics text file into song2html format, see the convert-chord-chart skill for a detailed step-by-step guide covering all common input formats (chords above lyrics, inline brackets, Nashville numbers, tab sites).
Quick conversion summary:
Song Title [Key]author:, tempo:, time:section: chord1 chord2 ...^ carets at each syllable where a chord change occurs in the lyricsSections: with 2-space section headers and 4-space indented lyricsArrangements: for song structure| Tool | Purpose |
|---|---|
song2html:parse_song | Parse source text → metadata, HTML, arrangements, errata |
song2html:validate_song | Check source text for errors without full rendering |
song2html:create_song | Build source text from structured input (title, chords, sections) |
song2html:read_song_file | Read a song file from disk and parse it |
song2html:write_song_file | Write source text to a file (validates first) |
song2html:list_song_files | Scan a directory for song files and summarize each |
song2html:transpose_song | Transpose named chords by N half steps |
song2html:render_html | Generate a standalone HTML page with embedded styles |