This calculator takes in a batch of Approval Voting ballots in form of a CSV file and calculates the winning candidates according to the Multiplicative sequential proportional approval voting method, as described in this draft paper by Pereira et al. from 2016 (warning: lots and lots of math ahead). It is a voting method that allows for proportional parliaments, but without the need for political parties. Candidates are still free to form parties, of course, but their existence or non-existence has no influence on how election winners are determined.
Essentially, in each round the candidate with the highest approval is elected. Afterwards, all ballots that approved of this candidate are weighted and have their vote strength reduced to account for having one of their favourite candidates elected. This is done to ensure the final parliament proportionally reflects the will of the voters. This process of electing and reweighting continues until all seats are filled up.
MSPAV is not a perfect system, but it's easy enough to describe and not difficult to calculate. All in all, I think it's pretty neat.
Note that in this implementation, ties are broken by electing whichever candidate is listed first in the ballot. I'm sure there is a better way of handling this, but with a big enough number of voters ties should be very unlikely.
For an example ballot file, click here.
Number of seats in parliament: