Williams, 27, has not played since suffering head and neck injuries on an illegal crackback block by Miami Dolphins wide receiver Jarvis Landry during a game on Oct. 23, 2016. Landry was fined $24,309 for the hit.
In his letter, Williams reiterated that he felt Landry's hit was unnecessary but that he has "no ill will" toward Landry, who later apologized.
Williams previously suffered a neck injury early in the 2015 season that eventually ended his season and required surgery. He returned for 2016 training camp but suffered a concussion when he collided with then-teammate Dezmin Lewis in practice.
"They all told me that because of my history of concussions and neck issues, their doctors wouldn't clear me to play," Williams wrote Wednesday.
Williams added he planned on retiring had he not signed with a team before the end of 2017.
A second-round pick of the Bills in 2011, Williams began his career as a cornerback before converting to safety in 2013. He played in 59 games over six seasons for Buffalo, making 52 starts.