ChordPro Scroller

Paste or drag-drop a ChordPro (.cho) file — chord symbols appear above lyrics and the page auto-scrolls at your exact BPM. Tap-tempo override and full-screen display included. Everything runs in your browser; nothing is uploaded.

▶ Drop a .cho or .txt file here, or click to browse
— BPM Ready
— BPM

How it works

ChordPro is a plain-text format widely used by musicians: chords are written inline as [G] or [Cadd9] immediately before the syllable they fall on. This scroller parses that format and renders each chord directly above its lyric word — exactly like a lead sheet.

BPM-locked scrolling works by computing the pixel-per-second scroll speed from your BPM and the lines-per-beat setting:

scroll speed (px/s) = line height (px) × lines-per-beat × BPM ÷ 60

A lines-per-beat value of 0.5 means one lyric line advances every 2 beats — typical for ballads. Set it to 1 for one line per beat (faster songs), or lower for very slow passages.

Tap tempo averages the interval of your last 4 taps to derive BPM automatically. Full-screen mode removes all chrome and lets the song fill your display — ideal for performance or teaching.

Frequently asked questions

What is ChordPro format?
ChordPro (.cho) is an open plain-text standard for song sheets. Chords are embedded inline: [Am]Walking [F]down the [C]road. Structural directives like {start_of_chorus}, {title:}, and {comment:} add sections and metadata. Thousands of songs are freely available in ChordPro format from sites like Chordify, Ultimate Guitar exports, and dedicated ChordPro libraries. This scroller supports the most common subset of the spec.
How do I find the right lines-per-beat setting?
Start with 0.5 (one line every two beats) for most 4/4 songs at moderate tempo — this corresponds to one line per half-bar, a natural feel for verse-chorus songs. If the lyrics are dense and fast, try 1 or higher. If you have long, slow phrases, try 0.25. You can also start playback and nudge the value while the song scrolls until it feels locked to the music.
How does tap tempo work?
Click or tap the Tap button in time with the beat — at least two taps, ideally four or more. The scroller averages the intervals between consecutive taps to compute BPM and writes it to the BPM field immediately. Tap again at any time to re-calibrate. If you tap while scrolling is active, the new BPM takes effect on the next animation frame.
Does this upload my song file anywhere?
No. All parsing and rendering happens entirely in your browser using JavaScript. No file or text is ever sent to a server. You can use this tool completely offline once the page has loaded.
What ChordPro directives are supported?
Title ({title:}), subtitle ({subtitle:}), comment / comment-italic ({comment:}, {c:}), start/end of verse, chorus, bridge, tab, and grid sections ({start_of_verse} etc). Chord inline notation [Chord], blank lines for spacing, and lines with no directives are treated as plain lyrics. Unsupported directives (like {define:}) are silently skipped.