How polls.tools works
Each poll lives on our server for 90 days. A vote adds one to the count of that exact ballot, and the record that someone voted is kept apart, as salted one-way hashes. Your network address itself is never written down.
What is stored, and for how long
| What | Stored as | Kept for |
|---|---|---|
| The poll | Question, options and settings | 90 days, or until the creator deletes it |
| Your ballot | One more in the count of that exact ballot, with no link to you | As long as the poll |
| That you voted | Two one-way hashes, salted with the poll’s own random salt | As long as the poll |
| Your network address | Never stored: only its salted hash, above, and a hashed counter for rate limits | Counters: up to one day |
| Voter cookie | A random id and its signature, in your browser | 90 days |
| Creator key | In the creator’s browser only; the server keeps a hash | Until the browser storage is cleared |
Limits that keep the service fair and free: 10 new polls an hour and 40 a day from one network address, 25 votes an hour from one address in the same poll, and 120 votes in ten minutes from one address across all polls. A poll has 2 to 20 options (10 for ranked choice) and takes up to 5,000 votes.
What happens when I vote?
Your browser sends your choices to our server. The server checks that the poll is still open, that the choices are valid for this poll and that this browser (or network, in the strict mode) has not voted yet. It then stores two things in one step: a line saying “a vote was cast”, made of two one-way hashes, and one more count for your exact ballot. If either part fails, neither is saved, so a vote is never half counted.
How are duplicate votes stopped without a CAPTCHA?
In the default mode, the first vote from a browser sets a cookie holding a random id and a signature only our server can make. Voting again from that browser is refused. Someone who clears cookies gets a new id, so a second layer counts votes per network address in each poll and refuses more than 25 an hour from one address, and a third refuses more than 120 votes in ten minutes from one address across all polls. In the strict mode, the network address itself is the voter: one vote per address.
Can anyone see how I voted?
No. The list of who voted holds only hashes made with a random salt that belongs to that poll, and your ballot is added to a count with no link to that list. Your network address is never written down; only its salted hash is. Each poll has its own salt, so the same address gives a different hash in every poll, and nothing stored links your ballot to you.
How do the live results and the deadline work?
An open results page asks the server for new numbers every 20 seconds, only while the tab is visible, and pauses after ten minutes without a click so a forgotten tab does not keep asking. When the deadline arrives the page closes the poll on screen at once, and the server refuses any later vote. Results set to appear after closing become visible to everyone at that moment.
Questions about how it works
What are the limits of a poll?
A question of up to 200 characters, 2 to 20 options of up to 100 characters each (10 for ranked choice), up to 5,000 votes, and 90 days online.
Why might a vote be refused?
The poll is closed or expired, this browser or network already voted, or many votes came from the same network address in a short time. The message on the page says which.
Does the strict mode work in an office or a school?
Usually not well: everyone behind the same router shares one network address, so only the first person can vote. Use the default mode there.
Is the cookie used for tracking?
No. It holds a random id and its signature, only to stop a second vote from the same browser. It is not used to track you or to show ads.
Can I trust the results for an election?
No. Without accounts, a determined person can vote again from other devices or networks. Use polls.tools for quick group decisions, not for binding votes.