DistroKid Lyrics Validator

Live reproduction of the client-side lyric-format rules from lyrics-upload.js
Checking source…
Empty
Lyrics
0 lines · 0 chars
Original validation code
Matching rule blocks highlight live
first DistroKid failure other matching failures

    

What this DistroKid lyrics checker does

DistroKid runs a set of format checks in your browser before lyrics are accepted for a release. The checks fire one at a time and stop at the first failure, so a submission that breaks four rules only ever shows you one error message — fix it, resubmit, hit the next one.

This page runs the same rules against whatever you paste, all at once. Every failing rule is listed, the offending characters are highlighted in your lyrics, and the matching block of the original validation function is highlighted on the right. The rule DistroKid itself would report first is marked in amber.

Nothing is uploaded. The checks run entirely in your browser, and this page is not affiliated with DistroKid.

Where these rules come from

The rules are read from DistroKid's own client-side script, lyrics-upload.js, specifically its lyricsPassValidation function.

That file can change without notice. The header pill shows the date on which the rules here were last confirmed identical to the live file, character for character once indentation and blank lines are ignored.

The page also attempts a live re-check on load. When that succeeds, the pill upgrades to Matches live source, or to Upstream changed with a warning banner and the option to view the current upstream function.

The live re-check usually cannot complete. distrokid.com serves the script without a cross-origin header, so browsers refuse to fetch it directly, and the server-side proxy that would work around that is refused with a 403 as well. When the re-check fails the page says nothing and the verified-on date stands.

The DistroKid lyric format rules

Blank lines between verses

Ten or more newline-terminated lines with not a single blank line among them is treated as verses that have not been separated. Put an empty line between each verse.

Lines starting with a lowercase letter

More than five lines beginning with a lowercase letter is rejected. Note the counter only recognises lowercase ASCII, so accented and non-Latin openings are not counted.

Copyright symbol

A single © anywhere in the text fails. Writer credits, artist names and label lines are all out — only audible lyrics belong in the field.

Section markers

Dashes and backslashes

Three consecutive dashes (---), often pasted in as a section divider, are rejected. So is any backslash character.

Capitalisation ratio

Every cased character is counted. Lyrics fail if they are entirely uppercase, entirely lowercase, or if uppercase divided by lowercase exceeds 0.2. Ordinary sentence capitalisation sits far below that; shouted ad-libs and heavy title casing are what usually push a submission over.

Frequently asked questions

Why does DistroKid say each line must begin with a capital letter?

The check counts lines that start with a lowercase letter and rejects the submission above five. Capitalising the first character of each line clears it.

Why are my lyrics rejected for uppercase letters?

Either every cased letter is uppercase, every cased letter is lowercase, or the ratio of uppercase to lowercase is above 0.2. Standard capitalisation with no shouted sections passes.

Can I include (Chorus), Verse 1 or Bridge: in my lyrics?

No. None of them is an audible lyric, so all three are blocked — though a single Verse 1 marker is tolerated where a second is not.

What does the line breaks between verses error mean?

Your lyrics run to ten or more lines without a single blank line. Add an empty line between verses.

Do these rules mean my lyrics will definitely be accepted?

No. These are the client-side format checks only. DistroKid also applies server-side and human review, which cover things like accuracy, explicit-content flags and rights, none of which a format checker can see.