ToolJovia
Music & audio

Chorded Lyrics Print Builder

Turn your own supported ChordPro text into a complete local song sheet, with chords above lyrics and exact original-source JSON evidence.

✓ Browser-local processing
Start with {title: Your title}. Put a literal label such as [Am] before its syllable. The supported directive and size profile below is deliberately smaller than full ChordPro.
A selected file takes precedence over pasted text. Its original BOM and line endings are retained in JSON; the filename is excluded.

Loading tool…

How to use Chorded Lyrics Print Builder

Prepare a readable sheet for an original song or other material you are entitled to reproduce. Place bracketed chord labels before the lyric syllable they accompany, mark a verse or chorus, then download an inert HTML document. The evidence retains every source line and chord position. Nothing is fetched, played or uploaded.

  1. Write or import your own supported source. Supply one title before the body; optional verse and chorus sections must be paired and cannot nest.
  2. Run the builder. Review source-mapped chord and lyric cells in the complete JSON evidence, including any source-only comments and original line endings.
  3. Download the HTML, open it deliberately and review the whole sheet. Use your browser’s Print / Save as PDF with the selected paper, checking fonts, line wrapping and all pages. Download JSON separately if you need the exact source evidence.

Good to know

  • This is a selected ChordPro authoring profile, not the full ChordPro reference implementation. It does not validate musical names, transpose, generate chord diagrams, play audio, fetch songs or resources, interpret Pango/HTML/ABC/Lilypond/SVG, expand macros or certify compatibility. All examples are original demonstrations.
  • Supported lowercase directives are title/t, subtitle/st, artist, composer, lyricist, copyright, comment/c, paired start_of_verse/sov with end_of_verse/eov, and paired start_of_chorus/soc with end_of_chorus/eoc. Arguments use a colon with at most one optional separating ASCII space; any further spaces are literal. Arguments cannot contain braces or backslashes. Title is required once before the body. Each optional metadata name occurs at most once before the body. Section labels are optional; closing directives have no arguments. Attribute forms, whitespace-only separators, nested sections and all other directives, including x_ extensions and chorus replay, refuse the whole run.
  • Column-zero # lines are source-only comments. Metadata is collected into the printed header; physical empty lines become spacers after it. Printed comment arguments are literal text, without chord expansion. Bracket labels are nonblank and at most 24 UTF-16 units; malformed or nested brackets, asterisk annotations, lyric braces and backslash escapes are unsupported. Chord-only cells, consecutive labels and a final label retain their positions, including empty lyric cells.
  • The sheet has a fixed left-to-right, one-column layout with 10 pt system monospace text. Wrapping occurs between ASCII-space-delimited words, keeping within-word chord positions together. Each unbroken word and its cells has a conservative 48-column layout limit: ASCII scalars count 1 and other scalars 2; each cell uses the larger label or lyric count. Unicode source is retained without normalization, but bidirectional shaping, font coverage and identical physical printing across browsers are not certified.
  • Limits: 20,000 UTF-16 source units, 80,000 UTF-8 source bytes, 200 physical lines including a terminal empty line, 240 units per line, 1,000 labels, 2,000 layout cells and 20 explicit sections. Metadata and section labels have at most 120 units; copyright and printed comments at most 200. LF, CRLF and bare CR delimiters are preserved. Tabs, other C0/C1 controls, bidi controls, Unicode line/paragraph separators, isolated surrogates and interior BOMs are refused. One initial BOM is retained in evidence.
  • A real selected file is read locally with a 5 second deadline and pagehide cancellation, takes precedence even when invalid, and must be complete, nonempty UTF-8. No filename enters the report. Pasted text is retained exactly as received by Tool.run; a browser textarea may already have normalized its line endings. The complete HTML and JSON jointly must fit 1,000,000 UTF-16 units and UTF-8 bytes before either download returns.
  • The HTML is a scriptless standalone document using fixed styles and a restrictive document CSP. User text becomes escaped text only; there are no external URLs, fonts, images, automatic print calls, popup windows, network requests or persistent storage. PDF output depends on the user’s browser Print / Save as PDF, not a native PDF encoder. Inspect the downloaded document and every printed page before use or sharing; JSON includes private original lyrics and comments and is not anonymous.

Common questions

Can I paste an ordinary chord-only chart?

This task produces a song sheet from supported bracketed labels and lyric source. For transposing a chord-only progression, use the related Chord Chart Transposer. This builder deliberately leaves the supplied musical labels unchanged.

Why did an existing ChordPro file get refused?

The authoring subset is intentionally closed. Features such as chord definitions, layout attributes, transposition, replay directives, escape sequences and embedded resources need different semantics. Unsupported input is refused together rather than silently dropped or executed.

Does the downloaded HTML include my source comments?

Lines beginning with # are not printed. The complete original source and those comments remain in the JSON evidence. Metadata is collected into the header and every chord occurrence keeps its source position; no duplicate line or label is removed.

Does Run create a PDF or publish my song?

No. Run returns local HTML and source evidence. You choose whether to open, print, save, share or publish the downloaded document, and you must have the right to reproduce its contents.

Keep going with related tools

All music & audio →