Trello gives each card a `pos` attribute, which is simply a double (64-bit float).  When the first card in a list is created, it is given a `pos` of 16384.  When a card is added to the end of a list it is given &lt;pos of last card&gt; + 16384.  If added to the beginning, it is given &lt;pos of first card&gt; &#x2F; 2.  If inserted between two cards, it is simply the average of the two neighbors.<p>Finally, if two cards end up with values too close together (just some magic number - .0001 apart or something) then those cards and some nearby are all re-numbered.<p>This means that most of the time you only have to update a single card.  In degenerate movement cases, you might update up to an entire list, but that can only happen every so many moves (~20 or so, but depends on exact values) even in the worst case.