On Stack Exchange we can upvote comments, answers, and questions.
Is it correct to say that
- I put an upvote on a question.
- There are four upvotes for this answer.
madecast an upvote on your post.
Which is the correct preposition?
You ask, “Which is the correct preposition?” regarding three examples that use upvote on and upvote for. The examples are grammatically correct and semantically sound. But more-natural sentences result from slight rewordings, or as suggested in a previous answer, from using upvote as a verb:
In comments, the latter usually is abbreviated to “+1”.
This is an interesting question as 'upvote' isn't a real word (i.e. not in the dictionary yet). So there isn't really an established grammar for whether votes are applied on, to or for posts.
The other answers are correct that using 'upvote' as a verb sounds better, and is more concise. But if you wanted to use upvote as a noun, you can use to/for/on as the preposition - however the verb in the sentence makes a difference too.
"Put an upvote on a question" isn't very natural, but "cast an upvote on a question" is. "For" would probably work better in place of "on" there.
"Give" would also be an appropriate verb when used with "to", i.e. "I gave an upvote to this answer", or more naturally, "I gave this answer an upvote".
"There are 4 upvotes for this answer" is perfectly valid. "On" in place of "for" is equally valid.
Either can be correct, but with a slight difference of emphasis.
"On this particular post there are three upvotes and two comments" is of interest to the moderators, indicating a level of activity; the emphasis is on the post as such. "I put an upvote on your answer" would imply, to me, that the vote was less to do with the quality of the answer than some external factor, such as your deserving a higher reputation.
"There are three upvotes and one dowvote for this answer" indicates that the answer is mildly approved of; the emphasis is on the opinion expressed. "I cast [not made, incidentally] an upvote for your answer" would have a tacit "because I agree with you and think it is a clear explanation".
I would turn upvote into a verb: