Hall was born in Maryland, the son of Captain William Hall, a farmer and veteran of the Revolutionary War. Hall showed a talent for music at a young age and was sent to Philadelphia to study under Alexander Reinagle. He later joined the United States Army as a musician and served in the War of 1812.
During the war, Hall was stationed at Fort McHenry in Baltimore, Maryland. On September 13, 1814, British forces attacked the fort, and Hall was inspired by the sight of the American flag still flying over the fort to write the words to "The Star-Spangled Banner". The poem was later set to music by John Stafford Smith and became the national anthem of the United States.
After the war, Hall continued to serve in the Army until 1826. He then retired to Chester, Pennsylvania, where he died in 1829 at the age of 56.