The song addresses a former lover of Swift who has cheated on her, telling him that he "should've said no" to the woman who has taken her place in his life ("You should've said no/You should've gone home/You should've thought twice before you let it all go/You should've known that word 'bout what you did with her would get back to me"). Swift wrote the song when she was sixteen years old. According to Country Weekly magazine, she was inspired to write it after she discovered that her boyfriend at the time had cheated on her. In several interviews, Swift disclosed that this boyfriend's name was "Sam", which she did not put in the song, but said in every interview. The first line that came to her was the title, and she wrote the chorus in five minutes. Swift has also said that many of the lyrics were based on actual words that she used when confronting her ex-boyfriend.
Roger Holland of PopMatters said that "Should've Said No" is "a truly splendid pop-rock song wrapped up in an almost entirely spurious country arrangement." Chris Neal of Country Weekly believed "Should've Said No" and her previous single "Picture to Burn", were the most immediately striking songs on Taylor Swift. Alison Bonaguro of the Chicago Tribune named the song along with "Teardrops on My Guitar" and "Invisible" as "revenge songs," and commented that Swift's themes stayed the same throughout the concert. Country music blog Engine 145 gave the song a "thumbs down" review. Reviewer Matt C. criticized the production as being "too loud", and thought that Swift's vocals were overly reliant on pitch correction and "not amenable" to the song's concept.